package org.wildfly.swarm.jaxrs.btm.runtime;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import org.jboss.as.naming.ImmediateManagedReferenceFactory;
import org.jboss.as.naming.ServiceBasedNamingStore;
import org.jboss.as.naming.deployment.ContextNames;
import org.jboss.as.naming.service.BinderService;
import org.jboss.msc.service.ServiceActivator;
import org.jboss.msc.service.ServiceActivatorContext;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceRegistryException;
import org.jboss.msc.service.ServiceTarget;
import org.wildfly.swarm.jaxrs.btm.BraveLookup;
import org.wildfly.swarm.jaxrs.btm.ZipkinFraction;
/**
* @author Heiko Braun
*/
@ApplicationScoped
public class BraveServiceActivator implements ServiceActivator {
@Inject
@Any
Instance<ZipkinFraction> zipKinFractionInstance;
@Override
public void activate(ServiceActivatorContext context) throws ServiceRegistryException {
ServiceTarget target = context.getServiceTarget();
BraveService service = new BraveService(zipKinFractionInstance.get().getBraveInstance());
ServiceBuilder<BraveService> serviceBuilder = target.addService(BraveService.SERVICE_NAME, service);
serviceBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install();
BinderService binderService = new BinderService(BraveLookup.JNDI_NAME, null, true);
target.addService(ContextNames.buildServiceName(ContextNames.JBOSS_CONTEXT_SERVICE_NAME, BraveLookup.JNDI_NAME), binderService)
.addDependency(ContextNames.JBOSS_CONTEXT_SERVICE_NAME, ServiceBasedNamingStore.class, binderService.getNamingStoreInjector())
.addInjection(binderService.getManagedObjectInjector(), new ImmediateManagedReferenceFactory(service))
.setInitialMode(ServiceController.Mode.ACTIVE)
.install();
}
}