@Override public Collection<CapabilityServiceConfigurator> getDeploymentServiceConfigurators(DeploymentUnit unit) { ServiceConfigurator configurator = new RemoveOnCancelScheduledExecutorServiceConfigurator(this.getExpirationSchedulerServiceName(unit.getServiceName()), THREAD_FACTORY); return Collections.singleton(new ServiceConfiguratorAdapter(configurator)); }
@Override public ServiceBuilder<?> build(ServiceTarget target) { ServiceName name = this.getServiceName(); ServiceBuilder<?> builder = target.addService(name); Consumer<CacheFactoryBuilder<K, V>> cacheFactoryBuilder = builder.provides(name); Service service = Service.newInstance(cacheFactoryBuilder, this); return builder.setInstance(service).setInitialMode(ServiceController.Mode.ON_DEMAND); }
@Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { final String name = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.ADDRESS)).getLastElement().getValue(); ModelNode passivationStoreModel = CacheFactoryResourceDefinition.PASSIVATION_STORE.resolveModelAttribute(context,model); String passivationStore = passivationStoreModel.isDefined() ? passivationStoreModel.asString() : null; final Collection<String> unwrappedAliasValues = CacheFactoryResourceDefinition.ALIASES.unwrap(context,model); final Set<String> aliases = unwrappedAliasValues != null ? new HashSet<>(unwrappedAliasValues) : Collections.<String>emptySet(); ServiceTarget target = context.getServiceTarget(); ServiceConfigurator configurator = (passivationStore != null) ? new IdentityServiceConfigurator<>(new CacheFactoryBuilderServiceNameProvider(name).getServiceName(), new DistributableCacheFactoryBuilderServiceNameProvider(passivationStore).getServiceName()) : new SimpleCacheFactoryBuilderServiceConfigurator<>(name); ServiceBuilder<?> builder = configurator.build(target); for (String alias: aliases) { new IdentityServiceConfigurator<>(new CacheFactoryBuilderServiceNameProvider(alias).getServiceName(), configurator.getServiceName()).build(target).install(); } builder.install(); } }
@Override public CapabilityServiceConfigurator getServiceConfigurator(ServiceName name, StatefulComponentDescription description, ComponentConfiguration configuration) { return new SimpleCacheFactoryServiceConfigurator<>(name, description, new ServiceSupplierDependency<>(this.getExpirationSchedulerServiceName(description.getDeploymentUnitServiceName()))); }