package org.wildfly.swarm.topology.consul.runtime; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Any; import javax.inject.Inject; import com.orbitz.consul.AgentClient; import com.orbitz.consul.Consul; import org.jboss.msc.service.ServiceActivator; import org.jboss.msc.service.ServiceActivatorContext; import org.jboss.msc.service.ServiceRegistryException; import org.jboss.msc.service.ServiceTarget; import org.wildfly.swarm.topology.consul.ConsulTopologyFraction; /** * @author Heiko Braun * @since 18/05/16 */ @ApplicationScoped public class AgentActivator implements ServiceActivator { @Inject @Any ConsulTopologyFraction fraction; @Override public void activate(ServiceActivatorContext context) throws ServiceRegistryException { ServiceTarget target = context.getServiceTarget(); ConsulService consul = new ConsulService(this.fraction.url()); target.addService(ConsulService.SERVICE_NAME, consul) .install(); HealthClientService healthClient = new HealthClientService(); target.addService(HealthClientService.SERIVCE_NAME, healthClient) .addDependency(ConsulService.SERVICE_NAME, Consul.class, healthClient.getConsulInjector()) .install(); CatalogClientService catalogClient = new CatalogClientService(); target.addService(CatalogClientService.SERVICE_NAME, catalogClient) .addDependency(ConsulService.SERVICE_NAME, Consul.class, catalogClient.getConsulInjector()) .install(); AgentClientService agentClient = new AgentClientService(); target.addService(AgentClientService.SERVICE_NAME, agentClient) .addDependency(ConsulService.SERVICE_NAME, Consul.class, agentClient.getConsulInjector()) .install(); Advertiser advertiser = new Advertiser(); target.addService(Advertiser.SERVICE_NAME, advertiser) .addDependency(AgentClientService.SERVICE_NAME, AgentClient.class, advertiser.getAgentClientInjector()) .install(); } }