Merge of new rebased code
[appc.git] / appc-provider / appc-provider-bundle / src / main / java / org / openecomp / appc / provider / AppcProviderClient.java
index 0224784..4dd0261 100644 (file)
@@ -30,10 +30,15 @@ import org.openecomp.sdnc.sli.provider.SvcLogicService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceReference;
+import org.slf4j.MDC;
 
 import static com.att.eelf.configuration.Configuration.*;
 
 import java.util.Properties;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
 
 public class AppcProviderClient {
 
@@ -44,15 +49,20 @@ public class AppcProviderClient {
 
     public AppcProviderClient() {
         BundleContext bctx = FrameworkUtil.getBundle(SvcLogicService.class).getBundleContext();
-
-        // Get SvcLogicService reference
-        ServiceReference sref = bctx.getServiceReference(SvcLogicService.NAME);
-        if (sref != null) {
-            svcLogic = (SvcLogicService) bctx.getService(sref);
-
-        } else {
-            LOG.warn("Cannot find service reference for " + SvcLogicService.NAME);
-
+        //Handle BundleContext returning null
+        if (bctx == null){
+               LOG.warn("Cannot find bundle context for " + SvcLogicService.NAME);
+        }
+        else{
+               // Get SvcLogicService reference
+               ServiceReference sref = bctx.getServiceReference(SvcLogicService.NAME);
+               if (sref != null) {
+                   svcLogic = (SvcLogicService) bctx.getService(sref);
+       
+               } else {
+                   LOG.warn("Cannot find service reference for " + SvcLogicService.NAME);
+       
+               }
         }
     }
 
@@ -64,10 +74,40 @@ public class AppcProviderClient {
     public Properties execute(String module, String rpc, String version, String mode, Properties parms)
         throws SvcLogicException {
 
+        /*
+         * Set End time for Metrics Logger
+         */
+        long startTime = System.currentTimeMillis();
+        TimeZone tz = TimeZone.getTimeZone("UTC");
+        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
+        df.setTimeZone(tz);
+        String startTimeStr = df.format(new Date());
+        long endTime = System.currentTimeMillis();
+        long duration = endTime - startTime;
+        String endTimeStr = String.valueOf(endTime);
+        String durationStr = String.valueOf(duration);
+        String endTimeStrUTC = df.format(new Date());
+        MDC.put("EndTimestamp", endTimeStrUTC);
+        MDC.put("ElapsedTime", durationStr);
+        MDC.put("TargetEntity", "sli");
+        MDC.put("TargetServiceName", "execute");
+        MDC.put("ClassName", "org.openecomp.appc.provider.AppcProviderClient"); 
+
         LOG.debug("Parameters passed to SLI: " + StringHelper.propertiesToString(parms));
         metricsLogger.info("Parameters passed to SLI: " + StringHelper.propertiesToString(parms));
 
         Properties respProps = svcLogic.execute(module, rpc, version, mode, parms);
+        
+        /*
+         * Set End time for Metrics Logger
+         */
+        endTime = System.currentTimeMillis();
+        duration = endTime - startTime;
+        endTimeStr = String.valueOf(endTime);
+        durationStr = String.valueOf(duration);
+        endTimeStrUTC = df.format(new Date());
+        MDC.put("EndTimestamp", endTimeStrUTC);
+        MDC.put("ElapsedTime", durationStr);
 
         LOG.debug("Parameters returned by SLI: " + StringHelper.propertiesToString(respProps));
         metricsLogger.info("Parameters returned by SLI: " + StringHelper.propertiesToString(respProps));