|
24 | 24 | import it.unibo.alchemist.model.TimeDistribution; |
25 | 25 | import it.unibo.alchemist.model.observation.Disposable; |
26 | 26 | import it.unibo.alchemist.model.observation.EventObservable; |
| 27 | +import it.unibo.alchemist.model.observation.MutableObservable; |
| 28 | +import it.unibo.alchemist.model.observation.Observable; |
| 29 | +import it.unibo.alchemist.model.observation.ObservableExtensions; |
| 30 | +import it.unibo.alchemist.model.observation.ObservableMutableSet; |
27 | 31 | import it.unibo.alchemist.model.observation.lifecycle.Lifecycle; |
28 | 32 | import it.unibo.alchemist.model.observation.lifecycle.LifecycleOwner; |
29 | 33 | import it.unibo.alchemist.model.observation.lifecycle.LifecycleOwnerKt; |
30 | 34 | import it.unibo.alchemist.model.observation.lifecycle.LifecycleRegistry; |
31 | 35 | import it.unibo.alchemist.model.observation.lifecycle.LifecycleState; |
32 | | -import it.unibo.alchemist.model.observation.MutableObservable; |
33 | | -import it.unibo.alchemist.model.observation.Observable; |
34 | | -import it.unibo.alchemist.model.observation.ObservableExtensions; |
35 | 36 | import kotlin.Unit; |
36 | 37 | import org.danilopianini.util.ArrayListSet; |
37 | 38 | import org.danilopianini.util.Hashes; |
|
49 | 50 | import java.util.List; |
50 | 51 | import java.util.Objects; |
51 | 52 | import java.util.function.Supplier; |
| 53 | +import java.util.stream.Collectors; |
52 | 54 | import java.util.stream.Stream; |
53 | 55 |
|
54 | 56 | import static arrow.core.OptionKt.getOrElse; |
@@ -362,15 +364,18 @@ protected final void initializeObservableConditions() { |
362 | 364 | subscriptions.clear(); |
363 | 365 | validity.dispose(); |
364 | 366 |
|
365 | | - conditions.forEach(condition -> { |
366 | | - final var merged = ObservableExtensions.ObservableSetExtensions.mergeObservables( |
367 | | - condition.observeInboundDependencies() |
368 | | - ); |
369 | | - subscriptions.add(LifecycleOwnerKt.bindTo(merged, this, it -> { |
370 | | - rescheduleRequest.emit(); |
371 | | - return Unit.INSTANCE; |
372 | | - })); |
373 | | - }); |
| 367 | + final var allDependencies = conditions.stream() |
| 368 | + .flatMap(it -> it.observeInboundDependencies().toSet().stream()) |
| 369 | + .collect(Collectors.toSet()); |
| 370 | + |
| 371 | + final Observable<?> merged = ObservableExtensions.ObservableSetExtensions.mergeObservables( |
| 372 | + ObservableMutableSet.Companion.toObservableSet(allDependencies) |
| 373 | + ); |
| 374 | + |
| 375 | + subscriptions.add(LifecycleOwnerKt.bindTo(merged, this, it -> { |
| 376 | + rescheduleRequest.emit(); |
| 377 | + return Unit.INSTANCE; |
| 378 | + })); |
374 | 379 |
|
375 | 380 | if (!conditions.isEmpty()) { |
376 | 381 | validity = ObservableExtensions.INSTANCE.combineLatest( |
@@ -406,7 +411,7 @@ protected final void setOutputContext(final Context c) { |
406 | 411 |
|
407 | 412 | /** |
408 | 413 | * @return the default implementation returns a String in the form |
409 | | - * className@timeScheduled[Conditions]-rate->[Actions] |
| 414 | + * className@timeScheduled[Conditions]-rate->[Actions] |
410 | 415 | */ |
411 | 416 | @Override |
412 | 417 | public String toString() { |
|
0 commit comments