protected Stream<BQModuleProvider> matchingProviders() { return StreamSupport.stream(ServiceLoader.load(BQModuleProvider.class).spliterator(), false) .filter(p -> p != null && provider.equals(p.getClass())); }
@Bean public ObjectSerializer objectSerializer() { final SerializeEnum serializeEnum = SerializeEnum.acquire(env.getProperty("recover.serializer.support")); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); return StreamSupport.stream(objectSerializers.spliterator(), false) .filter(objectSerializer -> Objects.equals(objectSerializer.getScheme(), serializeEnum.getSerialize())) .findFirst().orElse(new KryoSerializer()); } }
@Bean public ObjectSerializer objectSerializer() { final SerializeProtocolEnum serializeProtocolEnum = SerializeProtocolEnum.acquireSerializeProtocol(env.getProperty("recover.serializer.support")); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); return StreamSupport.stream(objectSerializers.spliterator(), false) .filter(objectSerializer -> Objects.equals(objectSerializer.getScheme(), serializeProtocolEnum.getSerializeProtocol())).findFirst().orElse(new KryoSerializer()); }
/** * Object serializer object serializer. * * @return the object serializer */ @Bean public ObjectSerializer objectSerializer() { final SerializeEnum serializeEnum = SerializeEnum.acquire(env.getProperty("myth.serializer.support")); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); return StreamSupport.stream(objectSerializers.spliterator(), false) .filter(objectSerializer -> Objects.equals(objectSerializer.getScheme(), serializeEnum.getSerialize())).findFirst() .orElse(new KryoSerializer()); } }
/** * load spi. * * @param hmilyConfig {@linkplain HmilyConfig} */ private void loadSpiSupport(final HmilyConfig hmilyConfig) { //spi serialize final SerializeEnum serializeEnum = SerializeEnum.acquire(hmilyConfig.getSerializer()); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); final ObjectSerializer serializer = StreamSupport.stream(objectSerializers.spliterator(), false) .filter(objectSerializer -> Objects.equals(objectSerializer.getScheme(), serializeEnum.getSerialize())) .findFirst().orElse(new KryoSerializer()); //spi repository final RepositorySupportEnum repositorySupportEnum = RepositorySupportEnum.acquire(hmilyConfig.getRepositorySupport()); final ServiceLoader<HmilyCoordinatorRepository> recoverRepositories = ServiceBootstrap.loadAll(HmilyCoordinatorRepository.class); final HmilyCoordinatorRepository repository = StreamSupport.stream(recoverRepositories.spliterator(), false) .filter(recoverRepository -> Objects.equals(recoverRepository.getScheme(), repositorySupportEnum.getSupport())) .findFirst().orElse(new JdbcCoordinatorRepository()); repository.setSerializer(serializer); SpringBeanUtils.getInstance().registerBean(HmilyCoordinatorRepository.class.getName(), repository); } }
@Test public void testLoadedViaServiceLoader() throws Exception { assertThat(StreamSupport.stream(ServiceLoader.load(SpanReporter.class).spliterator(), false) .filter(reporter -> reporter instanceof ElasticsearchSpanReporter)).hasSize(1); }
/** * load spi. * * @param txConfig {@linkplain TxConfig} */ private void loadSpi(final TxConfig txConfig) { //spi serialize final SerializeProtocolEnum serializeProtocolEnum = SerializeProtocolEnum.acquireSerializeProtocol(txConfig.getSerializer()); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); final ObjectSerializer serializer = StreamSupport.stream(objectSerializers.spliterator(), false) .filter(s -> Objects.equals(s.getScheme(), serializeProtocolEnum.getSerializeProtocol())) .findFirst().orElse(new KryoSerializer()); //spi RecoverRepository support final CompensationCacheTypeEnum compensationCacheTypeEnum = CompensationCacheTypeEnum.acquireCompensationCacheType(txConfig.getCompensationCacheType()); final ServiceLoader<TransactionRecoverRepository> recoverRepositories = ServiceBootstrap.loadAll(TransactionRecoverRepository.class); final TransactionRecoverRepository repository = StreamSupport.stream(recoverRepositories.spliterator(), false) .filter(r -> Objects.equals(r.getScheme(), compensationCacheTypeEnum.getCompensationCacheType())) .findFirst().orElse(new JdbcTransactionRecoverRepository()); //将compensationCache实现注入到spring容器 repository.setSerializer(serializer); SpringBeanUtils.getInstance().registerBean(TransactionRecoverRepository.class.getName(), repository); }
/** * load spi support. * * @param mythConfig {@linkplain MythConfig} */ private void loadSpiSupport(final MythConfig mythConfig) { //spi serialize final SerializeEnum serializeEnum = SerializeEnum.acquire(mythConfig.getSerializer()); final ServiceLoader<ObjectSerializer> objectSerializers = ServiceBootstrap.loadAll(ObjectSerializer.class); final ObjectSerializer serializer = StreamSupport.stream(objectSerializers.spliterator(), true) .filter(objectSerializer -> Objects.equals(objectSerializer.getScheme(), serializeEnum.getSerialize())) .findFirst() .orElse(new KryoSerializer()); mythCoordinatorService.setSerializer(serializer); SpringBeanUtils.getInstance().registerBean(ObjectSerializer.class.getName(), serializer); //spi repository support final RepositorySupportEnum repositorySupportEnum = RepositorySupportEnum.acquire(mythConfig.getRepositorySupport()); final ServiceLoader<MythCoordinatorRepository> recoverRepositories = ServiceBootstrap.loadAll(MythCoordinatorRepository.class); final MythCoordinatorRepository repository = StreamSupport.stream(recoverRepositories.spliterator(), false) .filter(recoverRepository -> Objects.equals(recoverRepository.getScheme(), repositorySupportEnum.getSupport())) .findFirst() .orElse(new JdbcCoordinatorRepository()); repository.setSerializer(serializer); SpringBeanUtils.getInstance().registerBean(MythCoordinatorRepository.class.getName(), repository); }
private Set<ComponentIdentifier> getConfigurationPropertiesIdentifiers() { final ServiceLoader<ConfigurationPropertiesProviderFactory> providerFactories = ServiceLoader.load(ConfigurationPropertiesProviderFactory.class); return StreamSupport.stream(providerFactories.spliterator(), false) .map(ConfigurationPropertiesProviderFactory::getSupportedComponentIdentifier) .collect(Collectors.toSet()); }
/** * product ZkSerializer with className. * * @param className className * @return ZkSerializer zk serializer */ public static ZkSerializer of(final String className) { return StreamSupport.stream(SERVICE_LOADER.spliterator(), false) .filter(service -> Objects.equals(service.getClass().getName().substring(service.getClass().getName().lastIndexOf(".") + 1, service.getClass().getName().length()), className)).findFirst().orElse(new KryoSerializer()); } }
private AtlasDbFactory createAtlasFactoryOfCorrectType(KeyValueServiceConfig kvsConfig) { return StreamSupport.stream(loader.spliterator(), false) .filter(producesCorrectType()) .findFirst() .orElseThrow(() -> new IllegalStateException( "No atlas provider for KeyValueService type " + kvsConfig.type() + " could be found." + " Have you annotated it with @AutoService(AtlasDbFactory.class)?" )); }
/** * factory of . * * @param algorithm param * @return LoadBalance load balance */ public static LoadBalance of(final String algorithm) { return StreamSupport.stream(SERVICE_LOADER.spliterator(), false) .filter(service -> Objects.equals(service.algorithm(), algorithm)).findFirst().orElse(new RandomLoadBalance()); } }
static ClientConfigFactory findDefaultConfigFactory() { return StreamSupport.stream(ServiceLoader.load(ClientConfigFactory.class).spliterator(), false) .sorted(Comparator .comparingInt(ClientConfigFactory::getPriority) .thenComparing(Comparator.comparing(f -> f.getClass().getCanonicalName()))) .findFirst() .orElseGet(() -> { throw new IllegalStateException("Expecting at least one implementation of ClientConfigFactory discoverable via the ServiceLoader"); }); } }
private static List<Extension> loadEextensions(DeriveUtils deriveUtils) { return StreamSupport .stream(ServiceLoader.load(ExtensionFactory.class, DerivingProcessor.class.getClassLoader()).spliterator(), false) .flatMap(f -> f.extensions(deriveUtils).stream()) .collect(toList()); }
@SuppressWarnings("unused") public OxalisHomeDirectory() { this(StreamSupport.stream(ServiceLoader.load(HomeDetector.class).spliterator(), false) .sorted(Sortables.comparator()) .collect(Collectors.toList())); }
private static Set<String> getSupportedPackages() { Set<String> result = new HashSet<>(); stream(ServiceLoader.load(ResourceFactoryConfig.class).spliterator(), false) .map(config -> config.getSupportedPackages().stream() .map(it -> it + ".") .collect(Collectors.toSet())) .forEach(result::addAll); return result; } }
private static List<Extension> loadEextensions(DeriveUtils deriveUtils) { return StreamSupport .stream(ServiceLoader.load(ExtensionFactory.class, DerivingProcessor.class.getClassLoader()).spliterator(), false) .flatMap(f -> f.extensions(deriveUtils).stream()) .collect(toList()); }
public static Backend constructBackend(final String backendType) { final ServiceLoader<Backend> backends = ServiceLoader.load(Backend.class); return StreamSupport.stream(backends.spliterator(), false) .filter(b -> backendType.equalsIgnoreCase(b.getName())) .findAny() .orElseThrow(() -> new IllegalArgumentException("Unknown backend type " + backendType)); }
private static Map<P2<ClassName, Optional<String>>, Derivator> loadDerivators(DeriveUtils deriveUtils) { return StreamSupport .stream(ServiceLoader.load(DerivatorFactory.class, DerivingProcessor.class.getClassLoader()).spliterator(), false) .flatMap(f -> f.derivators(deriveUtils).stream()) .collect(toMap(ds -> P2(DerivatorSelections.getForClass(ds), DerivatorSelections.getSelector(ds)), DerivatorSelections::getDerivator)); }
private static Map<P2<ClassName, Optional<String>>, Derivator> loadDerivators(DeriveUtils deriveUtils) { return StreamSupport .stream(ServiceLoader.load(DerivatorFactory.class, DerivingProcessor.class.getClassLoader()).spliterator(), false) .flatMap(f -> f.derivators(deriveUtils).stream()) .collect(toMap(ds -> P2(DerivatorSelections.getForClass(ds), DerivatorSelections.getSelector(ds)), DerivatorSelections::getDerivator)); }