SDNC-12 refactoring to support easy mocking
[sdnc/core.git] / sli / provider / src / main / java / org / openecomp / sdnc / sli / provider / SvcLogicActivator.java
index 8996095..ae42e2c 100644 (file)
-/*-\r
+/*-
  * ============LICENSE_START=======================================================
  * openECOMP : SDN-C
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
  *                                             reserved.
  * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License.
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-package org.openecomp.sdnc.sli.provider;\r
-\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.net.URL;\r
-import java.util.HashMap;\r
-import java.util.Hashtable;\r
-import java.util.LinkedList;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-\r
-import org.openecomp.sdnc.sli.ConfigurationException;\r
-import org.openecomp.sdnc.sli.SvcLogicAdaptor;\r
-import org.openecomp.sdnc.sli.SvcLogicException;\r
-import org.openecomp.sdnc.sli.SvcLogicStore;\r
-import org.openecomp.sdnc.sli.SvcLogicStoreFactory;\r
-import org.osgi.framework.BundleActivator;\r
-import org.osgi.framework.BundleContext;\r
-import org.osgi.framework.ServiceReference;\r
-import org.osgi.framework.ServiceRegistration;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import com.mysql.jdbc.Driver;\r
-\r
-public class SvcLogicActivator implements BundleActivator {\r
-\r
-       private static final String SVCLOGIC_PROP_VAR = "SDNC_SLI_PROPERTIES";\r
-       private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";\r
-\r
-       private static final Map<String, SvcLogicNodeExecutor> BUILTIN_NODES = new HashMap<String, SvcLogicNodeExecutor>() {\r
-               {\r
-                       put("block", new BlockNodeExecutor());\r
-                       put("call", new CallNodeExecutor());\r
-                       put("configure", new ConfigureNodeExecutor());\r
-                       put("delete", new DeleteNodeExecutor());\r
-                       put("execute", new ExecuteNodeExecutor());\r
-                       put("exists", new ExistsNodeExecutor());\r
-                       put("for", new ForNodeExecutor());\r
-                       put("get-resource", new GetResourceNodeExecutor());\r
-                       put("is-available", new IsAvailableNodeExecutor());\r
-                       put("notify", new NotifyNodeExecutor());\r
-                       put("record", new RecordNodeExecutor());\r
-                       put("release", new ReleaseNodeExecutor());\r
-                       put("reserve", new ReserveNodeExecutor());\r
-                       put("return", new ReturnNodeExecutor());\r
-                       put("save", new SaveNodeExecutor());\r
-                       put("set", new SetNodeExecutor());\r
-                       put("switch", new SwitchNodeExecutor());\r
-                       put("update", new UpdateNodeExecutor());\r
-            put("break", new BreakNodeExecutor());\r
-            put("while", new WhileNodeExecutor());\r
-               }\r
-       };\r
-\r
-       private static LinkedList<ServiceRegistration> registrations = new LinkedList<ServiceRegistration>();\r
-\r
-       private static HashMap<String, SvcLogicAdaptor> adaptorMap = null;\r
-       \r
-       private static final Logger LOG = LoggerFactory\r
-                       .getLogger(SvcLogicActivator.class);\r
-       \r
-       private static Properties props = null;\r
-\r
-       private static BundleContext bundleCtx = null;\r
-       \r
-       private static SvcLogicService svcLogicServiceImpl = null;\r
-       \r
-       @Override\r
-       public void start(BundleContext ctx) throws Exception {\r
-\r
-               LOG.info("Activating SLI");\r
-               \r
-               bundleCtx = ctx;\r
-\r
-               // Read properties\r
-               props = new Properties();\r
-               String propPath = System.getenv(SVCLOGIC_PROP_VAR);\r
-               \r
-               if (propPath == null) {\r
-                       String propDir = System.getenv(SDNC_CONFIG_DIR);\r
-                       if (propDir == null) {\r
-                               \r
-                               propDir = "/opt/sdnc/data/properties";\r
-                       }\r
-                       propPath = propDir + "/svclogic.properties";\r
-                       LOG.warn("Environment variable "+SVCLOGIC_PROP_VAR+" unset - defaulting to "+propPath);\r
-               }\r
-               \r
-               File propFile = new File(propPath);\r
-               \r
-               if (!propFile.exists()) {\r
-                       \r
-                       throw new ConfigurationException(\r
-                                       "Missing configuration properties file : "\r
-                                                       + propFile);\r
-               }\r
-               try {\r
-                       \r
-                       props.load(new FileInputStream(propFile));\r
-               } catch (Exception e) {\r
-                       throw new ConfigurationException(\r
-                                       "Could not load properties file " + propPath, e);\r
-\r
-               }\r
-\r
-\r
-               if (registrations == null) {\r
-\r
-                       registrations = new LinkedList<ServiceRegistration>();\r
-               }\r
-\r
-               // Advertise SvcLogicService\r
-               svcLogicServiceImpl = new SvcLogicServiceImpl();\r
-\r
-               LOG.info("SLI: Registering service " + SvcLogicService.NAME\r
-                               + " in bundle " + ctx.getBundle().getSymbolicName());\r
-               ServiceRegistration reg = ctx.registerService(SvcLogicService.NAME,\r
-                               svcLogicServiceImpl, null);\r
-               registrations.add(reg);\r
-\r
-               // Initialize SvcLogicStore\r
-               try {\r
-                       SvcLogicStore store = getStore();\r
-                       registerNodeTypes(store);\r
-               } catch (ConfigurationException e) {\r
-                       LOG.warn("Could not initialize SvcLogicScore", e);\r
-               }\r
-\r
-               LOG.info("SLI - done registering services");\r
-       }\r
-\r
-       @Override\r
-       public void stop(BundleContext ctx) throws Exception {\r
-\r
-               if (registrations != null) {\r
-                       for (ServiceRegistration reg : registrations) {\r
-                               ServiceReference regRef = reg.getReference();\r
-                               /* Don't bother to remove node types from table\r
-                               String nodeType = (String) regRef.getProperty("nodeType");\r
-                               if (nodeType != null) {\r
-                                       LOG.info("SLI - unregistering node type " + nodeType);\r
-                                       store.unregisterNodeType(nodeType);\r
-                               }\r
-                               */\r
-                               reg.unregister();\r
-                       }\r
-                       registrations = null;\r
-               }\r
-       }\r
-       \r
-       public static SvcLogicStore getStore() throws SvcLogicException {\r
-               // Create and initialize SvcLogicStore object - used to access\r
-               // saved service logic.\r
-               \r
-               SvcLogicStore store = null;\r
-               \r
-               try {\r
-                       Driver dvr = new Driver();\r
-                       store = SvcLogicStoreFactory.getSvcLogicStore(props);\r
-               } catch (Exception e) {\r
-                       throw new ConfigurationException(\r
-                                       "Could not get service logic store", e);\r
-\r
-               }\r
-\r
-               try {\r
-                       store.init(props);\r
-               } catch (Exception e) {\r
-                       throw new ConfigurationException(\r
-                                       "Could not get service logic store", e);\r
-               }\r
-               \r
-               return(store);\r
-       }\r
-       \r
-       private static void registerNodeTypes(SvcLogicStore store) throws SvcLogicException {\r
-               \r
-               if (store == null) {\r
-                       return;\r
-               }\r
-               // Advertise built-in node executors\r
-               LOG.info("SLI : Registering built-in node executors");\r
-               Hashtable propTable = new Hashtable();\r
-\r
-               for (String nodeType : BUILTIN_NODES.keySet()) {\r
-                       LOG.info("SLI - registering node type " + nodeType);\r
-                       propTable.clear();\r
-                       propTable.put("nodeType", nodeType);\r
-\r
-                       ServiceRegistration reg = bundleCtx.registerService(SvcLogicNodeExecutor.class.getName(),\r
-                                       BUILTIN_NODES.get(nodeType), propTable);\r
-                       registrations.add(reg);\r
-\r
-                       store.registerNodeType(nodeType);\r
-                       \r
-                       LOG.info("SLI - registering node executor");\r
-                       \r
-                       ((SvcLogicServiceImpl)svcLogicServiceImpl).registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));\r
-\r
-               }\r
-               \r
-       }\r
-\r
-}\r
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.sli.provider;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Properties;
+
+import org.openecomp.sdnc.sli.ConfigurationException;
+import org.openecomp.sdnc.sli.SvcLogicAdaptor;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicStore;
+import org.openecomp.sdnc.sli.SvcLogicStoreFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.mysql.jdbc.Driver;
+
+public class SvcLogicActivator implements BundleActivator {
+
+       private static final String SVCLOGIC_PROP_VAR = "SDNC_SLI_PROPERTIES";
+       private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";
+
+       private static final Map<String, SvcLogicNodeExecutor> BUILTIN_NODES = new HashMap<String, SvcLogicNodeExecutor>() {
+               {
+                       put("block", new BlockNodeExecutor());
+                       put("call", new CallNodeExecutor());
+                       put("configure", new ConfigureNodeExecutor());
+                       put("delete", new DeleteNodeExecutor());
+                       put("execute", new ExecuteNodeExecutor());
+                       put("exists", new ExistsNodeExecutor());
+                       put("for", new ForNodeExecutor());
+                       put("get-resource", new GetResourceNodeExecutor());
+                       put("is-available", new IsAvailableNodeExecutor());
+                       put("notify", new NotifyNodeExecutor());
+                       put("record", new RecordNodeExecutor());
+                       put("release", new ReleaseNodeExecutor());
+                       put("reserve", new ReserveNodeExecutor());
+                       put("return", new ReturnNodeExecutor());
+                       put("save", new SaveNodeExecutor());
+                       put("set", new SetNodeExecutor());
+                       put("switch", new SwitchNodeExecutor());
+                       put("update", new UpdateNodeExecutor());
+            put("break", new BreakNodeExecutor());
+
+               }
+       };
+
+       private static LinkedList<ServiceRegistration> registrations = new LinkedList<ServiceRegistration>();
+
+       private static HashMap<String, SvcLogicAdaptor> adaptorMap = null;
+       
+       private static final Logger LOG = LoggerFactory
+                       .getLogger(SvcLogicActivator.class);
+       
+       private static Properties props = null;
+
+       private static BundleContext bundleCtx = null;
+       
+       private static SvcLogicService svcLogicServiceImpl = null;
+       
+       @Override
+       public void start(BundleContext ctx) throws Exception {
+
+               LOG.info("Activating SLI");
+               
+               bundleCtx = ctx;
+
+               // Read properties
+               props = new Properties();
+               String propPath = System.getenv(SVCLOGIC_PROP_VAR);
+               
+               if (propPath == null) {
+                       String propDir = System.getenv(SDNC_CONFIG_DIR);
+                       if (propDir == null) {
+                               
+                               propDir = "/opt/sdnc/data/properties";
+                       }
+                       propPath = propDir + "/svclogic.properties";
+                       LOG.warn("Environment variable "+SVCLOGIC_PROP_VAR+" unset - defaulting to "+propPath);
+               }
+               
+               File propFile = new File(propPath);
+               
+               if (!propFile.exists()) {
+                       
+                       throw new ConfigurationException(
+                                       "Missing configuration properties file : "
+                                                       + propFile);
+               }
+               try {
+                       
+                       props.load(new FileInputStream(propFile));
+               } catch (Exception e) {
+                       throw new ConfigurationException(
+                                       "Could not load properties file " + propPath, e);
+
+               }
+
+
+               if (registrations == null) {
+
+                       registrations = new LinkedList<ServiceRegistration>();
+               }
+
+               // Advertise SvcLogicService
+               svcLogicServiceImpl = new SvcLogicServiceImpl();
+
+               LOG.info("SLI: Registering service " + SvcLogicService.NAME
+                               + " in bundle " + ctx.getBundle().getSymbolicName());
+               ServiceRegistration reg = ctx.registerService(SvcLogicService.NAME,
+                               svcLogicServiceImpl, null);
+               registrations.add(reg);
+
+               // Initialize SvcLogicStore
+               try {
+                       SvcLogicStore store = getStore();
+                       registerNodeTypes(store);
+               } catch (ConfigurationException e) {
+                       LOG.warn("Could not initialize SvcLogicScore", e);
+               }
+
+               LOG.info("SLI - done registering services");
+       }
+
+       @Override
+       public void stop(BundleContext ctx) throws Exception {
+
+               if (registrations != null) {
+                       for (ServiceRegistration reg : registrations) {
+                               ServiceReference regRef = reg.getReference();
+                               /* Don't bother to remove node types from table
+                               String nodeType = (String) regRef.getProperty("nodeType");
+                               if (nodeType != null) {
+                                       LOG.info("SLI - unregistering node type " + nodeType);
+                                       store.unregisterNodeType(nodeType);
+                               }
+                               */
+                               reg.unregister();
+                       }
+                       registrations = null;
+               }
+       }
+       
+       public static SvcLogicStore getStore() throws SvcLogicException {
+               // Create and initialize SvcLogicStore object - used to access
+               // saved service logic.
+               
+               SvcLogicStore store = null;
+               
+               try {
+                       Driver dvr = new Driver();
+                       store = SvcLogicStoreFactory.getSvcLogicStore(props);
+               } catch (Exception e) {
+                       throw new ConfigurationException(
+                                       "Could not get service logic store", e);
+
+               }
+
+               try {
+                       store.init(props);
+               } catch (Exception e) {
+                       throw new ConfigurationException(
+                                       "Could not get service logic store", e);
+               }
+               
+               return(store);
+       }
+       
+       private static void registerNodeTypes(SvcLogicStore store) throws SvcLogicException {
+               
+               if (store == null) {
+                       return;
+               }
+               // Advertise built-in node executors
+               LOG.info("SLI : Registering built-in node executors");
+               Hashtable propTable = new Hashtable();
+
+               for (String nodeType : BUILTIN_NODES.keySet()) {
+                       LOG.info("SLI - registering node type " + nodeType);
+                       propTable.clear();
+                       propTable.put("nodeType", nodeType);
+
+                       ServiceRegistration reg = bundleCtx.registerService(SvcLogicNodeExecutor.class.getName(),
+                                       BUILTIN_NODES.get(nodeType), propTable);
+                       registrations.add(reg);
+
+                       store.registerNodeType(nodeType);
+                       
+                       LOG.info("SLI - registering node executor");
+                       
+                       ((SvcLogicServiceImpl)svcLogicServiceImpl).registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
+
+               }
+               
+       }
+
+}