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