ServiceController<?> installCacheConfigurationService( ServiceTarget target, String containerName, String cacheName, String defaultCache, ModuleIdentifier moduleId, ConfigurationBuilder builder, Configuration config, List<Dependency<?>> dependencies, ServiceVerificationHandler verificationHandler) { final InjectedValue<EmbeddedCacheManager> container = new InjectedValue<EmbeddedCacheManager>(); final CacheConfigurationDependencies cacheConfigurationDependencies = new CacheConfigurationDependencies(container); final Service<Configuration> service = new CacheConfigurationService(cacheName, builder, moduleId, cacheConfigurationDependencies); final ServiceBuilder<?> configBuilder = target .addService(CacheConfigurationService.getServiceName(containerName, cacheName), service) .addDependency( EmbeddedCacheManagerService.getServiceName(containerName), EmbeddedCacheManager.class, container) .addDependency( Services.JBOSS_SERVICE_MODULE_LOADER, ModuleLoader.class, cacheConfigurationDependencies.getModuleLoaderInjector()) .setInitialMode(ServiceController.Mode.PASSIVE); if (config.invocationBatching().enabled()) { cacheConfigurationDependencies .getTransactionManagerInjector() .inject(BatchModeTransactionManager.getInstance()); } else if (config.transaction().transactionMode() == org.infinispan.transaction.TransactionMode.TRANSACTIONAL) { configBuilder.addDependency( TxnServices.JBOSS_TXN_TRANSACTION_MANAGER, TransactionManager.class, cacheConfigurationDependencies.getTransactionManagerInjector()); if (config.transaction().useSynchronization()) { configBuilder.addDependency( TxnServices.JBOSS_TXN_SYNCHRONIZATION_REGISTRY, TransactionSynchronizationRegistry.class, cacheConfigurationDependencies.getTransactionSynchronizationRegistryInjector()); } } // add in any additional dependencies resulting from ModelNode parsing for (Dependency<?> dependency : dependencies) { this.addDependency(configBuilder, dependency); } // add an alias for the default cache if (cacheName.equals(defaultCache)) { configBuilder.addAliases(CacheConfigurationService.getServiceName(containerName, null)); } return configBuilder.install(); }