diff options
84 files changed, 903 insertions, 1135 deletions
diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/engine/impl/StateMachineHandler.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/engine/impl/StateMachineHandler.java index 636f87af3..c1007b1fe 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/engine/impl/StateMachineHandler.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/engine/impl/StateMachineHandler.java @@ -38,13 +38,12 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * This handler holds and manages state machines for each policy in an Apex engine. When the class - * is instantiated, an executor {@link StateMachineExecutor} is created for each policy in the - * policy model the state machine handler will execute. The executors for each policy are held in a - * map indexed by event. + * This handler holds and manages state machines for each policy in an Apex engine. When the class is instantiated, an + * executor {@link StateMachineExecutor} is created for each policy in the policy model the state machine handler will + * execute. The executors for each policy are held in a map indexed by event. * - * <p>When an event is received on the policy, the state machine executor to execute that event is - * looked up on the executor map and the event is passed to the executor for execution. + * <p>When an event is received on the policy, the state machine executor to execute that event is looked up on the + * executor map and the event is passed to the executor for execution. * * @author Liam Fallon * @@ -111,8 +110,7 @@ public class StateMachineHandler { } /** - * This constructor starts the state machines for each policy, carrying out whatever - * initialization executors need. + * This constructor starts the state machines for each policy, carrying out whatever initialization executors need. * * @throws StateMachineException On state machine initiation errors */ @@ -127,8 +125,7 @@ public class StateMachineHandler { final String stateMachineId = smExecutor.getContext().getKey().getId(); String message = "start()<-" + key.getId() + ", start failed, state machine \"" + stateMachineId + "\""; LOGGER.warn(message, e); - throw new StateMachineException( - message, e); + throw new StateMachineException(message, e); } } @@ -159,7 +156,8 @@ public class StateMachineHandler { // Run the state machine try { LOGGER.debug("execute(): state machine \"{}\" execution starting . . .", stateMachineExecutor); - final EnEvent outputObject = stateMachineExecutor.execute(event.getExecutionId(), event); + final EnEvent outputObject = + stateMachineExecutor.execute(event.getExecutionId(), event.getExecutionProperties(), event); LOGGER.debug("execute()<-: state machine \"{}\" execution completed", stateMachineExecutor); return outputObject; diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/event/EnEvent.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/event/EnEvent.java index c510763cc..b7afedfea 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/event/EnEvent.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/event/EnEvent.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Properties; import java.util.Random; import java.util.Set; @@ -70,6 +71,9 @@ public class EnEvent extends HashMap<String, Object> { // be reset private long executionId = rand.nextLong(); + // Event related properties used during processing of this event + private Properties executionProperties; + // A string holding a message that indicates why processing of this event threw an exception private String exceptionMessage; @@ -89,7 +93,7 @@ public class EnEvent extends HashMap<String, Object> { */ public EnEvent(final AxEvent axEvent) { super(); - + if (axEvent == null) { throw new EnException("event definition is null or was not found in model service"); } @@ -160,6 +164,24 @@ public class EnEvent extends HashMap<String, Object> { } /** + * Get the event execution properties. + * + * @return the event execution properties + */ + public Properties getExecutionProperties() { + return executionProperties; + } + + /** + * Set the event execution properties. + * + * @param executionProperties the execution properties to set + */ + public void setExecutionProperties(Properties executionProperties) { + this.executionProperties = executionProperties; + } + + /** * Gets the exception message explaining why processing of this event to fail. * * @return the exception message @@ -177,7 +199,6 @@ public class EnEvent extends HashMap<String, Object> { this.exceptionMessage = exceptionMessage; } - /** * Get the user artifact stack of the event. * diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/Executor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/Executor.java index 7a026edf7..fa0b40e77 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/Executor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/Executor.java @@ -20,6 +20,8 @@ package org.onap.policy.apex.core.engine.executor; +import java.util.Properties; + import org.onap.policy.apex.core.engine.ExecutorParameters; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; import org.onap.policy.apex.model.basicmodel.concepts.ApexException; @@ -65,20 +67,22 @@ public interface Executor<I, O, S, C> { * Executes the executor, running through its context in its natural order. * * @param executionId the execution ID of the current APEX execution policy thread + * @param executionProperties the execution properties to set * @param incomingEntity the incoming entity that triggers execution * @return The outgoing entity that is the result of execution * @throws ApexException on an execution error */ - O execute(long executionId, I incomingEntity) throws ApexException; + O execute(long executionId, Properties executionProperties, I incomingEntity) throws ApexException; /** * Carry out the preparatory work for execution. * * @param executionId the execution ID of the current APEX execution policy thread + * @param executionProperties the execution properties to set * @param incomingEntity the incoming entity that triggers execution * @throws ApexException on an execution error */ - void executePre(long executionId, I incomingEntity) throws ApexException; + void executePre(long executionId, Properties executionProperties, I incomingEntity) throws ApexException; /** * Carry out the post work for execution, the returning entity should be set by the child diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateExecutor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateExecutor.java index 28ea13ea7..069c750c0 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateExecutor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateExecutor.java @@ -23,6 +23,7 @@ package org.onap.policy.apex.core.engine.executor; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Properties; import java.util.TreeMap; import org.onap.policy.apex.context.ContextException; @@ -84,18 +85,14 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap /** * Constructor, save the executor factory. * - * @param executorFactory the executor factory to use for getting executors for task selection - * logic + * @param executorFactory the executor factory to use for getting executors for task selection logic */ public StateExecutor(final ExecutorFactory executorFactory) { this.executorFactory = executorFactory; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setContext(org.onap.policy.apex.core. - * engine.executor.Executor, java.lang.Object, java.lang.Object) + /** + * {@inheritDoc} */ @Override public void setContext(final Executor<?, ?, ?, ?> incomingParent, final AxState incomingAxState, @@ -145,10 +142,8 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { @@ -164,15 +159,12 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public StateOutput execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public StateOutput execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { this.lastIncomingEvent = incomingEvent; // Check that the incoming event matches the trigger for this state @@ -188,7 +180,7 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap // There may be no task selection logic, in which case just return the default task if (taskSelectExecutor != null) { // Fire the task selector to find the task to run - taskKey = taskSelectExecutor.execute(executionId, incomingEvent); + taskKey = taskSelectExecutor.execute(executionId, executionProperties, incomingEvent); } // If there's no task selection logic or the TSL returned no task, just use the default @@ -201,7 +193,7 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap final TreeMap<String, Object> incomingValues = new TreeMap<>(); incomingValues.putAll(incomingEvent); final Map<String, Object> taskExecutionResultMap = - taskExecutorMap.get(taskKey).execute(executionId, incomingValues); + taskExecutorMap.get(taskKey).execute(executionId, executionProperties, incomingValues); final AxTask task = taskExecutorMap.get(taskKey).getSubject(); // Check if this task has direct output @@ -220,7 +212,7 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap // Execute the state finalizer logic to select a state output and to adjust the // taskExecutionResultMap stateOutputName = - finalizerLogicExecutor.execute(incomingEvent.getExecutionId(), taskExecutionResultMap); + finalizerLogicExecutor.execute(executionId, executionProperties, taskExecutionResultMap); } // Now look up the the actual state output @@ -242,6 +234,7 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap // Set the ExecutionID for the outgoing event to the value in the incoming event. if (stateOutput.getOutputEvent() != null) { stateOutput.getOutputEvent().setExecutionId(incomingEvent.getExecutionId()); + stateOutput.getOutputEvent().setExecutionProperties(incomingEvent.getExecutionProperties()); } // That's it, the state execution is complete @@ -255,31 +248,22 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public final void executePre(final long executionId, final EnEvent incomingEntity) throws StateMachineException { + public final void executePre(final long executionId, final Properties executionProperties, + final EnEvent incomingEntity) throws StateMachineException { throw new StateMachineException("execution pre work not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePost(boolean) - */ @Override public final void executePost(final boolean returnValue) throws StateMachineException { throw new StateMachineException("execution post work not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { @@ -294,94 +278,72 @@ public class StateExecutor implements Executor<EnEvent, StateOutput, AxState, Ap } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getKey() + /** + * {@inheritDoc} */ @Override public AxReferenceKey getKey() { return axState.getKey(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getParent() + /** + * {@inheritDoc} */ @Override public Executor<?, ?, ?, ?> getParent() { return parent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + /** + * {@inheritDoc} */ @Override public AxState getSubject() { return axState; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getContext() + /** + * {@inheritDoc} */ @Override public final ApexInternalContext getContext() { return context; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getIncoming() + /** + * {@inheritDoc} */ @Override public final EnEvent getIncoming() { return lastIncomingEvent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getOutgoing() + /** + * {@inheritDoc} */ @Override public final StateOutput getOutgoing() { return lastStateOutput; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine. - * executor.Executor) + /** + * {@inheritDoc} */ @Override public final void setNext(final Executor<EnEvent, StateOutput, AxState, ApexInternalContext> incomingNextExecutor) { this.nextExecutor = incomingNextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getNext() + /** + * {@inheritDoc} */ @Override public final Executor<EnEvent, StateOutput, AxState, ApexInternalContext> getNext() { return nextExecutor; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. - * engine. ExecutorParameters) + /** + * {@inheritDoc} */ @Override public void setParameters(final ExecutorParameters parameters) { diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutor.java index 2e6d96143..d406ac9ec 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutor.java @@ -24,6 +24,7 @@ package org.onap.policy.apex.core.engine.executor; import static org.onap.policy.common.utils.validation.Assertions.argumentOfClassNotNull; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.ExecutorParameters; @@ -44,7 +45,7 @@ import org.slf4j.ext.XLoggerFactory; * @author Liam Fallon (liam.fallon@ericsson.com) */ public abstract class StateFinalizerExecutor - implements Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> { + implements Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> { // Logger for this class private static final XLogger LOGGER = XLoggerFactory.getXLogger(StateFinalizerExecutor.class); @@ -77,76 +78,64 @@ public abstract class StateFinalizerExecutor return executionContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setContext(org.onap.policy.apex.core. - * engine.executor.Executor, java.lang.Object, java.lang.Object) + /** + * {@inheritDoc} */ @Override public void setContext(final Executor<?, ?, ?, ?> incomingParent, - final AxStateFinalizerLogic incomingFinalizerLogic, - final ApexInternalContext incomingInternalContext) { + final AxStateFinalizerLogic incomingFinalizerLogic, final ApexInternalContext incomingInternalContext) { this.parent = incomingParent; axState = (AxState) parent.getSubject(); this.finalizerLogic = incomingFinalizerLogic; this.internalContext = incomingInternalContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { LOGGER.debug("prepare:" + finalizerLogic.getId() + "," + finalizerLogic.getLogicFlavour() + "," - + finalizerLogic.getLogic()); + + finalizerLogic.getLogic()); argumentOfClassNotNull(finalizerLogic.getLogic(), StateMachineException.class, - "state finalizer logic cannot be null."); + "state finalizer logic cannot be null."); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public String execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { throw new StateMachineException("execute() not implemented on abstract StateFinalizerExecutionContext class, " - + "only on its subclasses"); + + "only on its subclasses"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public final void executePre(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public final void executePre(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { LOGGER.debug("execute-pre:" + finalizerLogic.getLogicFlavour() + "," + getSubject().getId() + "," - + finalizerLogic.getLogic()); + + finalizerLogic.getLogic()); // Record the incoming fields this.incomingFields = newIncomingFields; // Get state finalizer context object - executionContext = new StateFinalizerExecutionContext(this, executionId, axState, getIncoming(), - axState.getStateOutputs().keySet(), getContext()); + executionContext = new StateFinalizerExecutionContext(this, executionId, executionProperties, axState, + getIncoming(), axState.getStateOutputs().keySet(), getContext()); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePost(boolean) + /** + * {@inheritDoc} */ @Override public final void executePost(final boolean returnValue) throws StateMachineException, ContextException { if (!returnValue) { String errorMessage = "execute-post: state finalizer logic execution failure on state \"" + axState.getId() - + "\" on finalizer logic " + finalizerLogic.getId(); + + "\" on finalizer logic " + finalizerLogic.getId(); if (executionContext.getMessage() != null) { errorMessage += ", user message: " + executionContext.getMessage(); } @@ -163,79 +152,65 @@ public abstract class StateFinalizerExecutor if (!axState.getStateOutputs().keySet().contains(getOutgoing())) { LOGGER.warn(EXECUTE_POST_SFL + finalizerLogic.getId() + "\" selected output state \"" + getOutgoing() - + "\" that does not exsist on state \"" + axState.getId() + "\""); + + "\" that does not exsist on state \"" + axState.getId() + "\""); throw new StateMachineException(EXECUTE_POST_SFL + finalizerLogic.getId() + "\" selected output state \"" - + getOutgoing() + "\" that does not exsist on state \"" + axState.getId() + "\""); + + getOutgoing() + "\" that does not exsist on state \"" + axState.getId() + "\""); } LOGGER.debug("execute-post:{}, returning state output \"{}\" and fields {}", finalizerLogic.getId(), - getOutgoing(), incomingFields); + getOutgoing(), incomingFields); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { throw new StateMachineException("cleanUp() not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getKey() + /** + * {@inheritDoc} */ @Override public AxReferenceKey getKey() { return finalizerLogic.getKey(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getParent() + /** + * {@inheritDoc} */ @Override public Executor<?, ?, ?, ?> getParent() { return parent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + /** + * {@inheritDoc} */ @Override public AxStateFinalizerLogic getSubject() { return finalizerLogic; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getContext() + /** + * {@inheritDoc} */ @Override public ApexInternalContext getContext() { return internalContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getIncoming() + /** + * {@inheritDoc} */ @Override public Map<String, Object> getIncoming() { return incomingFields; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getOutgoing() + /** + * {@inheritDoc} */ @Override public String getOutgoing() { @@ -246,35 +221,26 @@ public abstract class StateFinalizerExecutor } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine. - * executor.Executor) + /** + * {@inheritDoc} */ @Override public void setNext( - final Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> inNextEx) { + final Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> inNextEx) { this.nextExecutor = inNextEx; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getNext() + /** + * {@inheritDoc} */ @Override public Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> getNext() { return nextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. engine. - * ExecutorParameters) + /** + * {@inheritDoc} */ @Override - public void setParameters(final ExecutorParameters parameters) { - } + public void setParameters(final ExecutorParameters parameters) {} } diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutor.java index 34ba3942c..afc888e8d 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutor.java @@ -21,6 +21,7 @@ package org.onap.policy.apex.core.engine.executor; import java.util.Map; +import java.util.Properties; import java.util.TreeMap; import org.onap.policy.apex.context.ContextException; @@ -59,8 +60,7 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy private ExecutorFactory executorFactory = null; /** - * Constructor, save the executor factory that will give us executors for task selection logic - * and task logic. + * Constructor, save the executor factory that will give us executors for task selection logic and task logic. * * @param executorFactory the executor factory * @param owner the artifact key of the owner of this state machine @@ -69,11 +69,8 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy this.executorFactory = executorFactory; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setContext(org.onap.policy.apex.core. - * engine.executor.Executor, java.lang.Object, java.lang.Object) + /** + * {@inheritDoc} */ @Override public void setContext(final Executor<?, ?, ?, ?> newParent, final AxPolicy newAxPolicy, @@ -109,10 +106,8 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { @@ -121,14 +116,11 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executeDirected(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public EnEvent execute(final long executionId, final EnEvent incomingEvent) + public EnEvent execute(final long executionId, final Properties executionProperties, final EnEvent incomingEvent) throws StateMachineException, ContextException { // Check if there are any states on the state machine if (stateExecutorMap.size() == 0) { @@ -145,9 +137,10 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy StateExecutor stateExecutor = firstExecutor; StateOutput stateOutput = new StateOutput(new AxStateOutput(firstExecutor.getSubject().getKey(), incomingEvent.getKey(), firstExecutor.getSubject().getKey()), incomingEvent); + while (true) { // Execute the state, it returns an output or throws an exception - stateOutput = stateExecutor.execute(executionId, stateOutput.getOutputEvent()); + stateOutput = stateExecutor.execute(executionId, executionProperties, stateOutput.getOutputEvent()); // Use the next state of the state output to find if all the states have executed if (stateOutput.getNextState().equals(AxReferenceKey.getNullKey())) { @@ -165,31 +158,25 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy return stateOutput.getOutputEvent(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public final void executePre(final long executionId, final EnEvent incomingEntity) throws StateMachineException { + public final void executePre(final long executionId, final Properties executionProperties, + final EnEvent incomingEntity) throws StateMachineException { throw new StateMachineException("execution pre work not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePost(boolean) + /** + * {@inheritDoc} */ @Override public final void executePost(final boolean returnValue) throws StateMachineException { throw new StateMachineException("execution post work not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { @@ -198,94 +185,72 @@ public class StateMachineExecutor implements Executor<EnEvent, EnEvent, AxPolicy } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getKey() + /** + * {@inheritDoc} */ @Override public AxArtifactKey getKey() { return axPolicy.getKey(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getParent() + /** + * {@inheritDoc} */ @Override public final Executor<?, ?, ?, ?> getParent() { return parent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + /** + * {@inheritDoc} */ @Override public final AxPolicy getSubject() { return axPolicy; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getContext() + /** + * {@inheritDoc} */ @Override public final ApexInternalContext getContext() { return internalContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getIncoming() + /** + * {@inheritDoc} */ @Override public final EnEvent getIncoming() { return null; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getOutgoing() + /** + * {@inheritDoc} */ @Override public final EnEvent getOutgoing() { return null; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine. - * executor.Executor) + /** + * {@inheritDoc} */ @Override public final void setNext(final Executor<EnEvent, EnEvent, AxPolicy, ApexInternalContext> newNextExecutor) { this.nextExecutor = newNextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getNext() + /** + * {@inheritDoc} */ @Override public final Executor<EnEvent, EnEvent, AxPolicy, ApexInternalContext> getNext() { return nextExecutor; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. - * engine. ExecutorParameters) + /** + * {@inheritDoc} */ @Override public void setParameters(final ExecutorParameters parameters) { diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskExecutor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskExecutor.java index 9c21dc570..0aade5ff1 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskExecutor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskExecutor.java @@ -25,6 +25,7 @@ import static org.onap.policy.common.utils.validation.Assertions.argumentOfClass import java.util.Iterator; import java.util.Map; +import java.util.Properties; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; @@ -49,7 +50,7 @@ import org.slf4j.ext.XLoggerFactory; * @author Liam Fallon (liam.fallon@ericsson.com) */ public abstract class TaskExecutor - implements Executor<Map<String, Object>, Map<String, Object>, AxTask, ApexInternalContext> { + implements Executor<Map<String, Object>, Map<String, Object>, AxTask, ApexInternalContext> { // Logger for this class private static final XLogger LOGGER = XLoggerFactory.getXLogger(TaskExecutor.class); @@ -79,55 +80,46 @@ public abstract class TaskExecutor return executionContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setContext(org.onap.policy.apex.core. - * engine.executor.Executor, java.lang.Object, java.lang.Object) + /** + * {@inheritDoc} */ @Override public void setContext(final Executor<?, ?, ?, ?> newParent, final AxTask newAxTask, - final ApexInternalContext newInternalContext) { + final ApexInternalContext newInternalContext) { this.parent = newParent; this.axTask = newAxTask; this.internalContext = newInternalContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { LOGGER.debug("prepare:" + axTask.getKey().getId() + "," + axTask.getTaskLogic().getLogicFlavour() + "," - + axTask.getTaskLogic().getLogic()); + + axTask.getTaskLogic().getLogic()); argumentOfClassNotNull(axTask.getTaskLogic().getLogic(), StateMachineException.class, - "task logic cannot be null."); + "task logic cannot be null."); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { throw new StateMachineException( - "execute() not implemented on abstract TaskExecutor class, only on its subclasses"); + "execute() not implemented on abstract TaskExecutor class, only on its subclasses"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public final void executePre(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public final void executePre(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { LOGGER.debug("execute-pre:" + getSubject().getTaskLogic().getLogicFlavour() + "," - + getSubject().getKey().getId() + "," + getSubject().getTaskLogic().getLogic()); + + getSubject().getKey().getId() + "," + getSubject().getTaskLogic().getLogic()); // Check that the incoming event has all the input fields for this state final Set<String> missingTaskInputFields = new TreeSet<>(axTask.getInputFields().keySet()); @@ -136,7 +128,7 @@ public abstract class TaskExecutor // Remove fields from the set that are optional final Set<String> optionalFields = new TreeSet<>(); for (final Iterator<String> missingFieldIterator = missingTaskInputFields.iterator(); missingFieldIterator - .hasNext();) { + .hasNext();) { final String missingField = missingFieldIterator.next(); if (axTask.getInputFields().get(missingField).getOptional()) { optionalFields.add(missingField); @@ -145,7 +137,7 @@ public abstract class TaskExecutor missingTaskInputFields.removeAll(optionalFields); if (!missingTaskInputFields.isEmpty()) { throw new StateMachineException("task input fields \"" + missingTaskInputFields - + "\" are missing for task \"" + axTask.getKey().getId() + "\""); + + "\" are missing for task \"" + axTask.getKey().getId() + "\""); } // Record the incoming fields @@ -158,20 +150,18 @@ public abstract class TaskExecutor } // Get task context object - executionContext = new TaskExecutionContext(this, executionId, getSubject(), getIncoming(), getOutgoing(), - getContext()); + executionContext = new TaskExecutionContext(this, executionId, executionProperties, getSubject(), getIncoming(), + getOutgoing(), getContext()); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePost(boolean) + /** + * {@inheritDoc} */ @Override public final void executePost(final boolean returnValue) throws StateMachineException, ContextException { if (!returnValue) { String errorMessage = "execute-post: task logic execution failure on task \"" + axTask.getKey().getName() - + "\" in model " + internalContext.getKey().getId(); + + "\" in model " + internalContext.getKey().getId(); if (executionContext.getMessage() != null) { errorMessage += ", user message: " + executionContext.getMessage(); } @@ -194,17 +184,17 @@ public abstract class TaskExecutor // Remove fields from the set that are optional final Set<String> optionalOrCopiedFields = new TreeSet<>(); for (final Iterator<String> missingFieldIterator = missingTaskOutputFields.iterator(); missingFieldIterator - .hasNext();) { + .hasNext();) { final String missingField = missingFieldIterator.next(); if (axTask.getInputFields().containsKey(missingField) - || axTask.getOutputFields().get(missingField).getOptional()) { + || axTask.getOutputFields().get(missingField).getOptional()) { optionalOrCopiedFields.add(missingField); } } missingTaskOutputFields.removeAll(optionalOrCopiedFields); if (!missingTaskOutputFields.isEmpty()) { throw new StateMachineException("task output fields \"" + missingTaskOutputFields - + "\" are missing for task \"" + axTask.getKey().getId() + "\""); + + "\" are missing for task \"" + axTask.getKey().getId() + "\""); } // Finally, check that the outgoing field map don't have any extra fields, if present, raise @@ -214,7 +204,7 @@ public abstract class TaskExecutor extraTaskOutputFields.removeAll(axTask.getOutputFields().keySet()); if (!extraTaskOutputFields.isEmpty()) { throw new StateMachineException("task output fields \"" + extraTaskOutputFields - + "\" are unwanted for task \"" + axTask.getKey().getId() + "\""); + + "\" are unwanted for task \"" + axTask.getKey().getId() + "\""); } String message = "execute-post:" + axTask.getKey().getId() + ", returning fields " + outgoingFields.toString(); @@ -246,105 +236,81 @@ public abstract class TaskExecutor getOutgoing().put(field, getIncoming().get(field)); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { throw new StateMachineException("cleanUp() not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getKey() + /** + * {@inheritDoc} */ @Override public AxArtifactKey getKey() { return axTask.getKey(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getParent() + /** + * {@inheritDoc} */ @Override public Executor<?, ?, ?, ?> getParent() { return parent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + /** + * {@inheritDoc} */ @Override public AxTask getSubject() { return axTask; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getContext() + /** + * {@inheritDoc} */ @Override public ApexInternalContext getContext() { return internalContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getIncoming() + /** + * {@inheritDoc} */ @Override public Map<String, Object> getIncoming() { return incomingFields; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getOutgoing() + /** + * {@inheritDoc} */ @Override public Map<String, Object> getOutgoing() { return outgoingFields; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine. - * executor.Executor) + /** + * {@inheritDoc} */ @Override - public void setNext( - final Executor<Map<String, Object>, Map<String, Object>, AxTask, ApexInternalContext> nextEx) { + public void setNext(final Executor<Map<String, Object>, Map<String, Object>, AxTask, ApexInternalContext> nextEx) { this.nextExecutor = nextEx; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getNext() + /** + * {@inheritDoc} */ @Override public Executor<Map<String, Object>, Map<String, Object>, AxTask, ApexInternalContext> getNext() { return nextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. engine. - * ExecutorParameters) + /** + * {@inheritDoc} */ @Override - public void setParameters(final ExecutorParameters parameters) { - } + public void setParameters(final ExecutorParameters parameters) {} } diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutor.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutor.java index 3439655c9..66ffa9b32 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutor.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutor.java @@ -23,6 +23,8 @@ package org.onap.policy.apex.core.engine.executor; import static org.onap.policy.common.utils.validation.Assertions.argumentNotNull; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.ExecutorParameters; import org.onap.policy.apex.core.engine.context.ApexInternalContext; @@ -36,8 +38,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * This abstract class executes a the task selection logic of a state of an Apex policy and is - * specialized by classes that implement execution of task selection logic. + * This abstract class executes a the task selection logic of a state of an Apex policy and is specialized by classes + * that implement execution of task selection logic. * * @author Sven van der Meer (sven.van.der.meer@ericsson.com) * @author Liam Fallon (liam.fallon@ericsson.com) @@ -72,11 +74,8 @@ public abstract class TaskSelectExecutor implements Executor<EnEvent, AxArtifact return executionContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#setContext(org.onap.policy.apex.core. - * engine.executor.Executor, java.lang.Object, java.lang.Object) + /** + * {@inheritDoc} */ @Override public void setContext(final Executor<?, ?, ?, ?> newParent, final AxState newAxState, @@ -86,10 +85,8 @@ public abstract class TaskSelectExecutor implements Executor<EnEvent, AxArtifact this.context = newContext; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { @@ -98,26 +95,21 @@ public abstract class TaskSelectExecutor implements Executor<EnEvent, AxArtifact argumentNotNull(axState.getTaskSelectionLogic().getLogic(), "task selection logic cannot be null."); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent newIncomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent newIncomingEvent) throws StateMachineException, ContextException { throw new StateMachineException("execute() not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, - * java.lang.Object) + /** + * {@inheritDoc} */ @Override - public final void executePre(final long executionId, final EnEvent newIncomingEvent) throws StateMachineException { + public final void executePre(final long executionId, final Properties executionProperties, + final EnEvent newIncomingEvent) throws StateMachineException { LOGGER.debug("execute-pre:" + axState.getKey().getId() + "," + axState.getTaskSelectionLogic().getLogicFlavour() + "," + axState.getTaskSelectionLogic().getLogic()); @@ -131,10 +123,8 @@ public abstract class TaskSelectExecutor implements Executor<EnEvent, AxArtifact getOutgoing(), getContext()); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executePost(boolean) + /** + * {@inheritDoc} */ @Override public final void executePost(final boolean returnValue) throws StateMachineException { @@ -164,104 +154,80 @@ public abstract class TaskSelectExecutor implements Executor<EnEvent, AxArtifact LOGGER.debug("execute-post:" + axState.getKey().getId() + "," + ", returning task " + outgoingTaskKey.getId()); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { throw new StateMachineException("cleanUp() not implemented on class"); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getKey() + /** + * {@inheritDoc} */ @Override public AxReferenceKey getKey() { return axState.getKey(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getParent() + /** + * {@inheritDoc} */ @Override public Executor<?, ?, ?, ?> getParent() { return parent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + /** + * {@inheritDoc} */ @Override public AxState getSubject() { return axState; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getContext() + /** + * {@inheritDoc} */ @Override public ApexInternalContext getContext() { return context; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine. - * executor.Executor) + /** + * {@inheritDoc} */ @Override public void setNext(final Executor<EnEvent, AxArtifactKey, AxState, ApexInternalContext> newNextExecutor) { this.nextExecutor = newNextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getNext() + /** + * {@inheritDoc} */ @Override public Executor<EnEvent, AxArtifactKey, AxState, ApexInternalContext> getNext() { return nextExecutor; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getIncoming() + /** + * {@inheritDoc} */ @Override public EnEvent getIncoming() { return incomingEvent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getOutgoing() + /** + * {@inheritDoc} */ @Override public AxArtifactKey getOutgoing() { return outgoingTaskKey; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. - * engine. ExecutorParameters) + /** + * {@inheritDoc} */ @Override public void setParameters(final ExecutorParameters parameters) {} diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContext.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContext.java index 460639b90..5efd47e53 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContext.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContext.java @@ -23,6 +23,7 @@ package org.onap.policy.apex.core.engine.executor.context; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Set; import java.util.TreeMap; @@ -38,16 +39,15 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * Container class for the execution context for state finalizer logic executions in a state being - * executed in an Apex engine. The state finalizer must have easy access to the state definition, - * the fields, as well as the policy, global, and external context. + * Container class for the execution context for state finalizer logic executions in a state being executed in an Apex + * engine. The state finalizer must have easy access to the state definition, the fields, as well as the policy, global, + * and external context. * * @author Sven van der Meer (sven.van.der.meer@ericsson.com) */ public class StateFinalizerExecutionContext { /** - * Logger for state finalizer execution, state finalizer logic can use this field to access and - * log to Apex logging. + * Logger for state finalizer execution, state finalizer logic can use this field to access and log to Apex logging. */ private static final XLogger EXCEUTION_LOGGER = XLoggerFactory.getXLogger("org.onap.policy.apex.executionlogging.StateFinalizerExecutionLogging"); @@ -60,17 +60,19 @@ public class StateFinalizerExecutionContext { /** the execution ID for the current APEX policy execution instance. */ public final Long executionId; + /** the execution properties the current APEX policy execution instance. */ + public final Properties executionProperties; + /** - * The list of state outputs for this state finalizer. The purpose of a state finalizer is to - * select a state output for a state from this list of state output names. + * The list of state outputs for this state finalizer. The purpose of a state finalizer is to select a state output + * for a state from this list of state output names. */ public final Set<String> stateOutputNames; /** - * The fields of this state finalizer. A state finalizer receives this list of fields from a - * task and may use these fields to determine what state output to select. Once a state - * finalizer has selected a state output, it must marshal these fields so that they match the - * fields required for the event defined in the state output. + * The fields of this state finalizer. A state finalizer receives this list of fields from a task and may use these + * fields to determine what state output to select. Once a state finalizer has selected a state output, it must + * marshal these fields so that they match the fields required for the event defined in the state output. */ public final Map<String, Object> fields; @@ -78,15 +80,13 @@ public class StateFinalizerExecutionContext { private String message; /** - * The state output that the state finalizer logic has selected for a state. The state finalizer - * logic sets this field in its logic after executing and the Apex engine uses this state output - * for this state. + * The state output that the state finalizer logic has selected for a state. The state finalizer logic sets this + * field in its logic after executing and the Apex engine uses this state output for this state. */ private String selectedStateOutputName; /** - * Logger for state finalizer execution, state finalizer logic can use this field to access and - * log to Apex logging. + * Logger for state finalizer execution, state finalizer logic can use this field to access and log to Apex logging. */ public final XLogger logger = EXCEUTION_LOGGER; @@ -100,20 +100,20 @@ public class StateFinalizerExecutionContext { * * @param stateFinalizerExecutor the state finalizer executor that requires context * @param executionId the execution ID for the current APEX policy execution instance + * @param executionProperties the execution properties for task execution * @param axState the state definition that is the subject of execution * @param fields the fields to be manipulated by the state finalizer - * @param stateOutputNames the state output names, one of which will be selected by the state - * finalizer - * @param internalContext the execution context of the Apex engine in which the task is being - * executed + * @param stateOutputNames the state output names, one of which will be selected by the state finalizer + * @param internalContext the execution context of the Apex engine in which the task is being executed */ public StateFinalizerExecutionContext(final StateFinalizerExecutor stateFinalizerExecutor, final long executionId, - final AxState axState, final Map<String, Object> fields, final Set<String> stateOutputNames, - final ApexInternalContext internalContext) { + final Properties executionProperties, final AxState axState, final Map<String, Object> fields, + final Set<String> stateOutputNames, final ApexInternalContext internalContext) { subject = new AxStateFacade(axState); // Execution ID is the current policy execution instance this.executionId = executionId; + this.executionProperties = executionProperties; this.fields = fields; this.stateOutputNames = stateOutputNames; @@ -147,8 +147,7 @@ public class StateFinalizerExecutionContext { * * @param contextAlbumName The context album name * @return The context album - * @throws ContextRuntimeException if the context album does not exist on the state for this - * executor + * @throws ContextRuntimeException if the context album does not exist on the state for this executor */ public ContextAlbum getContextAlbum(final String contextAlbumName) { // Find the context album diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContext.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContext.java index 4a9e83063..6fb55a3e7 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContext.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContext.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.TreeMap; import org.onap.policy.apex.context.ContextAlbum; @@ -38,9 +39,9 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * Container class for the execution context for Task logic executions in a task being executed in - * an Apex engine. The task must have easy access to the task definition, the incoming and outgoing - * field contexts, as well as the policy, global, and external context. + * Container class for the execution context for Task logic executions in a task being executed in an Apex engine. The + * task must have easy access to the task definition, the incoming and outgoing field contexts, as well as the policy, + * global, and external context. * * @author Sven van der Meer (sven.van.der.meer@ericsson.com) */ @@ -65,15 +66,18 @@ public class TaskExecutionContext { /** the execution ID for the current APEX policy execution instance. */ public final Long executionId; + /** the execution properties the current APEX policy execution instance. */ + public final Properties executionProperties; + /** - * The incoming fields from the trigger event for the task. The task logic can access these - * fields when executing its logic. + * The incoming fields from the trigger event for the task. The task logic can access these fields when executing + * its logic. */ public final Map<String, Object> inFields; /** - * The outgoing fields from the task. The task logic can access and set these fields with its - * logic. A task outputs its result using these fields. + * The outgoing fields from the task. The task logic can access and set these fields with its logic. A task outputs + * its result using these fields. */ public final Map<String, Object> outFields; @@ -98,20 +102,21 @@ public class TaskExecutionContext { * * @param taskExecutor the task executor that requires context * @param executionId the execution ID for the current APEX policy execution instance + * @param executionProperties the execution properties for task execution * @param axTask the task definition that is the subject of execution * @param inFields the in fields * @param outFields the out fields - * @param internalContext the execution context of the Apex engine in which the task is being - * executed + * @param internalContext the execution context of the Apex engine in which the task is being executed */ - public TaskExecutionContext(final TaskExecutor taskExecutor, final long executionId, final AxTask axTask, - final Map<String, Object> inFields, final Map<String, Object> outFields, - final ApexInternalContext internalContext) { + public TaskExecutionContext(final TaskExecutor taskExecutor, final long executionId, + final Properties executionProperties, final AxTask axTask, final Map<String, Object> inFields, + final Map<String, Object> outFields, final ApexInternalContext internalContext) { // The subject is the task definition subject = new AxTaskFacade(axTask); // Execution ID is the current policy execution instance this.executionId = executionId; + this.executionProperties = executionProperties; // The input and output fields this.inFields = Collections.unmodifiableMap(inFields); @@ -144,8 +149,7 @@ public class TaskExecutionContext { * * @param contextAlbumName The context album name * @return The context album - * @throws ContextRuntimeException if the context album does not exist on the task for this - * executor + * @throws ContextRuntimeException if the context album does not exist on the task for this executor */ public ContextAlbum getContextAlbum(final String contextAlbumName) { // Find the context album diff --git a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskSelectionExecutionContext.java b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskSelectionExecutionContext.java index 63052348a..10d21a76f 100644 --- a/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskSelectionExecutionContext.java +++ b/core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskSelectionExecutionContext.java @@ -23,6 +23,7 @@ package org.onap.policy.apex.core.engine.executor.context; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.TreeMap; import org.onap.policy.apex.context.ContextAlbum; @@ -65,6 +66,9 @@ public class TaskSelectionExecutionContext { /** the execution ID for the current APEX policy execution instance. */ public final Long executionId; + /** the execution properties the current APEX policy execution instance. */ + public final Properties executionProperties; + /** * The incoming fields from the trigger event for the state. The task selection logic can access * these fields to decide what task to select for the state. @@ -111,6 +115,7 @@ public class TaskSelectionExecutionContext { // Execution ID is the current policy execution instance this.executionId = executionId; + this.executionProperties = incomingEvent.getExecutionProperties(); // The events inFields = incomingEvent; diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/engine/impl/DummySmExecutor.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/engine/impl/DummySmExecutor.java index db8fc32d9..b95e959f0 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/engine/impl/DummySmExecutor.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/engine/impl/DummySmExecutor.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.core.engine.engine.impl; +import java.util.Properties; + import org.onap.policy.apex.core.engine.event.EnEvent; import org.onap.policy.apex.core.engine.executor.ExecutorFactory; import org.onap.policy.apex.core.engine.executor.StateMachineExecutor; @@ -32,10 +34,10 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; public class DummySmExecutor extends StateMachineExecutor { private boolean cleanupWorks = false; private boolean prepareWorks; - + /** * Constructor. - * + * * @param executorFactory the factory for executors * @param owner the owner key */ @@ -43,10 +45,8 @@ public class DummySmExecutor extends StateMachineExecutor { super(executorFactory, owner); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#prepare() + /** + * {@inheritDoc} */ @Override public void prepare() throws StateMachineException { @@ -59,20 +59,16 @@ public class DummySmExecutor extends StateMachineExecutor { } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#executeDirected(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public EnEvent execute(final long executionId, final EnEvent incomingEvent) { + public EnEvent execute(final long executionId, final Properties executionProperties, final EnEvent incomingEvent) { return incomingEvent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyStateFinalizerExecutor.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyStateFinalizerExecutor.java index abc11871e..b4fefc2d9 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyStateFinalizerExecutor.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyStateFinalizerExecutor.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -21,6 +21,7 @@ package org.onap.policy.apex.core.engine.executor; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; @@ -30,34 +31,31 @@ import org.onap.policy.apex.core.engine.executor.exception.StateMachineException */ public class DummyStateFinalizerExecutor extends StateFinalizerExecutor { private boolean override; - + private boolean returnBad; public DummyStateFinalizerExecutor() { this(false); } - + public DummyStateFinalizerExecutor(final boolean override) { this.override = override; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public String execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { - + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { + if (!override) { - super.execute(executionId, newIncomingFields); + super.execute(executionId, executionProperties, newIncomingFields); } - + if (returnBad) { return "stateOutputBad"; - } - else { + } else { return "stateOutput1"; } } diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskExecutor.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskExecutor.java index 93fc6190f..fcfc85f66 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskExecutor.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskExecutor.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -21,6 +21,7 @@ package org.onap.policy.apex.core.engine.executor; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; @@ -48,42 +49,36 @@ public class DummyTaskExecutor extends TaskExecutor { super.prepare(); } } - - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object) + + /** + * {@inheritDoc} */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { if (!override) { - super.execute(executionId, newIncomingFields); + super.execute(executionId, executionProperties, newIncomingFields); } - + AxArtifactKey event0Key = new AxArtifactKey("Event0:0.0.1"); return new EnEvent(event0Key); } - - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#getSubject() + + /** + * {@inheritDoc} */ @Override public AxTask getSubject() { if (!override) { super.getSubject(); } - + AxArtifactKey taskKey = new AxArtifactKey("FirstTask:0.0.1"); return new AxTask(taskKey); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskSelectExecutor.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskSelectExecutor.java index abbb1bd79..03d0b2894 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskSelectExecutor.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/DummyTaskSelectExecutor.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.core.engine.executor; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; @@ -32,7 +34,7 @@ public class DummyTaskSelectExecutor extends TaskSelectExecutor { private boolean override; private static int taskNo; - + public DummyTaskSelectExecutor() { this(false); } @@ -48,30 +50,25 @@ public class DummyTaskSelectExecutor extends TaskSelectExecutor { } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent newIncomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent newIncomingEvent) throws StateMachineException, ContextException { if (!override) { - return super.execute(executionId, newIncomingEvent); + return super.execute(executionId, executionProperties, newIncomingEvent); } - + return new AxArtifactKey("task" + (taskNo++) + ":0.0.1"); } public void setTaskNo(int incomingTaskNo) { taskNo = incomingTaskNo; } - - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.core.engine.executor.Executor#cleanUp() + /** + * {@inheritDoc} */ @Override public void cleanUp() throws StateMachineException { diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateExecutorTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateExecutorTest.java index 08ab03b06..ed5f9135c 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateExecutorTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -56,7 +56,7 @@ public class StateExecutorTest { @Before public void startMocking() { MockitoAnnotations.initMocks(this); - + Mockito.doReturn(new AxReferenceKey("Policy:0.0.1:PolName:State0")).when(axStateMock).getKey(); } @@ -80,7 +80,7 @@ public class StateExecutorTest { assertEquals(null, executor.getNext()); try { - executor.executePre(0, null); + executor.executePre(0, null, null); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("execution pre work not implemented on class", ex.getMessage()); diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutorTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutorTest.java index 82ac610c9..a94fe9e80 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutorTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -63,10 +63,10 @@ public class StateFinalizerExecutorTest { @Before public void startMocking() { MockitoAnnotations.initMocks(this); - + AxState state = new AxState(); state.getStateOutputs().put("ValidOutput", null); - + Mockito.doReturn(state).when(parentMock).getSubject(); Mockito.doReturn(new AxReferenceKey("State:0.0.1:StateName:StateSFL")).when(stateFinalizerLogicMock).getKey(); @@ -117,19 +117,19 @@ public class StateFinalizerExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception ex) { assertEquals("task input fields \"[InField0]\" are missing for task \"Task0:0.0.1\"", ex.getMessage()); } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception e) { fail("test should not throw an exception"); } try { - executor.execute(0, incomingEvent); + executor.execute(0, null, incomingEvent); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("execute() not implemented on abstract StateFinalizerExecutionContext class, " @@ -154,7 +154,7 @@ public class StateFinalizerExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -168,7 +168,7 @@ public class StateFinalizerExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -184,7 +184,7 @@ public class StateFinalizerExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception ex) { fail("test should not throw an exception"); } diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutorTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutorTest.java index f9d3edc6c..c2abd1e96 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutorTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -187,7 +187,7 @@ public class StateMachineExecutorTest { new AxArtifactKey("OwnerKey:0.0.1")); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("no states defined on state machine", ex.getMessage()); @@ -209,7 +209,7 @@ public class StateMachineExecutorTest { assertEquals(null, executor.getNext()); try { - executor.executePre(0, null); + executor.executePre(0, null, null); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("execution pre work not implemented on class", ex.getMessage()); @@ -231,7 +231,7 @@ public class StateMachineExecutorTest { axPolicy.setFirstState("BadState"); executor.setContext(null, axPolicy, internalContextMock); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("first state not defined on state machine", ex.getMessage()); @@ -240,14 +240,14 @@ public class StateMachineExecutorTest { axPolicy.setFirstState("state0"); executor.setContext(null, axPolicy, internalContextMock); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -256,7 +256,7 @@ public class StateMachineExecutorTest { axPolicy.getStateMap().get("State1").getStateOutputs().get("stateOutput1").setNextState(badStateKey); dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("state execution failed, next state \"Policy:0.0.1:PName:BadState\" not found", @@ -267,7 +267,7 @@ public class StateMachineExecutorTest { .setNextState(AxReferenceKey.getNullKey()); dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -275,7 +275,7 @@ public class StateMachineExecutorTest { axPolicy.getStateMap().get("State1").setTrigger(new AxArtifactKey("BadTrigger:0.0.1")); dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("incoming event \"Event1:0.0.1\" does not match trigger \"BadTrigger:0.0.1\" " @@ -285,7 +285,7 @@ public class StateMachineExecutorTest { axPolicy.getStateMap().get("State1").setTrigger(new AxArtifactKey("Event1:0.0.1")); dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -309,7 +309,7 @@ public class StateMachineExecutorTest { dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -334,7 +334,7 @@ public class StateMachineExecutorTest { dummyTsle.setTaskNo(0); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } @@ -342,7 +342,7 @@ public class StateMachineExecutorTest { dummyTsle.setTaskNo(0); dummySfle.setReturnBad(true); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("State execution of state \"Policy:0.0.1:NULL:state1\" on task \"task1:0.0.1\" failed: " @@ -353,7 +353,7 @@ public class StateMachineExecutorTest { dummyTsle.setTaskNo(0); dummySfle.setReturnBad(false); try { - executor.execute(0, incomingEventMock); + executor.execute(0, null, incomingEventMock); } catch (Exception ex) { fail("test should not throw an exception"); } diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskExecutorTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskExecutorTest.java index bfc8e2b6d..a4a0f21ec 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskExecutorTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -158,20 +158,20 @@ public class TaskExecutorTest { Map<String, Object> incomingFields = new LinkedHashMap<>(); try { - executor.executePre(0, incomingFields); + executor.executePre(0, null, incomingFields); } catch (Exception ex) { assertEquals("task input fields \"[InField0]\" are missing for task \"Task0:0.0.1\"", ex.getMessage()); } incomingFields.put("InField0", "A Value"); try { - executor.executePre(0, incomingFields); + executor.executePre(0, null, incomingFields); } catch (Exception e) { fail("test should not throw an exception"); } try { - executor.execute(0, incomingFields); + executor.execute(0, null, incomingFields); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("execute() not implemented on abstract TaskExecutor class, only on its subclasses", diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutorTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutorTest.java index b303df06a..2ee308977 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutorTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -70,7 +70,7 @@ public class TaskSelectExecutorTest { AxReferenceKey state0Key = new AxReferenceKey("State0Parent:0.0.1:Parent:State0"); Mockito.doReturn(state0Key).when(axStateMock).getKey(); Mockito.doReturn(state0Key.getId()).when(axStateMock).getId(); - + Map<AxArtifactKey, AxStateTaskReference> taskReferences = new LinkedHashMap<>(); taskReferences.put(new AxArtifactKey("Task0:0.0.0"), null); taskReferences.put(new AxArtifactKey("Task1:0.0.0"), null); @@ -127,19 +127,19 @@ public class TaskSelectExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception ex) { assertEquals("task input fields \"[InField0]\" are missing for task \"Task0:0.0.1\"", ex.getMessage()); } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception e) { fail("test should not throw an exception"); } try { - executor.execute(0, incomingEvent); + executor.execute(0, null, incomingEvent); fail("test should throw an exception"); } catch (Exception ex) { assertEquals("execute() not implemented on class", ex.getMessage()); @@ -163,7 +163,7 @@ public class TaskSelectExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception e) { fail("test should not throw an exception"); } @@ -176,7 +176,7 @@ public class TaskSelectExecutorTest { } try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception e) { fail("test should not throw an exception"); } @@ -189,15 +189,15 @@ public class TaskSelectExecutorTest { assertEquals("task \"IDontExist:0.0.0\" returned by task selection logic not defined " + "on state \"State0Parent:0.0.1:Parent:State0\"", ex.getMessage()); } - + try { - executor.executePre(0, incomingEvent); + executor.executePre(0, null, incomingEvent); } catch (Exception e) { fail("test should not throw an exception"); } executor.getOutgoing().setName("Task0"); - + try { executor.executePost(true); assertEquals("Task0", executor.getOutgoing().getName()); diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContextTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContextTest.java index 8b0710ec7..fe437b823 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContextTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContextTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -89,7 +89,7 @@ public class StateFinalizerExecutionContextTest { final Map<String, Object> fields = new LinkedHashMap<>(); final Set<String> stateOutputNames = new LinkedHashSet<>(); - StateFinalizerExecutionContext sfec = new StateFinalizerExecutionContext(stateFinalizerExecutorMock, 0, + StateFinalizerExecutionContext sfec = new StateFinalizerExecutionContext(stateFinalizerExecutorMock, 0, null, axStateMock, fields, stateOutputNames, internalContextMock); assertNotNull(sfec); diff --git a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContextTest.java b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContextTest.java index c6c196a01..29c536ed4 100644 --- a/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContextTest.java +++ b/core/core-engine/src/test/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContextTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -87,7 +87,7 @@ public class TaskExecutionContextTest { final Map<String, Object> inFields = new LinkedHashMap<>(); final Map<String, Object> outFields = new LinkedHashMap<>(); - TaskExecutionContext tec = new TaskExecutionContext(taskExecutorMock, 0, axTaskMock, inFields, outFields, + TaskExecutionContext tec = new TaskExecutionContext(taskExecutorMock, 0, null, axTaskMock, inFields, outFields, internalContextMock); assertNotNull(tec); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java index 303165558..3fd39eedf 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java @@ -142,10 +142,8 @@ public class ApexJmsConsumer implements MessageListener, ApexEventConsumer, Runn } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#start() + /** + * {@inheritDoc} */ @Override public void start() { @@ -156,21 +154,16 @@ public class ApexJmsConsumer implements MessageListener, ApexEventConsumer, Runn consumerThread.start(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getName() + /** + * {@inheritDoc} */ @Override public String getName() { return name; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getPeeredReference(org.onap.policy.apex.service. - * parameters. eventhandler.EventHandlerPeeredMode) + /** + * {@inheritDoc} */ @Override public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) { @@ -231,10 +224,8 @@ public class ApexJmsConsumer implements MessageListener, ApexEventConsumer, Runn } } - /* - * (non-Javadoc) - * - * @see javax.jms.MessageListener#onMessage(javax.jms.Message) + /** + * {@inheritDoc} */ @Override public void onMessage(final Message jmsMessage) { @@ -245,7 +236,7 @@ public class ApexJmsConsumer implements MessageListener, ApexEventConsumer, Runn jmsMessage.getJMSType()); } - eventReceiver.receiveEvent(jmsMessage); + eventReceiver.receiveEvent(null, jmsMessage); } catch (final Exception e) { final String errorMessage = "failed to receive message from JMS"; LOGGER.warn(errorMessage, e); @@ -253,10 +244,8 @@ public class ApexJmsConsumer implements MessageListener, ApexEventConsumer, Runn } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.apps.uservice.producer.ApexEventProducer#stop() + /** + * {@inheritDoc} */ @Override public void stop() { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java index 4dcbf80c8..e98ee8ff8 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java @@ -23,6 +23,7 @@ package org.onap.policy.apex.plugins.event.carrier.jms; import java.io.Serializable; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -82,13 +83,13 @@ public class ApexJmsProducer implements ApexEventProducer { */ @Override public void init(final String producerName, final EventHandlerParameters producerParameters) - throws ApexEventException { + throws ApexEventException { this.name = producerName; // Check and get the JMS Properties if (!(producerParameters.getCarrierTechnologyParameters() instanceof JmsCarrierTechnologyParameters)) { - final String errorMessage = "specified producer properties are not applicable to a JMS producer (" - + this.name + ")"; + final String errorMessage = + "specified producer properties are not applicable to a JMS producer (" + this.name + ")"; LOGGER.warn(errorMessage); throw new ApexEventException(errorMessage); } @@ -104,13 +105,13 @@ public class ApexJmsProducer implements ApexEventProducer { // Check if we actually got a connection factory if (connectionFactory == null) { throw new IllegalArgumentException( - "JMS context lookup of \"" + jmsProducerProperties.getConnectionFactory() - + "\" returned null for producer (" + this.name + ")"); + "JMS context lookup of \"" + jmsProducerProperties.getConnectionFactory() + + "\" returned null for producer (" + this.name + ")"); } } catch (final Exception e) { final String errorMessage = "lookup of JMS connection factory \"" - + jmsProducerProperties.getConnectionFactory() + "\" failed for JMS producer properties \"" - + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; + + jmsProducerProperties.getConnectionFactory() + "\" failed for JMS producer properties \"" + + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); } @@ -123,12 +124,12 @@ public class ApexJmsProducer implements ApexEventProducer { // Check if we actually got a topic if (jmsOutgoingTopic == null) { throw new IllegalArgumentException("JMS context lookup of \"" + jmsProducerProperties.getProducerTopic() - + "\" returned null for producer (" + this.name + ")"); + + "\" returned null for producer (" + this.name + ")"); } } catch (final Exception e) { final String errorMessage = "lookup of JMS topic \"" + jmsProducerProperties.getProducerTopic() - + "\" failed for JMS producer properties \"" - + jmsProducerProperties.getJmsProducerProperties() + FOR_PRODUCER_TAG + this.name + ")"; + + "\" failed for JMS producer properties \"" + jmsProducerProperties.getJmsProducerProperties() + + FOR_PRODUCER_TAG + this.name + ")"; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); } @@ -136,11 +137,11 @@ public class ApexJmsProducer implements ApexEventProducer { // Create and start a connection to the JMS server try { connection = connectionFactory.createConnection(jmsProducerProperties.getSecurityPrincipal(), - jmsProducerProperties.getSecurityCredentials()); + jmsProducerProperties.getSecurityCredentials()); connection.start(); } catch (final Exception e) { final String errorMessage = "connection to JMS server failed for JMS properties \"" - + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; + + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); } @@ -150,7 +151,7 @@ public class ApexJmsProducer implements ApexEventProducer { jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); } catch (final Exception e) { final String errorMessage = "creation of session to JMS server failed for JMS properties \"" - + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; + + jmsProducerProperties.getJmsConsumerProperties() + FOR_PRODUCER_TAG + this.name + ")"; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); } @@ -159,8 +160,8 @@ public class ApexJmsProducer implements ApexEventProducer { try { messageProducer = jmsSession.createProducer(jmsOutgoingTopic); } catch (final Exception e) { - final String errorMessage = "creation of producer for sending events " - + "to JMS server failed for JMS properties \"" + final String errorMessage = + "creation of producer for sending events " + "to JMS server failed for JMS properties \"" + jmsProducerProperties.getJmsConsumerProperties() + "\""; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); @@ -206,10 +207,11 @@ public class ApexJmsProducer implements ApexEventProducer { * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventname, final Object eventObject) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventname, + final Object eventObject) { // Check if this is a synchronized event, if so we have received a reply - final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap - .get(EventHandlerPeeredMode.SYNCHRONOUS); + final SynchronousEventCache synchronousEventCache = + (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); if (synchronousEventCache != null) { synchronousEventCache.removeCachedEventToApexIfExists(executionId); } @@ -217,8 +219,7 @@ public class ApexJmsProducer implements ApexEventProducer { // Check if the object to be sent is serializable if (!Serializable.class.isAssignableFrom(eventObject.getClass())) { final String errorMessage = COULD_NOT_SEND_PREFIX + eventname + JMS_MESSAGE_PRODUCER_TAG + this.name - + ", object of type \"" + eventObject.getClass().getCanonicalName() - + "\" is not serializable"; + + ", object of type \"" + eventObject.getClass().getCanonicalName() + "\" is not serializable"; LOGGER.warn(errorMessage); throw new ApexEventRuntimeException(errorMessage); } @@ -233,7 +234,7 @@ public class ApexJmsProducer implements ApexEventProducer { jmsMessage = jmsSession.createObjectMessage((Serializable) eventObject); } catch (final Exception e) { final String errorMessage = COULD_NOT_SEND_PREFIX + eventname + JMS_MESSAGE_PRODUCER_TAG + this.name - + ", could not create JMS Object Message for object \"" + eventObject; + + ", could not create JMS Object Message for object \"" + eventObject; LOGGER.warn(errorMessage, e); throw new ApexEventRuntimeException(errorMessage); } @@ -243,7 +244,7 @@ public class ApexJmsProducer implements ApexEventProducer { jmsMessage = jmsSession.createTextMessage(eventObject.toString()); } catch (final Exception e) { final String errorMessage = COULD_NOT_SEND_PREFIX + eventname + JMS_MESSAGE_PRODUCER_TAG + this.name - + ", could not create JMS Text Message for object \"" + eventObject; + + ", could not create JMS Text Message for object \"" + eventObject; LOGGER.warn(errorMessage, e); throw new ApexEventRuntimeException(errorMessage); } @@ -253,7 +254,7 @@ public class ApexJmsProducer implements ApexEventProducer { messageProducer.send(jmsMessage); } catch (final Exception e) { final String errorMessage = COULD_NOT_SEND_PREFIX + eventname + JMS_MESSAGE_PRODUCER_TAG + this.name - + ", send failed for object \"" + eventObject; + + ", send failed for object \"" + eventObject; LOGGER.warn(errorMessage, e); throw new ApexEventRuntimeException(errorMessage); } diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java index e981f4158..34ffc4c75 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java @@ -101,7 +101,7 @@ public class ApexJmsProducerTest { synchronousEventCache); ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace", "testSource", "testTarget"); - apexJmsProducer.sendEvent(1000L, "TestApexJmsProducer", apexEvent); + apexJmsProducer.sendEvent(1000L, null, "TestApexJmsProducer", apexEvent); } @Test(expected = ApexEventRuntimeException.class) @@ -111,7 +111,7 @@ public class ApexJmsProducerTest { apexJmsConsumer, apexJmsProducer, DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT); apexJmsProducer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, synchronousEventCache); - apexJmsProducer.sendEvent(-1L, "TestApexJmsProducer", new ApexJmsProducerTest()); + apexJmsProducer.sendEvent(-1L, null, "TestApexJmsProducer", new ApexJmsProducerTest()); } @Test diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaConsumer.java index 6860bca22..3ddc97a86 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaConsumer.java @@ -167,7 +167,7 @@ public class ApexKafkaConsumer implements ApexEventConsumer, Runnable { kafkaConsumer.poll(kafkaConsumerProperties.getConsumerPollDuration().toMillis()); for (final ConsumerRecord<String, String> record : records) { traceIfTraceEnabled(record); - eventReceiver.receiveEvent(record.value()); + eventReceiver.receiveEvent(null, record.value()); } } catch (final Exception e) { LOGGER.warn("error receiving events on thread {}", consumerThread.getName(), e); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaProducer.java index c83c0ae1e..706568ae7 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/ApexKafkaProducer.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.event.carrier.kafka; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; @@ -66,8 +67,7 @@ public class ApexKafkaProducer implements ApexEventProducer { if (!(producerParameters.getCarrierTechnologyParameters() instanceof KafkaCarrierTechnologyParameters)) { String message = "specified producer properties are not applicable to a Kafka producer (" + this.name + ")"; LOGGER.warn(message); - throw new ApexEventException( - message); + throw new ApexEventException(message); } kafkaProducerProperties = (KafkaCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters(); @@ -112,7 +112,8 @@ public class ApexKafkaProducer implements ApexEventProducer { * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { // Check if this is a synchronized event, if so we have received a reply final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientConsumer.java index ddd000dd9..39389c297 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientConsumer.java @@ -223,7 +223,7 @@ public class ApexRestClientConsumer implements ApexEventConsumer, Runnable { } // Send the event into Apex - eventReceiver.receiveEvent(eventJsonString); + eventReceiver.receiveEvent(null, eventJsonString); } catch (final Exception e) { LOGGER.warn("error receiving events on thread {}", consumerThread.getName(), e); } @@ -232,7 +232,7 @@ public class ApexRestClientConsumer implements ApexEventConsumer, Runnable { /** * Hook for unit test mocking of HTTP client. - * + * * @param client the mocked client */ protected void setClient(final Client client) { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducer.java index 4113cea4b..275f5a8c2 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/main/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducer.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.event.carrier.restclient; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; @@ -67,18 +68,18 @@ public class ApexRestClientProducer implements ApexEventProducer { */ @Override public void init(final String producerName, final EventHandlerParameters producerParameters) - throws ApexEventException { + throws ApexEventException { this.name = producerName; // Check and get the REST Properties if (!(producerParameters.getCarrierTechnologyParameters() instanceof RestClientCarrierTechnologyParameters)) { - final String errorMessage = "specified producer properties are not applicable to REST client producer (" - + this.name + ")"; + final String errorMessage = + "specified producer properties are not applicable to REST client producer (" + this.name + ")"; LOGGER.warn(errorMessage); throw new ApexEventException(errorMessage); } - restProducerProperties = (RestClientCarrierTechnologyParameters) producerParameters - .getCarrierTechnologyParameters(); + restProducerProperties = + (RestClientCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters(); // Check if the HTTP method has been set if (restProducerProperties.getHttpMethod() == null) { @@ -86,10 +87,11 @@ public class ApexRestClientProducer implements ApexEventProducer { } if (!RestClientCarrierTechnologyParameters.HttpMethod.POST.equals(restProducerProperties.getHttpMethod()) - && !RestClientCarrierTechnologyParameters.HttpMethod.PUT.equals(restProducerProperties.getHttpMethod())) { + && !RestClientCarrierTechnologyParameters.HttpMethod.PUT + .equals(restProducerProperties.getHttpMethod())) { final String errorMessage = "specified HTTP method of \"" + restProducerProperties.getHttpMethod() - + "\" is invalid, only HTTP methods \"POST\" and \"PUT\" are supproted " - + "for event sending on REST client producer (" + this.name + ")"; + + "\" is invalid, only HTTP methods \"POST\" and \"PUT\" are supproted " + + "for event sending on REST client producer (" + this.name + ")"; LOGGER.warn(errorMessage); throw new ApexEventException(errorMessage); } @@ -137,10 +139,11 @@ public class ApexRestClientProducer implements ApexEventProducer { * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { // Check if this is a synchronized event, if so we have received a reply - final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap - .get(EventHandlerPeeredMode.SYNCHRONOUS); + final SynchronousEventCache synchronousEventCache = + (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); if (synchronousEventCache != null) { synchronousEventCache.removeCachedEventToApexIfExists(executionId); } @@ -151,15 +154,15 @@ public class ApexRestClientProducer implements ApexEventProducer { // Check that the request worked if (response.getStatus() != Response.Status.OK.getStatusCode()) { final String errorMessage = "send of event to URL \"" + restProducerProperties.getUrl() + "\" using HTTP \"" - + restProducerProperties.getHttpMethod() + "\" failed with status code " + response.getStatus() - + " and message \"" + response.readEntity(String.class) + "\", event:\n" + event; + + restProducerProperties.getHttpMethod() + "\" failed with status code " + response.getStatus() + + " and message \"" + response.readEntity(String.class) + "\", event:\n" + event; LOGGER.warn(errorMessage); throw new ApexEventRuntimeException(errorMessage); } if (LOGGER.isTraceEnabled()) { LOGGER.trace("event sent from engine using {} to URL {} with HTTP {} : {} and response {} ", this.name, - restProducerProperties.getUrl(), restProducerProperties.getHttpMethod(), event, response); + restProducerProperties.getUrl(), restProducerProperties.getHttpMethod(), event, response); } } @@ -184,16 +187,16 @@ public class ApexRestClientProducer implements ApexEventProducer { // We have already checked that it is a PUT or POST request if (RestClientCarrierTechnologyParameters.HttpMethod.POST.equals(restProducerProperties.getHttpMethod())) { return client.target(restProducerProperties.getUrl()).request("application/json") - .headers(restProducerProperties.getHttpHeadersAsMultivaluedMap()).post(Entity.json(event)); + .headers(restProducerProperties.getHttpHeadersAsMultivaluedMap()).post(Entity.json(event)); } else { return client.target(restProducerProperties.getUrl()).request("application/json") - .headers(restProducerProperties.getHttpHeadersAsMultivaluedMap()).put(Entity.json(event)); + .headers(restProducerProperties.getHttpHeadersAsMultivaluedMap()).put(Entity.json(event)); } } /** * Hook for unit test mocking of HTTP client. - * + * * @param client the mocked client */ protected void setClient(final Client client) { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducerTest.java index 8f0e0940b..8ef0ec95c 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducerTest.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/ApexRestClientProducerTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -166,7 +166,7 @@ public class ApexRestClientProducerTest { arcp.setClient(httpClientMock); try { - arcp.sendEvent(123, "EventName", "This is an Event"); + arcp.sendEvent(123, null, "EventName", "This is an Event"); arcp.stop(); } catch (Exception ex) { fail("test should not throw an exception"); @@ -203,7 +203,7 @@ public class ApexRestClientProducerTest { arcp.setClient(httpClientMock); try { - arcp.sendEvent(123, "EventName", "This is an Event"); + arcp.sendEvent(123, null, "EventName", "This is an Event"); arcp.stop(); } catch (Exception e) { fail("test should not throw an exception"); @@ -246,7 +246,7 @@ public class ApexRestClientProducerTest { arcp.setClient(httpClientMock); try { - arcp.sendEvent(123, "EventName", "This is an Event"); + arcp.sendEvent(123, null, "EventName", "This is an Event"); arcp.stop(); } catch (Exception e) { fail("test should not throw an exception"); @@ -292,7 +292,7 @@ public class ApexRestClientProducerTest { arcp.setClient(httpClientMock); try { - arcp.sendEvent(123, "EventName", "This is an Event"); + arcp.sendEvent(123, null, "EventName", "This is an Event"); arcp.stop(); } catch (Exception e) { fail("test should not throw an exception"); @@ -329,7 +329,7 @@ public class ApexRestClientProducerTest { arcp.setClient(httpClientMock); try { - arcp.sendEvent(123, "EventName", "This is an Event"); + arcp.sendEvent(123, null, "EventName", "This is an Event"); fail("test should throw an exception here"); } catch (Exception e) { assertEquals( diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/SupportApexEventReceiver.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/SupportApexEventReceiver.java index d3f8b9e82..5459310fa 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/SupportApexEventReceiver.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/test/java/org/onap/policy/apex/plugins/event/carrier/restclient/SupportApexEventReceiver.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.plugins.event.carrier.restclient; +import java.util.Properties; + import org.onap.policy.apex.service.engine.event.ApexEventException; import org.onap.policy.apex.service.engine.event.ApexEventReceiver; @@ -32,21 +34,26 @@ public class SupportApexEventReceiver implements ApexEventReceiver { private Object lastEvent; private int eventCount; - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(long, java.lang.Object) */ @Override - public void receiveEvent(long executionId, Object event) throws ApexEventException { + public void receiveEvent(final long executionId, final Properties executionProperties, final Object event) + throws ApexEventException { this.lastExecutionId = executionId; this.lastEvent = event; this.eventCount++; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(java.lang.Object) */ @Override - public void receiveEvent(Object event) throws ApexEventException { + public void receiveEvent(final Properties executionProperties, final Object event) throws ApexEventException { this.lastEvent = event; this.eventCount++; } @@ -61,7 +68,7 @@ public class SupportApexEventReceiver implements ApexEventReceiver { /** * Get the number of events received. - * + * * @return the number of events received */ public int getEventCount() { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorConsumer.java index 57c14b946..1ba00ec0a 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorConsumer.java @@ -370,7 +370,7 @@ public class ApexRestRequestorConsumer implements ApexEventConsumer, Runnable { } // Send the event into Apex - eventReceiver.receiveEvent(request.getExecutionId(), eventJsonString); + eventReceiver.receiveEvent(request.getExecutionId(), null, eventJsonString); synchronized (eventsReceivedLock) { eventsReceived++; @@ -393,7 +393,7 @@ public class ApexRestRequestorConsumer implements ApexEventConsumer, Runnable { /** * Execute the REST request. * - * + * * @return the response to the REST request */ public Response sendEventAsRestRequest() { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducer.java index 4985fe16f..cf5294253 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/main/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducer.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.event.carrier.restrequestor; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.service.engine.event.ApexEventConsumer; import org.onap.policy.apex.service.engine.event.ApexEventException; @@ -149,7 +150,8 @@ public class ApexRestRequestorProducer implements ApexEventProducer { * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { // Check if this is a synchronized event, if so we have received a reply final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/test/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/test/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducerTest.java index 136c189db..5222f5bdb 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/test/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducerTest.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/test/java/org/onap/policy/apex/plugins/event/carrier/restrequestor/ApexRestRequestorProducerTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -119,7 +119,7 @@ public class ApexRestRequestorProducerTest { String event = "This is the event"; try { - producer.sendEvent(12345, eventName, event); + producer.sendEvent(12345, null, eventName, event); fail("test should throw an exception here"); } catch (Exception aee) { assertEquals("send of event to URL \"null\" failed, REST response consumer is not defined\n" @@ -134,7 +134,7 @@ public class ApexRestRequestorProducerTest { PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.REQUESTOR, consumer, producer); producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, peeredReference); try { - producer.sendEvent(12345, eventName, event); + producer.sendEvent(12345, null, eventName, event); fail("test should throw an exception here"); } catch (Exception aee) { assertEquals("send of event to URL \"null\" failed, REST response consumer " diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerConsumer.java index 35490926a..b18c658af 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerConsumer.java @@ -105,7 +105,7 @@ public class ApexRestServerConsumer implements ApexEventConsumer, Runnable { LOGGER.warn(errorMessage); throw new ApexEventException(errorMessage); } - + // The REST parameters read from the parameter service RestServerCarrierTechnologyParameters restConsumerProperties = (RestServerCarrierTechnologyParameters) consumerParameters.getCarrierTechnologyParameters(); @@ -209,7 +209,7 @@ public class ApexRestServerConsumer implements ApexEventConsumer, Runnable { try { // Send the event into Apex - eventReceiver.receiveEvent(executionId, event); + eventReceiver.receiveEvent(executionId, null, event); } catch (final Exception e) { final String errorMessage = "error receiving events on event consumer " + name + ", " + e.getMessage(); LOGGER.warn(errorMessage, e); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerProducer.java index cacdb3408..b228ccbf0 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/main/java/org/onap/policy/apex/plugins/event/carrier/restserver/ApexRestServerProducer.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.event.carrier.restserver; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.service.engine.event.ApexEventException; import org.onap.policy.apex.service.engine.event.ApexEventProducer; @@ -65,7 +66,7 @@ public class ApexRestServerProducer implements ApexEventProducer { LOGGER.warn(errorMessage); throw new ApexEventException(errorMessage); } - + // The REST carrier properties RestServerCarrierTechnologyParameters restProducerProperties = (RestServerCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters(); @@ -128,7 +129,8 @@ public class ApexRestServerProducer implements ApexEventProducer { * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { if (LOGGER.isDebugEnabled()) { String message = name + ": event " + executionId + ':' + eventName + " recevied from Apex, event=" + event; LOGGER.debug(message); diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/test/java/org/onap/policy/apex/plugins/event/carrier/restserver/SupportApexEventReceiver.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/test/java/org/onap/policy/apex/plugins/event/carrier/restserver/SupportApexEventReceiver.java index aaba4c262..8f6e72b14 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/test/java/org/onap/policy/apex/plugins/event/carrier/restserver/SupportApexEventReceiver.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/test/java/org/onap/policy/apex/plugins/event/carrier/restserver/SupportApexEventReceiver.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.plugins.event.carrier.restserver; +import java.util.Properties; + import org.onap.policy.apex.service.engine.event.ApexEventException; import org.onap.policy.apex.service.engine.event.ApexEventReceiver; @@ -32,21 +34,26 @@ public class SupportApexEventReceiver implements ApexEventReceiver { private Object lastEvent; private int eventCount; - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(long, java.lang.Object) */ @Override - public void receiveEvent(long executionId, Object event) throws ApexEventException { + public void receiveEvent(final long executionId, final Properties executionProperties, final Object event) + throws ApexEventException { this.lastExecutionId = executionId; this.lastEvent = event; this.eventCount++; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(java.lang.Object) */ @Override - public void receiveEvent(Object event) throws ApexEventException { + public void receiveEvent(final Properties executionProperties, final Object event) throws ApexEventException { this.lastEvent = event; this.eventCount++; } @@ -61,7 +68,7 @@ public class SupportApexEventReceiver implements ApexEventReceiver { /** * Get the number of events received. - * + * * @return the number of events received */ public int getEventCount() { diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketConsumer.java index 17955c3be..f6ed6895d 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketConsumer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketConsumer.java @@ -80,7 +80,7 @@ public class ApexWebSocketConsumer implements ApexEventConsumer, WsStringMessage LOGGER.warn("specified consumer properties are not applicable to a web socket consumer"); throw new ApexEventException("specified consumer properties are not applicable to a web socket consumer"); } - + // The Web Socket properties WebSocketCarrierTechnologyParameters webSocketConsumerProperties = (WebSocketCarrierTechnologyParameters) consumerParameters.getCarrierTechnologyParameters(); @@ -183,7 +183,7 @@ public class ApexWebSocketConsumer implements ApexEventConsumer, WsStringMessage @Override public void receiveString(final String eventString) { try { - eventReceiver.receiveEvent(eventString); + eventReceiver.receiveEvent(null, eventString); eventsRead++; } catch (final Exception e) { final String errorMessage = "Error sending event " + name + '_' + eventsRead + ", " + e.getMessage() diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducer.java index 6f04024b4..07b6d42e6 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducer.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/main/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducer.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.event.carrier.websocket; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.core.infrastructure.messaging.MessagingException; import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient; @@ -57,25 +58,25 @@ public class ApexWebSocketProducer implements ApexEventProducer, WsStringMessage @Override public void init(final String producerName, final EventHandlerParameters producerParameters) - throws ApexEventException { + throws ApexEventException { this.name = producerName; // Check and get the web socket Properties if (!(producerParameters.getCarrierTechnologyParameters() instanceof WebSocketCarrierTechnologyParameters)) { - String message = "specified producer properties for " + this.name - + "are not applicable to a web socket producer"; + String message = + "specified producer properties for " + this.name + "are not applicable to a web socket producer"; LOGGER.warn(message); throw new ApexEventException("specified producer properties are not applicable to a web socket producer"); } // The Web Socket properties WebSocketCarrierTechnologyParameters webSocketProducerProperties = - (WebSocketCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters(); + (WebSocketCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters(); // Check if this is a server or a client Web Socket if (webSocketProducerProperties.isWsClient()) { // Create a WS client wsStringMessager = new WsStringMessageClient(webSocketProducerProperties.getHost(), - webSocketProducerProperties.getPort()); + webSocketProducerProperties.getPort()); } else { wsStringMessager = new WsStringMessageServer(webSocketProducerProperties.getPort()); } @@ -128,10 +129,11 @@ public class ApexWebSocketProducer implements ApexEventProducer, WsStringMessage * java.lang.Object) */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { // Check if this is a synchronized event, if so we have received a reply - final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap - .get(EventHandlerPeeredMode.SYNCHRONOUS); + final SynchronousEventCache synchronousEventCache = + (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); if (synchronousEventCache != null) { synchronousEventCache.removeCachedEventToApexIfExists(executionId); } @@ -161,7 +163,7 @@ public class ApexWebSocketProducer implements ApexEventProducer, WsStringMessage @Override public void receiveString(final String messageString) { String message = "received message \"" + messageString + "\" on web socket producer (" + this.name - + ") , no messages should be received on a web socket producer"; + + ") , no messages should be received on a web socket producer"; LOGGER.warn(message); } } diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/test/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/test/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducerTest.java index b97f42ffb..d4b3114d5 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/test/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducerTest.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/test/java/org/onap/policy/apex/plugins/event/carrier/websocket/ApexWebSocketProducerTest.java @@ -107,7 +107,7 @@ public class ApexWebSocketProducerTest { apexWebSocketConsumer, apexWebSocketProducer, DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT); apexWebSocketProducer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, synchronousEventCache); - apexWebSocketProducer.sendEvent(1000L, "TestApexWebSocketProducer", "apexEvent"); + apexWebSocketProducer.sendEvent(1000L, null, "TestApexWebSocketProducer", "apexEvent"); } @Test diff --git a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutor.java index ef0a8d178..ce242bafb 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutor.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.executor.java; import java.lang.reflect.Method; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.StateFinalizerExecutor; @@ -66,16 +67,17 @@ public class JavaStateFinalizerExecutor extends StateFinalizerExecutor { * Executes the executor for the state finalizer logic in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields for finalisation * @return The state output for the state * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public String execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the Java logic boolean returnValue = false; @@ -84,7 +86,7 @@ public class JavaStateFinalizerExecutor extends StateFinalizerExecutor { // StateFinalizerExecutionContext executor) throws ApexException" // to invoke the // task logic in the Java class - final Method method = stateFinalizerLogicObject.getClass().getDeclaredMethod("getStateOutput", (Class[]) + final Method method = stateFinalizerLogicObject.getClass().getDeclaredMethod("getStateOutput", new Class[] { StateFinalizerExecutionContext.class }); returnValue = (boolean) method.invoke(stateFinalizerLogicObject, getExecutionContext()); } catch (final Exception e) { diff --git a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutor.java b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutor.java index e9bf45305..1ceeba3b1 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutor.java @@ -22,6 +22,7 @@ package org.onap.policy.apex.plugins.executor.java; import java.lang.reflect.Method; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.TaskExecutor; @@ -67,16 +68,17 @@ public class JavaTaskExecutor extends TaskExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields * @return The outgoing fields * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the Java logic boolean returnValue = false; @@ -84,7 +86,7 @@ public class JavaTaskExecutor extends TaskExecutor { // Find and call the method with the signature "public boolean getEvent(final TaskExecutionContext executor) // throws ApexException" to invoke the // task logic in the Java class - final Method method = taskLogicObject.getClass().getDeclaredMethod("getEvent", (Class[]) + final Method method = taskLogicObject.getClass().getDeclaredMethod("getEvent", new Class[] { TaskExecutionContext.class }); returnValue = (boolean) method.invoke(taskLogicObject, getExecutionContext()); } catch (final Exception e) { diff --git a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutor.java index 02794cdf6..17758b19e 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-java/src/main/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutor.java @@ -21,6 +21,7 @@ package org.onap.policy.apex.plugins.executor.java; import java.lang.reflect.Method; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; @@ -58,10 +59,10 @@ public class JavaTaskSelectExecutor extends TaskSelectExecutor { // Create the task logic object from the byte code of the class taskSelectionLogicObject = Class.forName(getSubject().getTaskSelectionLogic().getLogic()).newInstance(); } catch (final Exception e) { - LOGGER.error("instantiation error on Java class \"" + getSubject().getTaskSelectionLogic().getLogic() - + "\"", e); - throw new StateMachineException("instantiation error on Java class \"" - + getSubject().getTaskSelectionLogic().getLogic() + "\"", e); + LOGGER.error( + "instantiation error on Java class \"" + getSubject().getTaskSelectionLogic().getLogic() + "\"", e); + throw new StateMachineException( + "instantiation error on Java class \"" + getSubject().getTaskSelectionLogic().getLogic() + "\"", e); } } @@ -69,16 +70,17 @@ public class JavaTaskSelectExecutor extends TaskSelectExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingEvent the incoming event * @return The outgoing event * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingEvent); + executePre(executionId, executionProperties, incomingEvent); // Check and execute the Java logic boolean returnValue = false; @@ -87,14 +89,14 @@ public class JavaTaskSelectExecutor extends TaskSelectExecutor { // executor)" to invoke the task selection // logic in the Java class final Method method = taskSelectionLogicObject.getClass().getDeclaredMethod("getTask", - (Class[]) new Class[] { TaskSelectionExecutionContext.class }); + new Class[] { TaskSelectionExecutionContext.class }); returnValue = (boolean) method.invoke(taskSelectionLogicObject, getExecutionContext()); } catch (final Exception e) { - LOGGER.error("execute: task selection logic failed to run for state \"" + getSubject().getKey().getId() - + "\"", e); + LOGGER.error( + "execute: task selection logic failed to run for state \"" + getSubject().getKey().getId() + "\"", + e); throw new StateMachineException( - "task selection logic failed to run for state \"" + getSubject().getKey().getId() + "\"", - e); + "task selection logic failed to run for state \"" + getSubject().getKey().getId() + "\"", e); } // Do the execution post work @@ -112,7 +114,7 @@ public class JavaTaskSelectExecutor extends TaskSelectExecutor { @Override public void cleanUp() throws StateMachineException { LOGGER.debug("cleanUp:" + getSubject().getKey().getId() + "," - + getSubject().getTaskSelectionLogic().getLogicFlavour() + "," - + getSubject().getTaskSelectionLogic().getLogic()); + + getSubject().getTaskSelectionLogic().getLogicFlavour() + "," + + getSubject().getTaskSelectionLogic().getLogic()); } } diff --git a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutorTest.java index 6638e7183..f779a3005 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaStateFinalizerExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -120,7 +120,7 @@ public class JavaStateFinalizerExecutorTest { } try { - jsfe.execute(-1, null); + jsfe.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("state finalizer logic failed to run for state finalizer \"NULL:0.0.0:NULL:NULL\"", @@ -130,7 +130,7 @@ public class JavaStateFinalizerExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - jsfe.execute(-1, event); + jsfe.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("state finalizer logic failed to run for state finalizer \"NULL:0.0.0:NULL:NULL\"", @@ -140,7 +140,7 @@ public class JavaStateFinalizerExecutorTest { stateFinalizerLogic.setLogic("org.onap.policy.apex.plugins.executor.java.DummyJavaStateFinalizerLogic"); try { jsfe.prepare(); - jsfe.execute(-1, event); + jsfe.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("execute-post: state finalizer logic execution failure on state \"NULL:0.0.0:NULL:NULL\" " @@ -150,7 +150,7 @@ public class JavaStateFinalizerExecutorTest { state.getStateOutputs().put("SelectedOutputIsMe", null); try { jsfe.prepare(); - String stateOutput = jsfe.execute(0, event); + String stateOutput = jsfe.execute(0, null, event); assertEquals("SelectedOutputIsMe", stateOutput); jsfe.cleanUp(); } catch (Exception jtseException) { diff --git a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutorTest.java index f3ea1ce4d..fb5bc4f55 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -102,7 +102,7 @@ public class JavaTaskExecutorTest { } try { - jte.execute(-1, null); + jte.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals(java.lang.NullPointerException.class, jteException.getClass()); @@ -110,7 +110,7 @@ public class JavaTaskExecutorTest { Map<String, Object> incomingParameters = new HashMap<>(); try { - jte.execute(-1, incomingParameters); + jte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("task logic failed to run for task \"NULL:0.0.0\"", jteException.getMessage()); @@ -119,7 +119,7 @@ public class JavaTaskExecutorTest { task.getTaskLogic().setLogic("org.onap.policy.apex.plugins.executor.java.DummyJavaTaskLogic"); try { jte.prepare(); - jte.execute(-1, incomingParameters); + jte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("execute-post: task logic execution failure on task \"NULL\" in model NULL:0.0.0", @@ -128,7 +128,7 @@ public class JavaTaskExecutorTest { try { jte.prepare(); - Map<String, Object> returnMap = jte.execute(0, incomingParameters); + Map<String, Object> returnMap = jte.execute(0, null, incomingParameters); assertEquals(0, returnMap.size()); jte.cleanUp(); } catch (Exception jteException) { diff --git a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutorTest.java index 64dfaea10..27eac53d3 100644 --- a/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-java/src/test/java/org/onap/policy/apex/plugins/executor/java/JavaTaskSelectExecutorTest.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -102,7 +102,7 @@ public class JavaTaskSelectExecutorTest { } try { - jtse.execute(-1, null); + jtse.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals(java.lang.NullPointerException.class, jtseException.getClass()); @@ -111,7 +111,7 @@ public class JavaTaskSelectExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - jtse.execute(-1, event); + jtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("task selection logic failed to run for state \"NULL:0.0.0:NULL:NULL\"", @@ -122,7 +122,7 @@ public class JavaTaskSelectExecutorTest { .setLogic("org.onap.policy.apex.plugins.executor.java.DummyJavaTaskSelectionLogic"); try { jtse.prepare(); - jtse.execute(-1, event); + jtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("execute-post: task selection logic failed on state \"NULL:0.0.0:NULL:NULL\"", @@ -131,7 +131,7 @@ public class JavaTaskSelectExecutorTest { try { jtse.prepare(); - AxArtifactKey taskKey = jtse.execute(0, event); + AxArtifactKey taskKey = jtse.execute(0, null, event); assertEquals("NULL:0.0.0", taskKey.getId()); jtse.cleanUp(); } catch (Exception jtseException) { diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java index c906a9ca3..cd660c807 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutor.java @@ -22,6 +22,8 @@ package org.onap.policy.apex.plugins.executor.javascript; import java.util.Map; +import java.util.Properties; + import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptEngine; @@ -34,8 +36,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * The Class JavascriptStateFinalizerExecutor is the state finalizer executor for state finalizer - * logic written in Javascript It is unlikely that this is thread safe. + * The Class JavascriptStateFinalizerExecutor is the state finalizer executor for state finalizer logic written in + * Javascript It is unlikely that this is thread safe. * * @author Liam Fallon (liam.fallon@ericsson.com) */ @@ -70,16 +72,17 @@ public class JavascriptStateFinalizerExecutor extends StateFinalizerExecutor { * Executes the executor for the state finalizer logic in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields for finalisation * @return The state output for the state * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public String execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Set up the Javascript engine engine.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java index 4b6ff0232..9769f42db 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutor.java @@ -22,6 +22,8 @@ package org.onap.policy.apex.plugins.executor.javascript; import java.util.Map; +import java.util.Properties; + import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptEngine; @@ -34,8 +36,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * The Class JavascriptTaskExecutor is the task executor for task logic written in Javascript It is - * unlikely that this is thread safe. + * The Class JavascriptTaskExecutor is the task executor for task logic written in Javascript It is unlikely that this + * is thread safe. * * @author Liam Fallon (liam.fallon@ericsson.com) */ @@ -69,16 +71,17 @@ public class JavascriptTaskExecutor extends TaskExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields * @return The outgoing fields * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Set up the Javascript engine engine.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java index 305f3a2da..afc7d0183 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutor.java @@ -21,6 +21,8 @@ package org.onap.policy.apex.plugins.executor.javascript; +import java.util.Properties; + import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptEngine; @@ -35,8 +37,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * The Class JavascriptTaskSelectExecutor is the task selection executor for task selection logic - * written in Javascript It is unlikely that this is thread safe. + * The Class JavascriptTaskSelectExecutor is the task selection executor for task selection logic written in Javascript + * It is unlikely that this is thread safe. * * @author Liam Fallon (liam.fallon@ericsson.com) */ @@ -76,16 +78,17 @@ public class JavascriptTaskSelectExecutor extends TaskSelectExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingEvent the incoming event * @return The outgoing event * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingEvent); + executePre(executionId, executionProperties, incomingEvent); // Set up the Javascript engine engine.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java index 4dd403e38..d42ad6cb9 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptStateFinalizerExecutorTest.java @@ -117,7 +117,7 @@ public class JavascriptStateFinalizerExecutorTest { Map<String, Object> incomingParameters1 = new HashMap<>(); try { - jsfe.execute(-1, incomingParameters1); + jsfe.execute(-1, null, incomingParameters1); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("state finalizer logic failed to run for state finalizer \"NULL:0.0.0:NULL:NULL\"", @@ -141,7 +141,7 @@ public class JavascriptStateFinalizerExecutorTest { + "var returnValue = new returnValueType(true);}"); try { jsfe.prepare(); - jsfe.execute(-1, event); + jsfe.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals( @@ -153,7 +153,7 @@ public class JavascriptStateFinalizerExecutorTest { state.getStateOutputs().put("SelectedOutputIsMe", null); try { jsfe.prepare(); - String stateOutput = jsfe.execute(0, event); + String stateOutput = jsfe.execute(0, null, event); assertEquals("SelectedOutputIsMe", stateOutput); jsfe.cleanUp(); } catch (Exception jtseException) { diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java index 50610b2e0..20e758fae 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskExecutorTest.java @@ -95,7 +95,7 @@ public class JavascriptTaskExecutorTest { Map<String, Object> incomingParameters2 = new HashMap<>(); try { - jte.execute(-1, incomingParameters2); + jte.execute(-1, null, incomingParameters2); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("task logic failed to run for task \"NULL:0.0.0\"", jteException.getMessage()); @@ -110,7 +110,7 @@ public class JavascriptTaskExecutorTest { } try { - jte.execute(-1, null); + jte.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals(java.lang.NullPointerException.class, jteException.getClass()); @@ -118,7 +118,7 @@ public class JavascriptTaskExecutorTest { Map<String, Object> incomingParameters = new HashMap<>(); try { - jte.execute(-1, incomingParameters); + jte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("execute: task logic failed to set a return value for task \"NULL:0.0.0\"", @@ -129,7 +129,7 @@ public class JavascriptTaskExecutorTest { + "var returnValue = new returnValueType(false); "); try { jte.prepare(); - jte.execute(-1, incomingParameters); + jte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("execute-post: task logic execution failure on task \"NULL\" in model NULL:0.0.0", @@ -140,7 +140,7 @@ public class JavascriptTaskExecutorTest { + "var returnValue = new returnValueType(true); "); try { jte.prepare(); - Map<String, Object> returnMap = jte.execute(0, incomingParameters); + Map<String, Object> returnMap = jte.execute(0, null, incomingParameters); assertEquals(0, returnMap.size()); jte.cleanUp(); } catch (Exception jteException) { diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java index 17c0be15f..8efbc6241 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptTaskSelectExecutorTest.java @@ -98,7 +98,7 @@ public class JavascriptTaskSelectExecutorTest { AxEvent axEvent1 = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event1 = new EnEvent(axEvent1); try { - jtse.execute(-1, event1); + jtse.execute(-1, null, event1); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals( @@ -115,7 +115,7 @@ public class JavascriptTaskSelectExecutorTest { } try { - jtse.execute(-1, null); + jtse.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals(java.lang.NullPointerException.class, jtseException.getClass()); @@ -124,7 +124,7 @@ public class JavascriptTaskSelectExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - jtse.execute(-1, event); + jtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals( @@ -136,7 +136,7 @@ public class JavascriptTaskSelectExecutorTest { + "var returnValue = new returnValueType(false); "); try { jtse.prepare(); - jtse.execute(-1, event); + jtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("execute-post: task selection logic failed on state \"NULL:0.0.0:NULL:NULL\"", @@ -147,7 +147,7 @@ public class JavascriptTaskSelectExecutorTest { + "var returnValue = new returnValueType(true); "); try { jtse.prepare(); - AxArtifactKey taskKey = jtse.execute(0, event); + AxArtifactKey taskKey = jtse.execute(0, null, event); assertEquals("NULL:0.0.0", taskKey.getId()); jtse.cleanUp(); } catch (Exception jtseException) { diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutor.java index 5c62cf8b0..d6e9f4d07 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutor.java @@ -21,6 +21,7 @@ package org.onap.policy.apex.plugins.executor.jruby; import java.util.Map; +import java.util.Properties; import org.jruby.embed.EmbedEvalUnit; import org.jruby.embed.LocalContextScope; @@ -71,16 +72,17 @@ public class JrubyStateFinalizerExecutor extends StateFinalizerExecutor { * Executes the executor for the state finalizer logic in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields for finalisation * @return The state output for the state * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public String execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the JRuby logic container.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutor.java b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutor.java index 8d2ccffe1..c805597e9 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutor.java @@ -21,6 +21,7 @@ package org.onap.policy.apex.plugins.executor.jruby; import java.util.Map; +import java.util.Properties; import org.jruby.embed.EmbedEvalUnit; import org.jruby.embed.LocalContextScope; @@ -71,16 +72,17 @@ public class JrubyTaskExecutor extends TaskExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields * @return The outgoing fields * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the JRuby logic container.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutor.java index 02ae0d8e4..274acbed1 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/main/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutor.java @@ -20,6 +20,7 @@ package org.onap.policy.apex.plugins.executor.jruby; +import java.util.Properties; import java.util.Set; import java.util.TreeSet; @@ -72,16 +73,17 @@ public class JrubyTaskSelectExecutor extends TaskSelectExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingEvent the incoming event * @return The outgoing event * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingEvent); + executePre(executionId, executionProperties, incomingEvent); // Check and execute the JRuby logic container.put("executor", getExecutionContext()); diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutorTest.java index c49d502fa..635430fa1 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyStateFinalizerExecutorTest.java @@ -113,7 +113,7 @@ public class JrubyStateFinalizerExecutorTest { }
try {
- jsfe.execute(-1, null);
+ jsfe.execute(-1, null, null);
fail("test should throw an exception here");
} catch (Exception jtseException) {
assertEquals("execute-post: state finalizer logic execution failure on state \"NULL:0.0.0:NULL:NULL\" on "
@@ -130,7 +130,7 @@ public class JrubyStateFinalizerExecutorTest { state.getStateOutputs().put("SelectedOutputIsMe", null);
try {
jsfe.prepare();
- String stateOutput = jsfe.execute(0, event);
+ String stateOutput = jsfe.execute(0, null, event);
assertEquals("SelectedOutputIsMe", stateOutput);
jsfe.cleanUp();
} catch (Exception jtseException) {
diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutorTest.java index 5fa9865c8..9f83459d8 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskExecutorTest.java @@ -95,7 +95,7 @@ public class JrubyTaskExecutorTest { Map<String, Object> incomingParameters = new HashMap<>();
try {
- jte.execute(-1, incomingParameters);
+ jte.execute(-1, null, incomingParameters);
fail("test should throw an exception here");
} catch (Exception jteException) {
assertEquals("execute-post: task logic execution failure on task \"NULL\" in model NULL:0.0.0",
@@ -108,7 +108,7 @@ public class JrubyTaskExecutorTest { try {
jte.prepare();
- Map<String, Object> returnMap = jte.execute(0, incomingParameters);
+ Map<String, Object> returnMap = jte.execute(0, null, incomingParameters);
assertEquals(0, returnMap.size());
jte.cleanUp();
} catch (Exception jteException) {
diff --git a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutorTest.java index 6320b59c6..683c43cb4 100644 --- a/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jruby/src/test/java/org/onap/policy/apex/plugins/executor/jruby/JrubyTaskSelectExecutorTest.java @@ -99,7 +99,7 @@ public class JrubyTaskSelectExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1"));
EnEvent event = new EnEvent(axEvent);
try {
- jtse.execute(-1, event);
+ jtse.execute(-1, null, event);
fail("test should throw an exception here");
} catch (Exception jtseException) {
assertEquals("execute-post: task selection logic failed on state \"NULL:0.0.0:NULL:NULL\"",
@@ -112,7 +112,7 @@ public class JrubyTaskSelectExecutorTest { try {
jtse.prepare();
- AxArtifactKey taskKey = jtse.execute(0, event);
+ AxArtifactKey taskKey = jtse.execute(0, null, event);
assertEquals("NULL:0.0.0", taskKey.getId());
jtse.cleanUp();
} catch (Exception jtseException) {
diff --git a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutor.java index 3636d811a..c3c585664 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutor.java @@ -21,6 +21,8 @@ package org.onap.policy.apex.plugins.executor.jython; import java.util.Map; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.StateFinalizerExecutor; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; @@ -78,18 +80,19 @@ public class JythonStateFinalizerExecutor extends StateFinalizerExecutor { * * @param executionId the execution ID for the current APEX policy execution * @param incomingFields the incoming fields for finalisation + * @param executionProperties properties for the current APEX policy execution * @return The state output for the state * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public String execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { boolean returnValue = false; // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); try { diff --git a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java index 1280fb85d..974749032 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutor.java @@ -21,6 +21,8 @@ package org.onap.policy.apex.plugins.executor.jython; import java.util.Map; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.TaskExecutor; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; @@ -34,8 +36,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * The Class JythonTaskExecutor is the task executor for task logic written in Jython It is unlikely - * that this is thread safe. + * The Class JythonTaskExecutor is the task executor for task logic written in Jython It is unlikely that this is thread + * safe. * * @author Liam Fallon (liam.fallon@ericsson.com) */ @@ -77,19 +79,20 @@ public class JythonTaskExecutor extends TaskExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields * @return The outgoing fields * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { boolean returnValue = false; // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); try { diff --git a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java index d6e6dd70b..f8ca21b1a 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/main/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutor.java @@ -20,6 +20,8 @@ package org.onap.policy.apex.plugins.executor.jython; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; import org.onap.policy.apex.core.engine.executor.TaskSelectExecutor; @@ -35,8 +37,8 @@ import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; /** - * The Class JythonTaskSelectExecutor is the task selection executor for task selection logic - * written in Jython It is unlikely that this is thread safe. + * The Class JythonTaskSelectExecutor is the task selection executor for task selection logic written in Jython It is + * unlikely that this is thread safe. * * @author Liam Fallon (liam.fallon@ericsson.com) */ @@ -82,19 +84,20 @@ public class JythonTaskSelectExecutor extends TaskSelectExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingEvent the incoming event * @return The outgoing event * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { boolean returnValue = false; // Do execution pre work - executePre(executionId, incomingEvent); + executePre(executionId, executionProperties, incomingEvent); try { // Check and execute the Jython logic diff --git a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutorTest.java index 76e35e8cc..213dddb9b 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonStateFinalizerExecutorTest.java @@ -130,7 +130,7 @@ public class JythonStateFinalizerExecutorTest { stateFinalizerLogic.setLogic(scriptSource); try { jsfe.prepare(); - jsfe.execute(-1, null); + jsfe.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals( @@ -151,7 +151,7 @@ public class JythonStateFinalizerExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - jsfe.execute(0, event); + jsfe.execute(0, null, event); } catch (Exception jtseException) { jtseException.printStackTrace(); fail("test should not throw an exception here"); @@ -159,7 +159,7 @@ public class JythonStateFinalizerExecutorTest { try { jsfe.prepare(); - String stateOutput = jsfe.execute(0, event); + String stateOutput = jsfe.execute(0, null, event); assertEquals("SelectedOutputIsMe", stateOutput); jsfe.cleanUp(); } catch (Exception jtseException) { diff --git a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutorTest.java index aec7470fa..47e98f391 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskExecutorTest.java @@ -103,7 +103,7 @@ public class JythonTaskExecutorTest { } try { - jte.execute(-1, null); + jte.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals(java.lang.NullPointerException.class, jteException.getClass()); @@ -111,7 +111,7 @@ public class JythonTaskExecutorTest { Map<String, Object> incomingParameters = new HashMap<>(); try { - jte.execute(-1, incomingParameters); + jte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception jteException) { assertEquals("failed to execute Jython code for task NULL:0.0.0", jteException.getMessage()); @@ -124,7 +124,7 @@ public class JythonTaskExecutorTest { try { jte.prepare(); - Map<String, Object> returnMap = jte.execute(-1, incomingParameters); + Map<String, Object> returnMap = jte.execute(-1, null, incomingParameters); assertEquals(0, returnMap.size()); jte.cleanUp(); fail("test should throw an exception here"); @@ -136,7 +136,7 @@ public class JythonTaskExecutorTest { task.getTaskLogic().setLogic(scriptSource); try { jte.prepare(); - Map<String, Object> returnMap = jte.execute(0, incomingParameters); + Map<String, Object> returnMap = jte.execute(0, null, incomingParameters); assertEquals(0, returnMap.size()); jte.cleanUp(); } catch (Exception jteException) { diff --git a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutorTest.java index 7874b2315..119f4d035 100644 --- a/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-jython/src/test/java/org/onap/policy/apex/plugins/executor/jython/JythonTaskSelectExecutorTest.java @@ -99,7 +99,7 @@ public class JythonTaskSelectExecutorTest { state.getTaskSelectionLogic().setLogic(scriptSource); try { jtse.prepare(); - jtse.execute(-1, null); + jtse.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals(java.lang.NullPointerException.class, jtseException.getClass()); @@ -109,7 +109,7 @@ public class JythonTaskSelectExecutorTest { EnEvent event = new EnEvent(axEvent); try { jtse.prepare(); - jtse.execute(-1, event); + jtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception jtseException) { assertEquals("failed to execute Jython code for task selection logic in NULL:0.0.0:NULL:NULL", @@ -120,7 +120,7 @@ public class JythonTaskSelectExecutorTest { state.getTaskSelectionLogic().setLogic(scriptSource); try { jtse.prepare(); - jtse.execute(-1, event); + jtse.execute(-1, null, event); jtse.cleanUp(); } catch (Exception jtseException) { fail("test should not throw an exception here"); diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutor.java b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutor.java index 9b941a39a..ab62ca4bf 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutor.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutor.java @@ -26,6 +26,7 @@ import static org.onap.policy.common.utils.validation.Assertions.argumentNotNull import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import org.mvel2.MVEL; import org.onap.policy.apex.context.ContextException; @@ -70,16 +71,17 @@ public class MvelStateFinalizerExecutor extends StateFinalizerExecutor { * Executes the executor for the state finalizer logic in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields for finalisation * @return The state output for the state * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public String execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public String execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the MVEL logic argumentNotNull(compiled, "MVEL state finalizer logic not compiled."); diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutor.java b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutor.java index 69a53a26b..3fa753bec 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutor.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutor.java @@ -26,6 +26,7 @@ import static org.onap.policy.common.utils.validation.Assertions.argumentNotNull import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import org.mvel2.MVEL; import org.onap.policy.apex.context.ContextException; @@ -70,16 +71,17 @@ public class MvelTaskExecutor extends TaskExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingFields the incoming fields * @return The outgoing fields * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> incomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executionProperties, + final Map<String, Object> incomingFields) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingFields); + executePre(executionId, executionProperties, incomingFields); // Check and execute the MVEL logic argumentNotNull(compiled, "MVEL task not compiled."); diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutor.java b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutor.java index eefc50d0d..1ba79ceec 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutor.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/main/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutor.java @@ -25,6 +25,7 @@ import static org.onap.policy.common.utils.validation.Assertions.argumentNotNull import java.io.Serializable; import java.util.HashMap; +import java.util.Properties; import org.mvel2.MVEL; import org.onap.policy.apex.context.ContextException; @@ -71,16 +72,17 @@ public class MvelTaskSelectExecutor extends TaskSelectExecutor { * Executes the executor for the task in a sequential manner. * * @param executionId the execution ID for the current APEX policy execution + * @param executionProperties properties for the current APEX policy execution * @param incomingEvent the incoming event * @return The outgoing event * @throws StateMachineException on an execution error * @throws ContextException on context errors */ @Override - public AxArtifactKey execute(final long executionId, final EnEvent incomingEvent) - throws StateMachineException, ContextException { + public AxArtifactKey execute(final long executionId, final Properties executionProperties, + final EnEvent incomingEvent) throws StateMachineException, ContextException { // Do execution pre work - executePre(executionId, incomingEvent); + executePre(executionId, executionProperties, incomingEvent); // Check and execute the MVEL logic argumentNotNull(compiled, "MVEL task not compiled."); diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutorTest.java b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutorTest.java index 948dd31e2..5e66be30f 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelStateFinalizerExecutorTest.java @@ -126,7 +126,7 @@ public class MvelStateFinalizerExecutorTest { } try { - msfe.execute(-1, null); + msfe.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception msfeException) { assertEquals("failed to execute MVEL code for state NULL:0.0.0:NULL:NULL", @@ -136,7 +136,7 @@ public class MvelStateFinalizerExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - msfe.execute(-1, event); + msfe.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception msfeException) { assertEquals("failed to execute MVEL code for state NULL:0.0.0:NULL:NULL", @@ -146,7 +146,7 @@ public class MvelStateFinalizerExecutorTest { stateFinalizerLogic.setLogic("executionId !=-1"); try { msfe.prepare(); - msfe.execute(-1, event); + msfe.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception msfeException) { assertEquals( @@ -161,7 +161,7 @@ public class MvelStateFinalizerExecutorTest { state.getStateOutputs().put("SelectedOutputIsMe", null); try { msfe.prepare(); - String stateOutput = msfe.execute(0, event); + String stateOutput = msfe.execute(0, null, event); assertEquals("SelectedOutputIsMe", stateOutput); } catch (Exception msfeException) { LOGGER.warn("Unexpected exception happened here.", msfeException); diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutorTest.java b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutorTest.java index 0759aac23..18bccd670 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskExecutorTest.java @@ -103,7 +103,7 @@ public class MvelTaskExecutorTest { } try { - mte.execute(-1, null); + mte.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception mteException) { assertEquals(java.lang.NullPointerException.class, mteException.getClass()); @@ -111,7 +111,7 @@ public class MvelTaskExecutorTest { Map<String, Object> incomingParameters = new HashMap<>(); try { - mte.execute(-1, incomingParameters); + mte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception mteException) { assertEquals("failed to execute MVEL code for task NULL:0.0.0", mteException.getMessage()); @@ -120,7 +120,7 @@ public class MvelTaskExecutorTest { task.getTaskLogic().setLogic("executionId != -1"); try { mte.prepare(); - mte.execute(-1, incomingParameters); + mte.execute(-1, null, incomingParameters); fail("test should throw an exception here"); } catch (Exception mteException) { assertEquals("execute-post: task logic execution failure on task \"NULL\" in model NULL:0.0.0", @@ -129,7 +129,7 @@ public class MvelTaskExecutorTest { try { mte.prepare(); - Map<String, Object> returnMap = mte.execute(0, incomingParameters); + Map<String, Object> returnMap = mte.execute(0, null, incomingParameters); assertEquals(0, returnMap.size()); mte.cleanUp(); } catch (Exception mteException) { diff --git a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutorTest.java b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutorTest.java index fd4857fa0..05591b075 100644 --- a/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-mvel/src/test/java/org/onap/policy/apex/plugins/executor/mvel/MvelTaskSelectExecutorTest.java @@ -103,7 +103,7 @@ public class MvelTaskSelectExecutorTest { } try { - mtse.execute(-1, null); + mtse.execute(-1, null, null); fail("test should throw an exception here"); } catch (Exception mtseException) { assertEquals(java.lang.NullPointerException.class, mtseException.getClass()); @@ -112,7 +112,7 @@ public class MvelTaskSelectExecutorTest { AxEvent axEvent = new AxEvent(new AxArtifactKey("Event", "0.0.1")); EnEvent event = new EnEvent(axEvent); try { - mtse.execute(-1, event); + mtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception mtseException) { assertEquals("failed to execute MVEL code for state NULL:0.0.0:NULL:NULL", @@ -122,7 +122,7 @@ public class MvelTaskSelectExecutorTest { state.getTaskSelectionLogic().setLogic("executionId != -1"); try { mtse.prepare(); - mtse.execute(-1, event); + mtse.execute(-1, null, event); fail("test should throw an exception here"); } catch (Exception mtseException) { assertEquals("execute-post: task selection logic failed on state \"NULL:0.0.0:NULL:NULL\"", @@ -131,7 +131,7 @@ public class MvelTaskSelectExecutorTest { try { mtse.prepare(); - AxArtifactKey taskKey = mtse.execute(0, event); + AxArtifactKey taskKey = mtse.execute(0, null, event); assertEquals("NULL:0.0.0", taskKey.getId()); mtse.cleanUp(); } catch (Exception mtseException) { diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEvent.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEvent.java index 368305efa..06b9ddf53 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEvent.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEvent.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -23,8 +23,13 @@ package org.onap.policy.apex.service.engine.event; import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import java.util.concurrent.atomic.AtomicLong; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,6 +41,9 @@ import org.slf4j.LoggerFactory; * * @author Liam Fallon (liam.fallon@ericsson.com) */ +@Getter +@ToString +@EqualsAndHashCode(callSuper = false) public class ApexEvent extends HashMap<String, Object> implements Serializable { private static final long serialVersionUID = -4451918242101961685L; @@ -104,19 +112,20 @@ public class ApexEvent extends HashMap<String, Object> implements Serializable { /** The target of an Apex event must match this regular expression. */ public static final String TARGET_REGEXP = SOURCE_REGEXP; - // The fields of the event - // @formatter:off + // The standard fields of the event private final String name; private final String version; private final String nameSpace; private final String source; private final String target; - // @formatter:on // An identifier for the current event execution. The default value here will always be unique // in a single JVM private long executionId = ApexEvent.getNextExecutionId(); + // Event related properties used during processing of this event + private Properties executionProperties; + // A string holding a message that indicates why processing of this event threw an exception private String exceptionMessage; @@ -144,7 +153,7 @@ public class ApexEvent extends HashMap<String, Object> implements Serializable { /** * Private utility to get the next candidate value for a Execution ID. This value will always be * unique in a single JVM - * + * * @return the next candidate value for a Execution ID */ private static synchronized long getNextExecutionId() { @@ -190,63 +199,10 @@ public class ApexEvent extends HashMap<String, Object> implements Serializable { } /** - * Gets the name. + * Sets the pass-thru executionID for this event. * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the name space. - * - * @return the name space - */ - public String getNameSpace() { - return nameSpace; - } - - /** - * Gets the source. - * - * @return the source - */ - public String getSource() { - return source; - } - - /** - * Gets the target. - * - * @return the target - */ - public String getTarget() { - return target; - } - - /** - * Gets the pass-thru executionID for this event. - * - * @return the executionID - */ - public long getExecutionId() { - return executionId; - } - - /** - * Sets the pass-thru executionID for this event. The default value for executionID will be be - * unique in the current JVM. For some applications/deployments this executionID may need to - * globally unique + * <p>The default value for executionID is unique in the current JVM. For some applications/deployments this + * executionID may need to be globally unique * * @param executionId the executionID */ @@ -255,12 +211,12 @@ public class ApexEvent extends HashMap<String, Object> implements Serializable { } /** - * Gets the exception message explaining why processing of this event to fail. + * Set the execution properties for this event. * - * @return the exception message + * @param executionProperties the execution properties to set */ - public String getExceptionMessage() { - return exceptionMessage; + public void setExecutionProperties(Properties executionProperties) { + this.executionProperties = executionProperties; } /** @@ -318,50 +274,4 @@ public class ApexEvent extends HashMap<String, Object> implements Serializable { // Go ahead and put everything super.putAll(incomingMap); } - - /* - * Object overrides from here - */ - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("name="); - builder.append(name); - builder.append(",version="); - builder.append(version); - builder.append(",nameSpace="); - builder.append(nameSpace); - builder.append(",source="); - builder.append(source); - builder.append(",target="); - builder.append(target); - builder.append(",executionID="); - builder.append(executionId); - builder.append(",exceptionMessage="); - builder.append(exceptionMessage); - builder.append(","); - builder.append("["); - - boolean firstData = true; - for (final Map.Entry<String, Object> dataEntry : this.entrySet()) { - if (firstData) { - firstData = false; - } else { - builder.append(','); - } - - builder.append(dataEntry.getKey()); - builder.append('='); - builder.append(dataEntry.getValue()); - } - - builder.append("]"); - return builder.toString(); - } } diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventConverter.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventConverter.java index 11f005ddf..a45ba2e1e 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventConverter.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventConverter.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventProducer.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventProducer.java index 414fbc9e3..1d6476837 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventProducer.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventProducer.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.service.engine.event; +import java.util.Properties; + import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters; import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode; @@ -44,7 +46,7 @@ public interface ApexEventProducer { /** * Get the peered reference object for this producer. - * + * * @param peeredMode the peered mode for which to return the reference * @return the peered reference object for this producer */ @@ -52,7 +54,7 @@ public interface ApexEventProducer { /** * Set the peered reference object for this producer. - * + * * @param peeredMode the peered mode for which to return the reference * @param peeredReference the peered reference object for this producer */ @@ -62,14 +64,15 @@ public interface ApexEventProducer { * Send an event to the producer. * * @param executionId the unique ID that produced this event + * @param executionProperties properties used during processing of this event * @param eventName The name of the event * @param event The converted event as an object */ - void sendEvent(long executionId, String eventName, Object event); + void sendEvent(long executionId, Properties executionProperties, String eventName, Object event); /** * Get the name of this event producer. - * + * * @return the event producer name */ String getName(); diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventReceiver.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventReceiver.java index 8d7e7bae5..aed031eba 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventReceiver.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/ApexEventReceiver.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.service.engine.event; +import java.util.Properties; + /** * This interface is used by an Apex event consumer {@link ApexEventConsumer} consumer to pass a * received event to Apex. @@ -31,16 +33,18 @@ public interface ApexEventReceiver { * Receive an event from a consumer for processing. * * @param executionId the unique ID for execution of this event + * @param executionProperties properties used during processing of this event * @param event the event to receive * @throws ApexEventException on exceptions receiving an event into Apex */ - void receiveEvent(long executionId, Object event) throws ApexEventException; + void receiveEvent(long executionId, Properties executionProperties, Object event) throws ApexEventException; /** * Receive an event from a consumer for processing. * + * @param executionProperties properties used during processing of this event * @param event the event to receive * @throws ApexEventException on exceptions receiving an event into Apex */ - void receiveEvent(Object event) throws ApexEventException; + void receiveEvent(Properties executionProperties, Object event) throws ApexEventException; } diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumer.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumer.java index f74751a63..8d845e0ce 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumer.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumer.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -99,7 +99,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /** * Receive an incoming event send request from the peered event Requestor producer and queue it. - * + * * @param eventObject the incoming event to process * @throws ApexEventRuntimeException on queueing errors */ @@ -117,7 +117,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#start() */ @Override @@ -131,7 +131,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getName() */ @Override @@ -141,7 +141,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /** * Get the number of events received to date. - * + * * @return the number of events received */ public int getEventsReceived() { @@ -150,7 +150,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getPeeredReference(org.onap. * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode) */ @@ -161,7 +161,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#setPeeredReference(org.onap. * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode, * org.onap.policy.apex.service.engine.event.PeeredReference) @@ -190,7 +190,7 @@ public class EventRequestorConsumer implements ApexEventConsumer, Runnable { } // Send the event into Apex - eventReceiver.receiveEvent(eventObject); + eventReceiver.receiveEvent(null, eventObject); eventsReceived++; } catch (final InterruptedException e) { diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducer.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducer.java index fda48e7ca..9018b91ef 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducer.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducer.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -22,6 +22,7 @@ package org.onap.policy.apex.service.engine.event.impl.eventrequestor; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.service.engine.event.ApexEventConsumer; import org.onap.policy.apex.service.engine.event.ApexEventException; @@ -35,11 +36,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Concrete implementation of an Apex event producer that sends one or more events to its peered - * event requestor consumer. - * + * Concrete implementation of an Apex event producer that sends one or more events to its peered event requestor + * consumer. + * * @author Liam Fallon (liam.fallon@ericsson.com) - * + * */ public class EventRequestorProducer implements ApexEventProducer { private static final Logger LOGGER = LoggerFactory.getLogger(EventRequestorProducer.class); @@ -56,7 +57,7 @@ public class EventRequestorProducer implements ApexEventProducer { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#init(java.lang.String, * org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters) */ @@ -85,7 +86,7 @@ public class EventRequestorProducer implements ApexEventProducer { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getName() */ @Override @@ -95,44 +96,35 @@ public class EventRequestorProducer implements ApexEventProducer { /** * Get the number of events sent to date. - * + * * @return the number of events received */ public int getEventsSent() { return eventsSent; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getPeeredReference(org.onap. - * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode) + /** + * {@inheritDoc} */ @Override public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) { return peerReferenceMap.get(peeredMode); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#setPeeredReference(org.onap. - * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode, - * org.onap.policy.apex.service.engine.event.PeeredReference) + /** + * {@inheritDoc} */ @Override public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) { peerReferenceMap.put(peeredMode, peeredReference); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#sendEvent(long, java.lang. - * String, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public void sendEvent(final long executionId, final String eventName, final Object eventObject) { + public void sendEvent(final long executionId, final Properties executorProperties, final String eventName, + final Object eventObject) { // Check if this is a synchronized event, if so we have received a reply final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); @@ -166,10 +158,8 @@ public class EventRequestorProducer implements ApexEventProducer { } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#stop() + /** + * {@inheritDoc} */ @Override public void stop() { diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/ApexFileEventConsumer.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/ApexFileEventConsumer.java index 0f0996fb8..076c031e9 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/ApexFileEventConsumer.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/ApexFileEventConsumer.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -80,7 +80,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { /** * Private utility to get the next candidate value for a Execution ID. This value will always be unique in a single * JVM - * + * * @return the next candidate value for a Execution ID */ private static synchronized long getNextExecutionId() { @@ -142,7 +142,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getName() */ @Override @@ -152,7 +152,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#getPeeredReference(org.onap. * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode) */ @@ -163,7 +163,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#setPeeredReference(org.onap. * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode, * org.onap.policy.apex.service.engine.event.PeeredReference) @@ -175,7 +175,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { /* * (non-Javadoc) - * + * * @see org.onap.policy.apex.service.engine.event.ApexEventConsumer#start() */ @Override @@ -211,7 +211,7 @@ public class ApexFileEventConsumer implements ApexEventConsumer, Runnable { // Process the event from the text block if there is one there if (textBlock.getText() != null) { - eventReceiver.receiveEvent(getNextExecutionId(), textBlock.getText()); + eventReceiver.receiveEvent(getNextExecutionId(), null, textBlock.getText()); } } while (!textBlock.isEndOfText()); diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/producer/ApexFileEventProducer.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/producer/ApexFileEventProducer.java index e12b772df..db8413c6f 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/producer/ApexFileEventProducer.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/producer/ApexFileEventProducer.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.PrintStream; import java.util.EnumMap; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; import org.onap.policy.apex.service.engine.event.ApexEventException; @@ -57,10 +58,8 @@ public class ApexFileEventProducer implements ApexEventProducer { private final Map<EventHandlerPeeredMode, PeeredReference> peerReferenceMap = new EnumMap<>(EventHandlerPeeredMode.class); - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.apps.uservice.producer.ApexEventProducer#init() + /** + * {@inheritDoc} */ @Override public void init(final String name, final EventHandlerParameters producerParameters) throws ApexEventException { @@ -105,47 +104,36 @@ public class ApexFileEventProducer implements ApexEventProducer { } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getName() + /** + * {@inheritDoc} */ @Override public String getName() { return producerName; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getPeeredReference(org.onap. - * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode) + /** + * {@inheritDoc} */ @Override public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) { return peerReferenceMap.get(peeredMode); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#setPeeredReference(org.onap. - * policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode, - * org.onap.policy.apex.service.engine.event.PeeredReference) + /** + * {@inheritDoc} */ @Override public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) { peerReferenceMap.put(peeredMode, peeredReference); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#sendEvent(long, - * java.lang.String, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { // Check if this is a synchronized event, if so we have received a reply final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) peerReferenceMap.get(EventHandlerPeeredMode.SYNCHRONOUS); @@ -169,10 +157,8 @@ public class ApexFileEventProducer implements ApexEventProducer { eventOutputStream.flush(); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.apps.uservice.producer.ApexEventProducer#stop() + /** + * {@inheritDoc} */ @Override public void stop() { diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventMarshaller.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventMarshaller.java index cb4086d35..7c0c17d6b 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventMarshaller.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventMarshaller.java @@ -186,7 +186,8 @@ public class ApexEventMarshaller implements ApexEventListener, Runnable { // Process the next Apex event from the queue final Object event = converter.fromApexEvent(apexEvent); - producer.sendEvent(apexEvent.getExecutionId(), apexEvent.getName(), event); + producer.sendEvent(apexEvent.getExecutionId(), apexEvent.getExecutionProperties(), apexEvent.getName(), + event); if (LOGGER.isTraceEnabled()) { final String message = "event sent : " + apexEvent.toString(); diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventUnmarshaller.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventUnmarshaller.java index 97aa25fbe..6fdc0fdef 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventUnmarshaller.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexEventUnmarshaller.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -21,6 +21,7 @@ package org.onap.policy.apex.service.engine.main; import java.util.List; +import java.util.Properties; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; @@ -88,7 +89,7 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { * @param consumerParameters the consumer parameters for this specific unmarshaler */ public ApexEventUnmarshaller(final String name, final EngineServiceParameters engineServiceParameters, - final EventHandlerParameters consumerParameters) { + final EventHandlerParameters consumerParameters) { this.name = name; this.engineServiceParameters = engineServiceParameters; this.consumerParameters = consumerParameters; @@ -118,8 +119,8 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { consumer.start(); // Configure and start the event reception thread - final String threadName = engineServiceParameters.getEngineKey().getName() + ":" + this.getClass().getName() - + ":" + name; + final String threadName = + engineServiceParameters.getEngineKey().getName() + ":" + this.getClass().getName() + ":" + name; unmarshallerThread = new ApplicationThreadFactory(threadName).newThread(this); unmarshallerThread.setDaemon(true); unmarshallerThread.start(); @@ -154,7 +155,7 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { /** * Connect a synchronous unmarshaler with a synchronous marshaler. - * + * * @param peeredMode the peered mode under which the unmarshaler and marshaler are connected * @param peeredMarshaller the synchronous marshaler to connect with */ @@ -164,7 +165,7 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { // To connect a synchronous unmarshaler and marshaler, we create a synchronous event // cache on the consumer/producer pair new SynchronousEventCache(peeredMode, consumer, peeredMarshaller.getProducer(), - consumerParameters.getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS)); + consumerParameters.getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS)); return; case REQUESTOR: @@ -176,36 +177,34 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { } } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(java.lang.Object) + /** + * {@inheritDoc} */ @Override - public void receiveEvent(final Object event) throws ApexEventException { - receiveEvent(0, event, true); + public void receiveEvent(final Properties executionProperties, final Object event) throws ApexEventException { + receiveEvent(0, executionProperties, event, true); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventReceiver#receiveEvent(long, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public void receiveEvent(final long executionId, final Object event) throws ApexEventException { - receiveEvent(executionId, event, false); + public void receiveEvent(final long executionId, final Properties executionProperties, final Object event) + throws ApexEventException { + receiveEvent(executionId, executionProperties, event, false); } /** * Receive an event from a consumer, convert its protocol and forward it to Apex. * * @param executionId the execution id the incoming execution ID + * @param executionProperties properties used during processing of this event * @param event the event in its native format * @param generateExecutionId if true, let Apex generate the execution ID, if false, use the incoming execution ID * @throws ApexEventException on unmarshaling errors on events */ - private void receiveEvent(final long executionId, final Object event, final boolean generateExecutionId) - throws ApexEventException { + private void receiveEvent(final long executionId, final Properties executionProperties, final Object event, + final boolean generateExecutionId) throws ApexEventException { // Push the event onto the queue if (LOGGER.isTraceEnabled()) { String eventString = "onMessage(): event received: " + event.toString(); @@ -215,6 +214,7 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { // Convert the incoming events to Apex events try { final List<ApexEvent> apexEventList = converter.toApexEvent(consumerParameters.getEventName(), event); + for (final ApexEvent apexEvent : apexEventList) { isEventFilteredOut(apexEvent); @@ -228,19 +228,21 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { apexEvent.setExecutionId(executionId); } + apexEvent.setExecutionProperties(executionProperties); + // Enqueue the event queue.add(apexEvent); // Cache synchronized events that are sent if (consumerParameters.isPeeredMode(EventHandlerPeeredMode.SYNCHRONOUS)) { - final SynchronousEventCache synchronousEventCache = (SynchronousEventCache) consumer - .getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS); + final SynchronousEventCache synchronousEventCache = + (SynchronousEventCache) consumer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS); synchronousEventCache.cacheSynchronizedEventToApex(apexEvent.getExecutionId(), apexEvent); } } } catch (final ApexException e) { final String errorMessage = "Error while converting event into an ApexEvent for " + name + ": " - + e.getMessage() + ", Event=" + event; + + e.getMessage() + ", Event=" + event; LOGGER.warn(errorMessage, e); throw new ApexEventException(errorMessage, e); } @@ -248,23 +250,22 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { /** * Check if an event is filtered out and ignored. - * + * * @param apexEvent the event to check */ private boolean isEventFilteredOut(final ApexEvent apexEvent) { // Check if we are filtering events on this unmarshaler, if so check the event name // against the filter if (consumerParameters.isSetEventNameFilter() - && !apexEvent.getName().matches(consumerParameters.getEventNameFilter())) { - + && !apexEvent.getName().matches(consumerParameters.getEventNameFilter())) { + if (LOGGER.isTraceEnabled()) { LOGGER.trace("onMessage(): event {} not processed, filtered out by filter", apexEvent, - consumerParameters.getEventNameFilter()); + consumerParameters.getEventNameFilter()); } - + return true; - } - else { + } else { return false; } } @@ -325,7 +326,7 @@ public class ApexEventUnmarshaller implements ApexEventReceiver, Runnable { // Order a stop on the synchronous cache if one exists if (consumerParameters != null && consumerParameters.isPeeredMode(EventHandlerPeeredMode.SYNCHRONOUS) - && consumer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS) != null) { + && consumer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS) != null) { ((SynchronousEventCache) consumer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS)).stop(); } diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyStateFinalizerExecutor.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyStateFinalizerExecutor.java index f7c0876d4..6ce7d4aa0 100644 --- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyStateFinalizerExecutor.java +++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyStateFinalizerExecutor.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -21,6 +21,7 @@ package org.onap.policy.apex.service.engine.parameters.dummyclasses; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.executor.StateFinalizerExecutor; @@ -30,13 +31,12 @@ import org.onap.policy.apex.core.engine.executor.exception.StateMachineException * Dummy state finalizer executor for testing. */ public class DummyStateFinalizerExecutor extends StateFinalizerExecutor { - public DummyStateFinalizerExecutor() { - } - + public DummyStateFinalizerExecutor() {} + @Override - public String execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { - + public String execute(final long executionId, final Properties executorProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { + return "stateOutput0"; } } diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskExecutor.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskExecutor.java index 421cfb9fc..9a93a1f2e 100644 --- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskExecutor.java +++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskExecutor.java @@ -5,15 +5,15 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ @@ -21,6 +21,7 @@ package org.onap.policy.apex.service.engine.parameters.dummyclasses; import java.util.Map; +import java.util.Properties; import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; @@ -33,21 +34,19 @@ import org.onap.policy.apex.model.policymodel.concepts.AxTask; * Dummy task executor for testing. */ public class DummyTaskExecutor extends TaskExecutor { - public DummyTaskExecutor() { - } + public DummyTaskExecutor() {} @Override - public void prepare() throws StateMachineException { - } - + public void prepare() throws StateMachineException {} + @Override - public Map<String, Object> execute(final long executionId, final Map<String, Object> newIncomingFields) - throws StateMachineException, ContextException { + public Map<String, Object> execute(final long executionId, final Properties executorProperties, + final Map<String, Object> newIncomingFields) throws StateMachineException, ContextException { AxArtifactKey event0Key = new AxArtifactKey("Event0:0.0.1"); return new EnEvent(event0Key); } - + @Override public AxTask getSubject() { AxArtifactKey taskKey = new AxArtifactKey("FirstTask:0.0.1"); @@ -55,6 +54,5 @@ public class DummyTaskExecutor extends TaskExecutor { } @Override - public void cleanUp() throws StateMachineException { - } + public void cleanUp() throws StateMachineException {} } diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskSelectExecutor.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskSelectExecutor.java index 020e69843..cf41d8699 100644 --- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskSelectExecutor.java +++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/DummyTaskSelectExecutor.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.service.engine.parameters.dummyclasses; +import java.util.Properties; + import org.onap.policy.apex.context.ContextException; import org.onap.policy.apex.core.engine.event.EnEvent; import org.onap.policy.apex.core.engine.executor.TaskSelectExecutor; @@ -30,21 +32,18 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; * Dummy task selection executor for testing. */ public class DummyTaskSelectExecutor extends TaskSelectExecutor { - public DummyTaskSelectExecutor() { - } + public DummyTaskSelectExecutor() {} @Override - public void prepare() throws StateMachineException { - } + public void prepare() throws StateMachineException {} @Override - public AxArtifactKey execute(final long executionId, final EnEvent newIncomingEvent) - throws StateMachineException, ContextException { - + public AxArtifactKey execute(final long executionId, final Properties executorProperties, + final EnEvent newIncomingEvent) throws StateMachineException, ContextException { + return new AxArtifactKey("task:0.0.1"); } @Override - public void cleanUp() throws StateMachineException { - } + public void cleanUp() throws StateMachineException {} } diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/SuperDooperEventProducer.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/SuperDooperEventProducer.java index b30ad1846..ff7d90a40 100644 --- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/SuperDooperEventProducer.java +++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/parameters/dummyclasses/SuperDooperEventProducer.java @@ -5,21 +5,23 @@ * 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. - * + * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.service.engine.parameters.dummyclasses; +import java.util.Properties; + import org.onap.policy.apex.service.engine.event.ApexEventException; import org.onap.policy.apex.service.engine.event.ApexEventProducer; import org.onap.policy.apex.service.engine.event.PeeredReference; @@ -30,6 +32,7 @@ import org.slf4j.ext.XLoggerFactory; /** * Dummy event producer parameters. + * * @author John Keeney (john.keeney@ericsson.com) */ public class SuperDooperEventProducer implements ApexEventProducer { @@ -40,67 +43,48 @@ public class SuperDooperEventProducer implements ApexEventProducer { public SuperDooperEventProducer() {} - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#init(java.lang.String, - * org.onap.policy.apex.service.parameters.producer.ProducerParameters) + /** + * {@inheritDoc} */ @Override public void init(final String name, final EventHandlerParameters producerParameters) throws ApexEventException { this.name = name; } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getName() + /** + * {@inheritDoc} */ @Override public String getName() { return name; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.service.engine.event.ApexEventProducer#getPeeredReference(org.onap.policy.apex - * .service.parameters.eventhandler.EventHandlerPeeredMode) + /** + * {@inheritDoc} */ @Override public PeeredReference getPeeredReference(final EventHandlerPeeredMode peeredMode) { return null; } - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.service.engine.event.ApexEventProducer#setPeeredReference(org.onap.policy.apex - * .service.parameters.eventhandler.EventHandlerPeeredMode, - * org.onap.policy.apex.service.engine.event.PeeredReference) + /** + * {@inheritDoc} */ @Override public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) {} - - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#sendEvent(long, - * java.lang.String, java.lang.Object) + /** + * {@inheritDoc} */ @Override - public void sendEvent(final long executionId, final String eventName, final Object event) { + public void sendEvent(final long executionId, final Properties executionProperties, final String eventName, + final Object event) { LOGGER.info("Sending Event: " + this.getClass().getCanonicalName() + ":" + this.name + " ... event (" + eventName + ") : " + event); } - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#stop() + /** + * {@inheritDoc} */ @Override public void stop() {} |