SDNC-12 refactoring to support easy mocking 07/4507/1
authorKevin Smokowski <ks6305@att.com>
Fri, 26 May 2017 18:23:42 +0000 (18:23 +0000)
committerKevin Smokowski <ks6305@att.com>
Fri, 26 May 2017 18:23:42 +0000 (18:23 +0000)
Change-Id: I5788e5b728c12bbefe83f1702f508a6a1daf22f0
Signed-off-by: Kevin Smokowski <ks6305@att.com>
20 files changed:
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/CallNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/ConfigureNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/DeleteNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/ExecuteNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/ExistsNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/GetResourceNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/IsAvailableNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/NotifyNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/RecordNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/ReleaseNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/ReserveNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SaveNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SetNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SvcLogicActivator.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SvcLogicExpressionResolver.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SvcLogicNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SvcLogicService.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/SwitchNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/UpdateNodeExecutor.java
sli/provider/src/main/java/org/openecomp/sdnc/sli/provider/WhileNodeExecutor.java

index a500b6f..7b79c19 100644 (file)
@@ -78,7 +78,16 @@ public class CallNodeExecutor extends SvcLogicNodeExecutor {
                {
                        rpc  = SvcLogicExpressionResolver.evaluate(rpcExpr, node, ctx);
                }
-
+               
+               if ((rpc == null) || (rpc.length() == 0))
+               {
+                       if (myGraph != null)
+                       {
+                               rpc = myGraph.getRpc();
+                               LOG.debug("myGraph.getRpc() returned "+rpc);
+                       }
+               }
+               
                String mode = null;
                
                moduleExpr = node.getAttribute("mode");
@@ -108,21 +117,24 @@ public class CallNodeExecutor extends SvcLogicNodeExecutor {
                String parentGraph = ctx.getAttribute("currentGraph");
         ctx.setAttribute("parentGraph", parentGraph);
                
-               SvcLogicStore store = SvcLogicActivator.getStore();
+               SvcLogicStore store = getStore();
                
         if (store != null) {
-            SvcLogicGraph calledGraph = store.fetch(module, rpc, version, mode);
+                       SvcLogicGraph calledGraph = store.fetch(module, rpc, version, mode);
+            LOG.debug("Parent " + parentGraph + " is calling child " + calledGraph.toString());
+            ctx.setAttribute("currentGraph", calledGraph.toString());
             if (calledGraph != null) {
-                svc.execute(calledGraph, ctx);
-                LOG.debug("Parent " + parentGraph + " is calling child " + calledGraph.toString());
-                ctx.setAttribute("currentGraph", calledGraph.toString());
-                outValue = ctx.getStatus();
+                               svc.execute(calledGraph, ctx);
+                               
+                               outValue = ctx.getStatus();
             } else {
-                LOG.debug("Parent " + parentGraph + " failed to call child [" + module + "," + rpc + "," + version + "," + mode + "] because the graph could not be found");
-            }
-        } else {
-            LOG.debug("Could not get SvcLogicStore reference");
-        }
+                LOG.error("Could not find service logic for [" + module + "," + rpc + "," + version + "," + mode + "]");
+                       }
+               }
+               else
+               {
+                       LOG.debug("Could not get SvcLogicStore reference");
+               }
                
                SvcLogicNode nextNode = node.getOutcomeValue(outValue);
                if (nextNode != null) {
@@ -150,5 +162,4 @@ public class CallNodeExecutor extends SvcLogicNodeExecutor {
 
        }
 
-
 }
index d6aab3d..a3f2874 100644 (file)
@@ -50,8 +50,7 @@ public class ConfigureNodeExecutor extends SvcLogicNodeExecutor {
                                        + adaptorName);
                }
 
-               SvcLogicAdaptor adaptor = SvcLogicAdaptorFactory
-                               .getInstance(adaptorName);
+               SvcLogicAdaptor adaptor = getAdaptor(adaptorName);
 
                if (adaptor != null) {
                        String activate = SvcLogicExpressionResolver.evaluate(
index 375c631..081cbcf 100644 (file)
@@ -25,9 +25,6 @@ import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -100,22 +97,5 @@ public class DeleteNodeExecutor extends SvcLogicNodeExecutor {
                }
                return (nextNode);
        }
-       
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
 
 }
index 85aede7..7ae4d0d 100644 (file)
@@ -28,16 +28,11 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
-import org.openecomp.sdnc.sli.SvcLogicAdaptor;
 import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicJavaPlugin;
 import org.openecomp.sdnc.sli.SvcLogicNode;
-import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -145,21 +140,6 @@ public class ExecuteNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-       protected SvcLogicJavaPlugin getSvcLogicJavaPlugin(String pluginName){
-              BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                       .getBundleContext();
-
-               ServiceReference sref = bctx.getServiceReference(pluginName);
-
-               if (sref == null) {
-                   LOG.warn("Could not find service reference object for plugin " + pluginName);
-                   return null;
-               } else {
-                   SvcLogicJavaPlugin plugin  = (SvcLogicJavaPlugin) bctx
-                           .getService(sref);
-                   return plugin;
-               }
-       }
        protected String evaluate(SvcLogicExpression expr, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException {
         return SvcLogicExpressionResolver.evaluate(node.getAttribute("method"), node, ctx);
     }
index 464c676..688a86e 100644 (file)
@@ -25,9 +25,6 @@ import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -105,21 +102,4 @@ public class ExistsNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
-
 }
index c260db2..d431a18 100644 (file)
@@ -26,9 +26,6 @@ import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -133,22 +130,5 @@ public class GetResourceNodeExecutor extends SvcLogicNodeExecutor {
                }
                return (nextNode);
        }
-       
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
 
 }
index 00c7e66..0df7368 100644 (file)
@@ -25,9 +25,6 @@ import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -103,20 +100,4 @@ public class IsAvailableNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
 }
index 4dc4a93..706014a 100644 (file)
@@ -25,9 +25,6 @@ import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -102,21 +99,4 @@ public class NotifyNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
-
 }
index f75752b..8ba14d2 100644 (file)
@@ -31,9 +31,6 @@ import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicRecorder;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -79,7 +76,7 @@ public class RecordNodeExecutor extends SvcLogicNodeExecutor {
                }
 
 
-                       SvcLogicRecorder recorder = getSvcLogicResource(plugin);
+                       SvcLogicRecorder recorder = getSvcLogicRecorder(plugin);
 
                        if (recorder != null) {
 
@@ -115,20 +112,7 @@ public class RecordNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicRecorder getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicRecorder resourcePlugin = (SvcLogicRecorder) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            return null;
-        }
-    }
+
 
 
 
index b51cf9f..0d8416c 100644 (file)
@@ -25,9 +25,6 @@ import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -100,21 +97,4 @@ public class ReleaseNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
-
 }
index 7db233f..f0bbda8 100644 (file)
@@ -26,9 +26,6 @@ import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -114,21 +111,4 @@ public class ReserveNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
-
 }
index f57eac8..57eac7f 100644 (file)
@@ -31,9 +31,6 @@ import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -142,20 +139,4 @@ public class SaveNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
-
 }
index 55ad737..013997e 100644 (file)
@@ -21,7 +21,6 @@
 
 package org.openecomp.sdnc.sli.provider;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
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));
+
+               }
+               
+       }
+
+}
index 29bd9b4..5c17c79 100644 (file)
@@ -25,15 +25,15 @@ import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
 import org.openecomp.sdnc.sli.SvcLogicAtom;
+import org.openecomp.sdnc.sli.SvcLogicAtom.AtomType;
 import org.openecomp.sdnc.sli.SvcLogicBinaryExpression;
+import org.openecomp.sdnc.sli.SvcLogicBinaryExpression.OperatorType;
 import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicFunctionCall;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicVariableTerm;
-import org.openecomp.sdnc.sli.SvcLogicAtom.AtomType;
-import org.openecomp.sdnc.sli.SvcLogicBinaryExpression.OperatorType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index de969de..0c8166a 100644 (file)
 
 package org.openecomp.sdnc.sli.provider;
 
+import org.openecomp.sdnc.sli.SvcLogicAdaptor;
 import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicJavaPlugin;
 import org.openecomp.sdnc.sli.SvcLogicNode;
+import org.openecomp.sdnc.sli.SvcLogicRecorder;
+import org.openecomp.sdnc.sli.SvcLogicResource;
+import org.openecomp.sdnc.sli.SvcLogicStore;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public abstract class SvcLogicNodeExecutor {
        
        public abstract SvcLogicNode execute(SvcLogicServiceImpl svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException;
 
+    private static final Logger LOG = LoggerFactory.getLogger(SvcLogicNodeExecutor.class);
 
-       protected String evaluateNodeTest(SvcLogicNode node, SvcLogicContext ctx)
+    protected String evaluateNodeTest(SvcLogicNode node, SvcLogicContext ctx)
                        throws SvcLogicException {
                if (node == null) {
                        return null;
@@ -40,4 +51,60 @@ public abstract class SvcLogicNodeExecutor {
                                node, ctx));
 
        }
+       
+    protected SvcLogicStore getStore() throws SvcLogicException {
+        return SvcLogicActivator.getStore();
+    }
+    
+    protected SvcLogicAdaptor getAdaptor(String adaptorName) {
+        return SvcLogicAdaptorFactory.getInstance(adaptorName);
+    }
+    
+    protected SvcLogicResource getSvcLogicResource(String plugin) {
+        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
+                .getBundleContext();
+
+        ServiceReference sref = bctx.getServiceReference(plugin);
+        if (sref != null) {
+            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
+                    .getService(sref);
+            return resourcePlugin;
+        }
+        else {
+            LOG.warn("Could not find service reference object for plugin " + plugin);
+            return null;
+        }
+    }
+    
+    protected SvcLogicRecorder getSvcLogicRecorder(String plugin) {
+        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
+                .getBundleContext();
+
+        ServiceReference sref = bctx.getServiceReference(plugin);
+        if (sref != null) {
+            SvcLogicRecorder resourcePlugin = (SvcLogicRecorder) bctx
+                    .getService(sref);
+            return resourcePlugin;
+        }
+        else {
+            return null;
+        }
+    }
+    
+    protected SvcLogicJavaPlugin getSvcLogicJavaPlugin(String pluginName){
+        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
+                 .getBundleContext();
+
+         ServiceReference sref = bctx.getServiceReference(pluginName);
+
+         if (sref == null) {
+             LOG.warn("Could not find service reference object for plugin " + pluginName);
+             return null;
+         } else {
+             SvcLogicJavaPlugin plugin  = (SvcLogicJavaPlugin) bctx
+                     .getService(sref);
+             return plugin;
+         }
+ }
+    
 }
index 93d6807..f30b3fc 100644 (file)
 
 package org.openecomp.sdnc.sli.provider;
 
-import java.util.HashMap;
 import java.util.Properties;
 
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
-import org.openecomp.sdnc.sli.SvcLogicGraph;
-
-
-
 
 public interface SvcLogicService {
        
index 2e32a58..e8ae7c8 100644 (file)
@@ -21,9 +21,6 @@
 
 package org.openecomp.sdnc.sli.provider;
 
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
 import org.openecomp.sdnc.sli.SvcLogicContext;
 import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicNode;
index e7a6621..9eeab65 100644 (file)
@@ -31,9 +31,6 @@ import org.openecomp.sdnc.sli.SvcLogicException;
 import org.openecomp.sdnc.sli.SvcLogicExpression;
 import org.openecomp.sdnc.sli.SvcLogicNode;
 import org.openecomp.sdnc.sli.SvcLogicResource;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -136,19 +133,4 @@ public class UpdateNodeExecutor extends SvcLogicNodeExecutor {
                return (nextNode);
        }
 
-    protected SvcLogicResource getSvcLogicResource(String plugin) {
-        BundleContext bctx = FrameworkUtil.getBundle(this.getClass())
-                .getBundleContext();
-
-        ServiceReference sref = bctx.getServiceReference(plugin);
-        if (sref != null) {
-            SvcLogicResource resourcePlugin = (SvcLogicResource) bctx
-                    .getService(sref);
-            return resourcePlugin;
-        }
-        else {
-            LOG.warn("Could not find service reference object for plugin " + plugin);
-            return null;
-        }
-    }
 }
index 7ec36e1..5bbab32 100644 (file)
@@ -1,76 +1,75 @@
-/*-\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 org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import org.openecomp.sdnc.sli.BreakNodeException;\r
-import org.openecomp.sdnc.sli.SvcLogicContext;\r
-import org.openecomp.sdnc.sli.SvcLogicException;\r
-import org.openecomp.sdnc.sli.SvcLogicExpression;\r
-import org.openecomp.sdnc.sli.SvcLogicNode;\r
-\r
-public class WhileNodeExecutor extends SvcLogicNodeExecutor {\r
-\r
-    private static final Logger LOG = LoggerFactory.getLogger(WhileNodeExecutor.class);\r
-\r
-    @Override\r
-    public SvcLogicNode execute(SvcLogicServiceImpl svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException {\r
-\r
-        String testResult = evaluateNodeTest(node, ctx);\r
-        SvcLogicExpression silentFailureExpr = node.getAttribute("do");\r
-        String doWhile = SvcLogicExpressionResolver.evaluate(silentFailureExpr, node, ctx);\r
-        if ("true".equals(doWhile)) {\r
-            LOG.debug("While loop will execute once regardless of expression because do is set to true");\r
-        }\r
-\r
-        try {\r
-            while ("true".equals(testResult) || "true".equals(doWhile)) {\r
-                if (!"true".equals(doWhile)) {\r
-                    LOG.debug("Test expression (" + node.getAttribute("test") + ") evaluates to true, executing loop.");\r
-                }\r
-                int numOutcomes = node.getNumOutcomes() + 1;\r
-                for (int i = 0; i < numOutcomes; i++) {\r
-                    SvcLogicNode nextNode = node.getOutcomeValue("" + (i + 1));\r
-                    if (nextNode != null) {\r
-                        while (nextNode != null) {\r
-                            nextNode = svc.executeNode(nextNode, ctx);\r
-                        }\r
-                    } else {\r
-                        if ("true".equals(doWhile)) {\r
-                            LOG.debug("Do executed, will only execute again if test expression is true.");\r
-                            doWhile = "false";\r
-                        }\r
-                        testResult = evaluateNodeTest(node, ctx);\r
-                        LOG.debug("test expression (" + node.getAttribute("test") + ") evaluates to " + testResult);\r
-                    }\r
-                }\r
-            }\r
-            LOG.debug("testResult was " + testResult + " which is not equal to true, exiting while loop.");\r
-        } catch (BreakNodeException e) {\r
-            LOG.debug("WhileNodeExecutor caught break");\r
-        }\r
-        return (null);\r
-    }\r
-\r
-}\r
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.sli.provider;
+
+import org.openecomp.sdnc.sli.BreakNodeException;
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicException;
+import org.openecomp.sdnc.sli.SvcLogicExpression;
+import org.openecomp.sdnc.sli.SvcLogicNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WhileNodeExecutor extends SvcLogicNodeExecutor {
+
+    private static final Logger LOG = LoggerFactory.getLogger(WhileNodeExecutor.class);
+
+    @Override
+    public SvcLogicNode execute(SvcLogicServiceImpl svc, SvcLogicNode node, SvcLogicContext ctx) throws SvcLogicException {
+
+        String testResult = evaluateNodeTest(node, ctx);
+        SvcLogicExpression silentFailureExpr = node.getAttribute("do");
+        String doWhile = SvcLogicExpressionResolver.evaluate(silentFailureExpr, node, ctx);
+        if ("true".equals(doWhile)) {
+            LOG.debug("While loop will execute once regardless of expression because do is set to true");
+        }
+
+        try {
+            while ("true".equals(testResult) || "true".equals(doWhile)) {
+                if (!"true".equals(doWhile)) {
+                    LOG.debug("Test expression (" + node.getAttribute("test") + ") evaluates to true, executing loop.");
+                }
+                int numOutcomes = node.getNumOutcomes() + 1;
+                for (int i = 0; i < numOutcomes; i++) {
+                    SvcLogicNode nextNode = node.getOutcomeValue("" + (i + 1));
+                    if (nextNode != null) {
+                        while (nextNode != null) {
+                            nextNode = svc.executeNode(nextNode, ctx);
+                        }
+                    } else {
+                        if ("true".equals(doWhile)) {
+                            LOG.debug("Do executed, will only execute again if test expression is true.");
+                            doWhile = "false";
+                        }
+                        testResult = evaluateNodeTest(node, ctx);
+                        LOG.debug("test expression (" + node.getAttribute("test") + ") evaluates to " + testResult);
+                    }
+                }
+            }
+            LOG.debug("testResult was " + testResult + " which is not equal to true, exiting while loop.");
+        } catch (BreakNodeException e) {
+            LOG.debug("WhileNodeExecutor caught break");
+        }
+        return (null);
+    }
+
+}