package org.wildfly.swarm.container.runtime.wildfly;
import org.jboss.as.repository.ContentRepository;
import org.jboss.msc.service.AbstractServiceListener;
import org.jboss.msc.service.ServiceActivator;
import org.jboss.msc.service.ServiceActivatorContext;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceRegistryException;
/** This is a hack to overcome the fact wildfly-core installs
* a badly-written ContentRepository, and we don't want to have
* to PR upstream.
*
* @author Bob McWhirter
*/
public class ContentRepositoryServiceActivator implements ServiceActivator {
private final SwarmContentRepository repository;
public ContentRepositoryServiceActivator(SwarmContentRepository repository) {
this.repository = repository;
}
@Override
public void activate(ServiceActivatorContext context) throws ServiceRegistryException {
ServiceController oldContentRepository = context.getServiceRegistry().getService(ContentRepository.SERVICE_NAME);
oldContentRepository.addListener(new AbstractServiceListener() {
@Override
public void transition(ServiceController controller, ServiceController.Transition transition) {
super.transition(controller, transition);
if (transition.getAfter() == ServiceController.Substate.REMOVED) {
SwarmContentRepository.addService(context.getServiceTarget(), repository);
}
}
});
oldContentRepository.setMode(ServiceController.Mode.REMOVE);
}
}