< prev index next >

src/java.base/share/classes/java/lang/module/ModuleFinder.java

Print this page
rev 14279 : [mq]: 8140281-deprecation-optional.get


 312         Objects.requireNonNull(second);
 313 
 314         return new ModuleFinder() {
 315             Set<ModuleReference> allModules;
 316 
 317             @Override
 318             public Optional<ModuleReference> find(String name) {
 319                 Optional<ModuleReference> om = first.find(name);
 320                 if (!om.isPresent())
 321                     om = second.find(name);
 322                 return om;
 323             }
 324             @Override
 325             public Set<ModuleReference> findAll() {
 326                 if (allModules == null) {
 327                     allModules = Stream.concat(first.findAll().stream(),
 328                                                second.findAll().stream())
 329                                        .map(a -> a.descriptor().name())
 330                                        .distinct()
 331                                        .map(this::find)
 332                                        .map(Optional::get)
 333                                        .collect(Collectors.toSet());
 334                 }
 335                 return allModules;
 336             }
 337         };
 338     }
 339 
 340     /**
 341      * Returns an empty module finder.  The empty finder does not find any
 342      * modules.
 343      *
 344      * @apiNote This is useful when using methods such as {@link
 345      * Configuration#resolveRequires resolveRequires} where two finders are
 346      * specified. An alternative is {@code ModuleFinder.of()}.
 347      *
 348      * @return A {@code ModuleFinder} that does not find any modules
 349      */
 350     static ModuleFinder empty() {
 351         // an alternative implementation of ModuleFinder.of()
 352         return new ModuleFinder() {


 312         Objects.requireNonNull(second);
 313 
 314         return new ModuleFinder() {
 315             Set<ModuleReference> allModules;
 316 
 317             @Override
 318             public Optional<ModuleReference> find(String name) {
 319                 Optional<ModuleReference> om = first.find(name);
 320                 if (!om.isPresent())
 321                     om = second.find(name);
 322                 return om;
 323             }
 324             @Override
 325             public Set<ModuleReference> findAll() {
 326                 if (allModules == null) {
 327                     allModules = Stream.concat(first.findAll().stream(),
 328                                                second.findAll().stream())
 329                                        .map(a -> a.descriptor().name())
 330                                        .distinct()
 331                                        .map(this::find)
 332                                        .map(Optional::getWhenPresent)
 333                                        .collect(Collectors.toSet());
 334                 }
 335                 return allModules;
 336             }
 337         };
 338     }
 339 
 340     /**
 341      * Returns an empty module finder.  The empty finder does not find any
 342      * modules.
 343      *
 344      * @apiNote This is useful when using methods such as {@link
 345      * Configuration#resolveRequires resolveRequires} where two finders are
 346      * specified. An alternative is {@code ModuleFinder.of()}.
 347      *
 348      * @return A {@code ModuleFinder} that does not find any modules
 349      */
 350     static ModuleFinder empty() {
 351         // an alternative implementation of ModuleFinder.of()
 352         return new ModuleFinder() {
< prev index next >