diff --git a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilder.java b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilder.java deleted file mode 100644 index 9fe301748a17..000000000000 --- a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilder.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * JBoss, Home of Professional Open Source. - * Copyright 2014, Red Hat, Inc., and individual contributors - * as indicated by the @author tags. See the copyright.txt file in the - * distribution for a full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ - -package org.wildfly.clustering.ejb.infinispan; - -import java.util.concurrent.ScheduledExecutorService; - -import org.infinispan.Cache; -import org.infinispan.remoting.transport.Address; -import org.jboss.as.controller.capability.CapabilityServiceSupport; -import org.jboss.msc.service.ServiceBuilder; -import org.jboss.msc.service.ServiceController; -import org.jboss.msc.service.ServiceName; -import org.jboss.msc.service.ServiceTarget; -import org.jboss.msc.service.ValueService; -import org.jboss.msc.value.InjectedValue; -import org.jboss.msc.value.Value; -import org.wildfly.clustering.dispatcher.CommandDispatcherFactory; -import org.wildfly.clustering.ee.infinispan.TransactionBatch; -import org.wildfly.clustering.ejb.BeanContext; -import org.wildfly.clustering.ejb.BeanManagerFactory; -import org.wildfly.clustering.ejb.BeanManagerFactoryServiceConfiguratorConfiguration; -import org.wildfly.clustering.ejb.BeanPassivationConfiguration; -import org.wildfly.clustering.infinispan.spi.InfinispanCacheRequirement; -import org.wildfly.clustering.infinispan.spi.InfinispanRequirement; -import org.wildfly.clustering.infinispan.spi.affinity.KeyAffinityServiceFactory; -import org.wildfly.clustering.marshalling.jboss.MarshallingConfigurationRepository; -import org.wildfly.clustering.registry.Registry; -import org.wildfly.clustering.service.Builder; -import org.wildfly.clustering.spi.ClusteringCacheRequirement; -import org.wildfly.clustering.spi.ClusteringRequirement; -import org.wildfly.clustering.spi.NodeFactory; - -/** - * @author Paul Ferraro - */ -public class InfinispanBeanManagerFactoryBuilder implements Builder>, Value>, InfinispanBeanManagerFactoryConfiguration { - - private final CapabilityServiceSupport support; - private final String name; - private final BeanContext context; - private final BeanManagerFactoryServiceConfiguratorConfiguration configuration; - - @SuppressWarnings("rawtypes") - private final InjectedValue cache = new InjectedValue<>(); - private final InjectedValue affinityFactory = new InjectedValue<>(); - private final InjectedValue repository = new InjectedValue<>(); - private final InjectedValue scheduler = new InjectedValue<>(); - @SuppressWarnings("rawtypes") - private final InjectedValue group = new InjectedValue<>(); - @SuppressWarnings("rawtypes") - private final InjectedValue registry = new InjectedValue<>(); - private final InjectedValue dispatcherFactory = new InjectedValue<>(); - - public InfinispanBeanManagerFactoryBuilder(CapabilityServiceSupport support, String name, BeanContext context, BeanManagerFactoryServiceConfiguratorConfiguration configuration) { - this.support = support; - this.name = name; - this.context = context; - this.configuration = configuration; - } - - @Override - public ServiceName getServiceName() { - return this.context.getDeploymentUnitServiceName().append(this.context.getBeanName()).append("bean-manager"); - } - - @Override - public ServiceBuilder> build(ServiceTarget target) { - String containerName = this.configuration.getContainerName(); - ServiceName deploymentUnitServiceName = this.context.getDeploymentUnitServiceName(); - return target.addService(this.getServiceName(), new ValueService<>(this)) - .addDependency(InfinispanCacheRequirement.CACHE.getServiceName(this.support, containerName, InfinispanBeanManagerFactoryBuilderFactory.getCacheName(deploymentUnitServiceName)), Cache.class, this.cache) - .addDependency(InfinispanRequirement.KEY_AFFINITY_FACTORY.getServiceName(this.support, containerName), KeyAffinityServiceFactory.class, this.affinityFactory) - .addDependency(deploymentUnitServiceName.append("marshalling"), MarshallingConfigurationRepository.class, this.repository) - .addDependency(deploymentUnitServiceName.append(this.name, "expiration"), ScheduledExecutorService.class, this.scheduler) - .addDependency(ClusteringRequirement.COMMAND_DISPATCHER_FACTORY.getServiceName(this.support, containerName), CommandDispatcherFactory.class, this.dispatcherFactory) - .addDependency(ClusteringCacheRequirement.REGISTRY.getServiceName(this.support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME), Registry.class, this.registry) - .addDependency(ClusteringCacheRequirement.GROUP.getServiceName(this.support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME), NodeFactory.class, this.group) - .setInitialMode(ServiceController.Mode.ON_DEMAND) - ; - } - - @Override - public BeanManagerFactory getValue() { - return new InfinispanBeanManagerFactory<>(this); - } - - @Override - public BeanContext getBeanContext() { - return this.context; - } - - @Override - public Cache getCache() { - return this.cache.getValue(); - } - - @Override - public KeyAffinityServiceFactory getKeyAffinityServiceFactory() { - return this.affinityFactory.getValue(); - } - - @Override - public MarshallingConfigurationRepository getMarshallingConfigurationRepository() { - return this.repository.getValue(); - } - - @Override - public ScheduledExecutorService getScheduler() { - return this.scheduler.getValue(); - } - - @Override - public BeanPassivationConfiguration getPassivationConfiguration() { - return this.configuration; - } - - @Override - public NodeFactory
getNodeFactory() { - return this.group.getValue(); - } - - @Override - public Registry getRegistry() { - return this.registry.getValue(); - } - - @Override - public CommandDispatcherFactory getCommandDispatcherFactory() { - return this.dispatcherFactory.getValue(); - } -} diff --git a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfigurator.java b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfigurator.java new file mode 100644 index 000000000000..74b907251c6b --- /dev/null +++ b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfigurator.java @@ -0,0 +1,141 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2014, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.wildfly.clustering.ejb.infinispan; + +import java.util.concurrent.ScheduledExecutorService; +import java.util.function.Consumer; + +import org.infinispan.Cache; +import org.infinispan.remoting.transport.Address; +import org.jboss.as.controller.capability.CapabilityServiceSupport; +import org.jboss.msc.Service; +import org.jboss.msc.service.ServiceBuilder; +import org.jboss.msc.service.ServiceController; +import org.jboss.msc.service.ServiceName; +import org.jboss.msc.service.ServiceTarget; +import org.wildfly.clustering.dispatcher.CommandDispatcherFactory; +import org.wildfly.clustering.ee.infinispan.TransactionBatch; +import org.wildfly.clustering.ejb.BeanContext; +import org.wildfly.clustering.ejb.BeanManagerFactory; +import org.wildfly.clustering.ejb.BeanManagerFactoryServiceConfiguratorConfiguration; +import org.wildfly.clustering.ejb.BeanPassivationConfiguration; +import org.wildfly.clustering.infinispan.spi.InfinispanCacheRequirement; +import org.wildfly.clustering.infinispan.spi.InfinispanRequirement; +import org.wildfly.clustering.infinispan.spi.affinity.KeyAffinityServiceFactory; +import org.wildfly.clustering.marshalling.jboss.MarshallingConfigurationRepository; +import org.wildfly.clustering.registry.Registry; +import org.wildfly.clustering.service.CompositeDependency; +import org.wildfly.clustering.service.ServiceConfigurator; +import org.wildfly.clustering.service.ServiceSupplierDependency; +import org.wildfly.clustering.service.SimpleServiceNameProvider; +import org.wildfly.clustering.service.SupplierDependency; +import org.wildfly.clustering.spi.ClusteringCacheRequirement; +import org.wildfly.clustering.spi.ClusteringRequirement; +import org.wildfly.clustering.spi.NodeFactory; + +/** + * @author Paul Ferraro + */ +public class InfinispanBeanManagerFactoryServiceConfigurator extends SimpleServiceNameProvider implements ServiceConfigurator, InfinispanBeanManagerFactoryConfiguration { + + private final BeanContext context; + private final BeanManagerFactoryServiceConfiguratorConfiguration configuration; + + @SuppressWarnings("rawtypes") + private final SupplierDependency cache; + private final SupplierDependency affinityFactory; + private final SupplierDependency repository; + private final SupplierDependency scheduler; + private final SupplierDependency> group; + private final SupplierDependency> registry; + private final SupplierDependency dispatcherFactory; + + public InfinispanBeanManagerFactoryServiceConfigurator(CapabilityServiceSupport support, String name, BeanContext context, BeanManagerFactoryServiceConfiguratorConfiguration configuration) { + super(context.getDeploymentUnitServiceName().append(context.getBeanName()).append("bean-manager")); + this.context = context; + this.configuration = configuration; + ServiceName deploymentUnitServiceName = context.getDeploymentUnitServiceName(); + String containerName = configuration.getContainerName(); + this.cache = new ServiceSupplierDependency<>(InfinispanCacheRequirement.CACHE.getServiceName(support, containerName, InfinispanBeanManagerFactoryServiceConfiguratorFactory.getCacheName(deploymentUnitServiceName))); + this.affinityFactory = new ServiceSupplierDependency<>(InfinispanRequirement.KEY_AFFINITY_FACTORY.getServiceName(support, containerName)); + this.repository = new ServiceSupplierDependency<>(deploymentUnitServiceName.append("marshalling")); + this.scheduler = new ServiceSupplierDependency<>(deploymentUnitServiceName.append(name, "expiration")); + this.dispatcherFactory = new ServiceSupplierDependency<>(ClusteringRequirement.COMMAND_DISPATCHER_FACTORY.getServiceName(support, containerName)); + this.registry = new ServiceSupplierDependency<>(ClusteringCacheRequirement.REGISTRY.getServiceName(support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME)); + this.group = new ServiceSupplierDependency<>(ClusteringCacheRequirement.GROUP.getServiceName(support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME)); + } + + @Override + public ServiceBuilder build(ServiceTarget target) { + ServiceBuilder builder = target.addService(this.getServiceName()); + new CompositeDependency(this.cache, this.affinityFactory, this.repository, this.scheduler, this.group, this.registry, this.dispatcherFactory).register(builder); + Consumer> factory = builder.provides(this.getServiceName()); + Service service = Service.newInstance(factory, new InfinispanBeanManagerFactory<>(this)); + return builder.setInstance(service).setInitialMode(ServiceController.Mode.ON_DEMAND); + } + + @Override + public BeanContext getBeanContext() { + return this.context; + } + + @Override + public Cache getCache() { + return this.cache.get(); + } + + @Override + public KeyAffinityServiceFactory getKeyAffinityServiceFactory() { + return this.affinityFactory.get(); + } + + @Override + public MarshallingConfigurationRepository getMarshallingConfigurationRepository() { + return this.repository.get(); + } + + @Override + public ScheduledExecutorService getScheduler() { + return this.scheduler.get(); + } + + @Override + public BeanPassivationConfiguration getPassivationConfiguration() { + return this.configuration; + } + + @Override + public NodeFactory
getNodeFactory() { + return this.group.get(); + } + + @Override + public Registry getRegistry() { + return this.registry.get(); + } + + @Override + public CommandDispatcherFactory getCommandDispatcherFactory() { + return this.dispatcherFactory.get(); + } +} diff --git a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactory.java b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactory.java similarity index 89% rename from clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactory.java rename to clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactory.java index be0df1e11267..512c68c69c3f 100644 --- a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactory.java +++ b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactory.java @@ -33,8 +33,8 @@ import org.infinispan.configuration.cache.ExpirationConfiguration; import org.infinispan.configuration.cache.StorageType; import org.infinispan.eviction.EvictionType; -import org.jboss.as.clustering.controller.BuilderAdapter; import org.jboss.as.clustering.controller.CapabilityServiceConfigurator; +import org.jboss.as.clustering.controller.ServiceConfiguratorAdapter; import org.jboss.as.controller.capability.CapabilityServiceSupport; import org.jboss.as.server.deployment.Services; import org.jboss.msc.service.ServiceName; @@ -50,7 +50,7 @@ import org.wildfly.clustering.infinispan.spi.service.TemplateConfigurationServiceConfigurator; import org.wildfly.clustering.service.ServiceConfigurator; import org.wildfly.clustering.service.ServiceDependency; -import org.wildfly.clustering.service.concurrent.RemoveOnCancelScheduledExecutorServiceBuilder; +import org.wildfly.clustering.service.concurrent.RemoveOnCancelScheduledExecutorServiceConfigurator; /** * Builds an infinispan-based {@link BeanManagerFactory}. @@ -60,7 +60,7 @@ * @param the group identifier type * @param the bean identifier type */ -public class InfinispanBeanManagerFactoryBuilderFactory implements BeanManagerFactoryServiceConfiguratorFactory { +public class InfinispanBeanManagerFactoryServiceConfiguratorFactory implements BeanManagerFactoryServiceConfiguratorFactory { private static final ThreadFactory EXPIRATION_THREAD_FACTORY = createThreadFactory(); @@ -84,7 +84,7 @@ static String getCacheName(ServiceName deploymentUnitServiceName) { private final String name; private final BeanManagerFactoryServiceConfiguratorConfiguration config; - public InfinispanBeanManagerFactoryBuilderFactory(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config) { + public InfinispanBeanManagerFactoryServiceConfiguratorFactory(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config) { this.support = support; this.name = name; this.config = config; @@ -118,12 +118,12 @@ public Collection getDeploymentServiceConfigurato List builders = new ArrayList<>(4); builders.add(new TemplateConfigurationServiceConfigurator(ServiceName.parse(InfinispanCacheRequirement.CONFIGURATION.resolve(containerName, cacheName)), containerName, cacheName, templateCacheName, configurator)); builders.add(new CacheServiceConfigurator<>(ServiceName.parse(InfinispanCacheRequirement.CACHE.resolve(containerName, cacheName)), containerName, cacheName).require(new ServiceDependency(name.append("marshalling")))); - builders.add(new BuilderAdapter<>(new RemoveOnCancelScheduledExecutorServiceBuilder(name.append(this.name, "expiration"), EXPIRATION_THREAD_FACTORY))); + builders.add(new ServiceConfiguratorAdapter(new RemoveOnCancelScheduledExecutorServiceConfigurator(name.append(this.name, "expiration"), EXPIRATION_THREAD_FACTORY))); return builders; } @Override public ServiceConfigurator getBeanManagerFactoryServiceConfigurator(BeanContext context) { - return new InfinispanBeanManagerFactoryBuilder<>(this.support, this.name, context, this.config); + return new InfinispanBeanManagerFactoryServiceConfigurator<>(this.support, this.name, context, this.config); } } diff --git a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactoryProvider.java b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactoryProvider.java similarity index 87% rename from clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactoryProvider.java rename to clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactoryProvider.java index 8c875b346ae7..330625ecf9a1 100644 --- a/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryBuilderFactoryProvider.java +++ b/clustering/ejb/infinispan/src/main/java/org/wildfly/clustering/ejb/infinispan/InfinispanBeanManagerFactoryServiceConfiguratorFactoryProvider.java @@ -31,10 +31,10 @@ * @author Paul Ferraro */ @MetaInfServices(BeanManagerFactoryServiceConfiguratorFactoryProvider.class) -public class InfinispanBeanManagerFactoryBuilderFactoryProvider implements BeanManagerFactoryServiceConfiguratorFactoryProvider { +public class InfinispanBeanManagerFactoryServiceConfiguratorFactoryProvider implements BeanManagerFactoryServiceConfiguratorFactoryProvider { @Override public BeanManagerFactoryServiceConfiguratorFactory getBeanManagerFactoryBuilder(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config) { - return new InfinispanBeanManagerFactoryBuilderFactory<>(support, name, config); + return new InfinispanBeanManagerFactoryServiceConfiguratorFactory<>(support, name, config); } }