/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.zookeeper; import java.util.List; import javax.annotation.PostConstruct; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.emc.sa.descriptor.ServiceDefinition; import com.emc.sa.descriptor.ServiceDefinitionLoader; /** * Loads Service Definitions from the classpath into the Zookeeper Tree */ @Component public class ZkServiceDescriptorLoader { private static final Logger LOG = Logger.getLogger(ZkServiceDescriptorLoader.class); private ZkServiceDescriptors zkDescriptors; @Autowired public void setZkServiceDescriptors(ZkServiceDescriptors zkDescriptors) { this.zkDescriptors = zkDescriptors; } @PostConstruct public void start() { try { // TODO : Add Locking around this for multi-node environments ClassLoader cl = ZkServiceDescriptorLoader.class.getClassLoader(); List<ServiceDefinition> services = ServiceDefinitionLoader.load(cl); zkDescriptors.addServices(services); LOG.info("Loaded " + services.size() + " services"); } catch (Exception e) { throw new IllegalStateException("Unable to load services", e); } } }