-/*-
+/*-\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");
- * 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
+ * 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
* limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdnc.sli.provider;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.net.URL;
-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));
-
- }
-
- }
-
-}
+ * ============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