View Javadoc
1   package net.bmahe.genetics4j.neat.combination.parentcompare;
2   
3   import java.util.Objects;
4   import java.util.Optional;
5   import java.util.ServiceLoader;
6   import java.util.ServiceLoader.Provider;
7   
8   import net.bmahe.genetics4j.neat.spec.combination.parentcompare.ParentComparisonPolicy;
9   
10  public class ParentComparisonHandlerLocator {
11  
12  	private final ServiceLoader<ParentComparisonHandler> parentComparisonHandlerServices;
13  
14  	public ParentComparisonHandlerLocator() {
15  
16  		parentComparisonHandlerServices = ServiceLoader.load(ParentComparisonHandler.class);
17  	}
18  
19  	public Optional<ParentComparisonHandler> find(final ParentComparisonPolicy parentComparisonPolicy) {
20  		Objects.requireNonNull(parentComparisonPolicy);
21  
22  		return parentComparisonHandlerServices.stream()
23  				.map(Provider::get)
24  				.filter(parentComparisonHandler -> parentComparisonHandler.canHandle(parentComparisonPolicy))
25  				.findFirst();
26  	}
27  }