99import monitor .statistics .Statistics ;
1010
1111import java .util .List ;
12+ import java .util .Optional ;
1213import java .util .concurrent .Executors ;
1314import java .util .concurrent .ScheduledExecutorService ;
1415import java .util .concurrent .TimeUnit ;
@@ -38,6 +39,7 @@ public static void main(String[] args) {
3839 private static Monitor createMonitor () {
3940 List <ServiceObserver > observers = Stream .of ("alpha-1" , "alpha-2" , "alpha-3" , "beta-1" )
4041 .map (Main ::createObserver )
42+ .flatMap (Optional ::stream )
4143 .collect (toList ());
4244 Statistician statistician = new Statistician ();
4345 StatisticsRepository repository = new StatisticsRepository ();
@@ -46,10 +48,13 @@ private static Monitor createMonitor() {
4648 return new Monitor (observers , statistician , repository , initialStatistics );
4749 }
4850
49- private static ServiceObserver createObserver (String serviceName ) {
51+ private static Optional < ServiceObserver > createObserver (String serviceName ) {
5052 return AlphaServiceObserver .createIfAlphaService (serviceName )
5153 .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+ });
5358 }
5459
5560}
0 commit comments