9
9
import monitor .statistics .Statistics ;
10
10
11
11
import java .util .List ;
12
+ import java .util .Optional ;
12
13
import java .util .concurrent .Executors ;
13
14
import java .util .concurrent .ScheduledExecutorService ;
14
15
import java .util .concurrent .TimeUnit ;
@@ -38,6 +39,7 @@ public static void main(String[] args) {
38
39
private static Monitor createMonitor () {
39
40
List <ServiceObserver > observers = Stream .of ("alpha-1" , "alpha-2" , "alpha-3" , "beta-1" )
40
41
.map (Main ::createObserver )
42
+ .flatMap (Optional ::stream )
41
43
.collect (toList ());
42
44
Statistician statistician = new Statistician ();
43
45
StatisticsRepository repository = new StatisticsRepository ();
@@ -46,10 +48,13 @@ private static Monitor createMonitor() {
46
48
return new Monitor (observers , statistician , repository , initialStatistics );
47
49
}
48
50
49
- private static ServiceObserver createObserver (String serviceName ) {
51
+ private static Optional < ServiceObserver > createObserver (String serviceName ) {
50
52
return AlphaServiceObserver .createIfAlphaService (serviceName )
51
53
.or (() -> BetaServiceObserver .createIfBetaService (serviceName ))
52
- .orElseThrow (IllegalArgumentException ::new );
54
+ .or (() -> {
55
+ System .out .printf ("No observer for %s found.%n" , serviceName );
56
+ return Optional .empty ();
57
+ });
53
58
}
54
59
55
60
}
0 commit comments