package org.infinispan.server.endpoint.deployments; import static org.infinispan.server.endpoint.EndpointLogger.ROOT_LOGGER; import org.infinispan.notifications.cachelistener.filter.CacheEventFilterFactory; import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.StartContext; import org.jboss.msc.service.StopContext; public final class FilterFactoryExtensionProcessor extends AbstractNamedFactoryExtensionProcessor<CacheEventFilterFactory> { public FilterFactoryExtensionProcessor(ServiceName extensionManagerServiceName) { super(extensionManagerServiceName); } @Override public Class<CacheEventFilterFactory> getServiceClass() { return CacheEventFilterFactory.class; } @Override public AbstractExtensionManagerService<CacheEventFilterFactory> createService(String name, CacheEventFilterFactory instance) { return new FilterFactoryService(name, instance); } private static class FilterFactoryService extends AbstractExtensionManagerService<CacheEventFilterFactory> { public FilterFactoryService(String name, CacheEventFilterFactory filterFactory) { super(name, filterFactory); } @Override public void start(StartContext context) { ROOT_LOGGER.debugf("Started key-value filter service with name = %s", name); extensionManager.getValue().addFilterFactory(name, extension); } @Override public String getServiceTypeName() { return "key-value-filter-factory"; } @Override public void stop(StopContext context) { ROOT_LOGGER.debugf("Stopped key-value filter service with name = %s", name); extensionManager.getValue().removeFilterFactory(name); } @Override public CacheEventFilterFactory getValue() { return extension; } } }