First part of onap rename
[appc.git] / appc-dispatcher / appc-command-executor / appc-command-executor-core / src / main / java / org / openecomp / appc / executor / impl / CommandExecutorImpl.java
index e351cfe..d23a3fd 100644 (file)
@@ -1,10 +1,11 @@
 /*-
  * ============LICENSE_START=======================================================
- * openECOMP : APP-C
+ * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                                             reserved.
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Copyright (C) 2017 Amdocs
+ * =============================================================================
  * 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
  * 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.
+ * 
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
 
 /**
  *
  */
-package org.openecomp.appc.executor.impl;
-
+package org.onap.appc.executor.impl;
 
-import java.util.Date;
-import java.util.concurrent.TimeUnit;
 
-import org.apache.commons.lang.ObjectUtils;
-import org.openecomp.appc.exceptions.APPCException;
-import org.openecomp.appc.executionqueue.ExecutionQueueService;
-import org.openecomp.appc.executionqueue.impl.ExecutionQueueServiceFactory;
-import org.openecomp.appc.executor.CommandExecutor;
-import org.openecomp.appc.executor.impl.objects.CommandRequest;
-import org.openecomp.appc.executor.impl.objects.LCMCommandRequest;
-import org.openecomp.appc.executor.impl.objects.LCMReadOnlyCommandRequest;
-import org.openecomp.appc.executor.objects.CommandExecutorInput;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
+import org.apache.commons.lang.ObjectUtils;
+import org.onap.appc.domainmodel.lcm.RuntimeContext;
+import org.onap.appc.exceptions.APPCException;
+import org.onap.appc.executionqueue.ExecutionQueueService;
+import org.onap.appc.executor.CommandExecutor;
+
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.concurrent.TimeUnit;
 
 
 public class CommandExecutorImpl implements CommandExecutor {
 
-    private CommandTaskFactory executionTaskFactory ;
+    private CommandTaskFactory executionTaskFactory;
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(CommandExecutorImpl.class);
 
     private ExecutionQueueService executionQueueService;
     private ExpiredMessageHandler expiredMessageHandler;
 
-    public CommandExecutorImpl(){
+    public CommandExecutorImpl() {
 
     }
 
+    /**
+     * Injected by blueprint
+     *
+     * @param executionQueueService
+     */
     public void setExecutionQueueService(ExecutionQueueService executionQueueService) {
         this.executionQueueService = executionQueueService;
     }
 
+    /**
+     * Injected by blueprint
+     * @param expiredMessageHandler
+     */
     public void setExpiredMessageHandler(ExpiredMessageHandler expiredMessageHandler) {
         this.expiredMessageHandler = expiredMessageHandler;
     }
 
     public void initialize() {
         logger.info("initialization started of CommandExecutorImpl");
-        executionQueueService = ExecutionQueueServiceFactory.getExecutionQueueService();
         executionQueueService.registerMessageExpirationListener(expiredMessageHandler);
     }
 
@@ -74,56 +82,46 @@ public class CommandExecutorImpl implements CommandExecutor {
     /**
      * Execute given command
      * Create command request and enqueue it for execution.
+     *
      * @param commandExecutorInput Contains CommandHeader,  command , target Id , payload and conf ID (optional)
      * @throws APPCException in case of error.
      */
     @Override
-    public void executeCommand (CommandExecutorInput commandExecutorInput) throws APPCException{
+    public void executeCommand(RuntimeContext commandExecutorInput) throws APPCException {
         if (logger.isTraceEnabled()) {
-            logger.trace("Entering to executeCommand with CommandExecutorInput = "+ ObjectUtils.toString(commandExecutorInput));
+            logger.trace("Entering to executeCommand with CommandExecutorInput = " + ObjectUtils.toString(commandExecutorInput));
         }
-        CommandRequest request = getCommandRequest(commandExecutorInput);
-        enqueRequest(request);
+        enqueRequest(commandExecutorInput);
         if (logger.isTraceEnabled()) {
             logger.trace("Exiting from executeCommand");
         }
     }
 
-    private CommandRequest getCommandRequest(CommandExecutorInput commandExecutorInput){
+    private RuntimeContext getCommandRequest(RuntimeContext commandExecutorInput) {
         if (logger.isTraceEnabled()) {
-            logger.trace("Entering to getCommandRequest with CommandExecutorInput = "+ ObjectUtils.toString(commandExecutorInput));
-        }
-        CommandRequest commandRequest;
-
-        switch(commandExecutorInput.getRuntimeContext().getRequestContext().getAction()){
-            case Sync:
-                commandRequest = new LCMReadOnlyCommandRequest(commandExecutorInput);
-                break;
-            case Audit:
-                commandRequest = new LCMReadOnlyCommandRequest(commandExecutorInput);
-                break;
-            default:
-                commandRequest = new LCMCommandRequest(commandExecutorInput);
-                break;
+            logger.trace("Entering to getCommandRequest with CommandExecutorInput = " + ObjectUtils.toString(commandExecutorInput));
         }
+        RuntimeContext commandRequest;
+        commandRequest = commandExecutorInput;
         if (logger.isTraceEnabled()) {
-            logger.trace("Exiting from getCommandRequest with (CommandRequest = "+ ObjectUtils.toString(commandRequest)+")");
+            logger.trace("Exiting from getCommandRequest with (CommandRequest = " + ObjectUtils.toString(commandRequest) + ")");
         }
         return commandRequest;
     }
 
     @SuppressWarnings("unchecked")
-    private void enqueRequest(CommandRequest request) throws APPCException{
+    private void enqueRequest(RuntimeContext request) throws APPCException {
         if (logger.isTraceEnabled()) {
-            logger.trace("Entering to enqueRequest with CommandRequest = "+ ObjectUtils.toString(request));
+            logger.trace("Entering to enqueRequest with CommandRequest = " + ObjectUtils.toString(request));
         }
         try {
-            CommandTask<? extends CommandRequest> commandTask = getMessageExecutor(request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getAction().name());
-            commandTask.setCommandRequest(request);
+            CommandTask commandTask = executionTaskFactory.getExecutionTask(request);
+
             long remainingTTL = getRemainingTTL(request);
-            executionQueueService.putMessage(commandTask,remainingTTL, TimeUnit.MILLISECONDS);
+
+            executionQueueService.putMessage(commandTask, remainingTTL, TimeUnit.MILLISECONDS);
         } catch (Exception e) {
-            logger.error("Exception: "+e.getMessage());
+            logger.error("Exception: " + e.getMessage());
             throw new APPCException(e);
         }
 
@@ -132,22 +130,20 @@ public class CommandExecutorImpl implements CommandExecutor {
         }
     }
 
-    private long getRemainingTTL(CommandRequest request) {
-        Date requestTimestamp = request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getTimeStamp();
-        int ttl = request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getFlags().getTtl();
-        return ttl*1000 + requestTimestamp.getTime() - System.currentTimeMillis();
+    private long getRemainingTTL(RuntimeContext request) {
+        Instant requestTimestamp = request.getRequestContext().getCommonHeader().getTimeStamp();
+        int ttl = request.getRequestContext().getCommonHeader().getFlags().getTtl();
+        return ChronoUnit.MILLIS.between(Instant.now(), requestTimestamp.plusSeconds(ttl));
     }
 
-    private CommandTask<? extends CommandRequest> getMessageExecutor(String action){
+    private CommandTask getMessageExecutor(RuntimeContext request) {
         if (logger.isTraceEnabled()) {
-            logger.trace("Entering to getMessageExecutor with command = "+ action);
+            logger.trace("Entering to getMessageExecutor with command = " + request);
         }
-        CommandTask<? extends CommandRequest> executionTask = executionTaskFactory.getExecutionTask(action);
+        CommandTask executionTask = executionTaskFactory.getExecutionTask(request);
         if (logger.isTraceEnabled()) {
             logger.trace("Exiting from getMessageExecutor");
         }
         return executionTask;
     }
-
-
 }