diff options
author | liamfallon <liam.fallon@est.tech> | 2019-06-26 15:40:41 +0000 |
---|---|---|
committer | liamfallon <liam.fallon@est.tech> | 2019-06-26 15:40:41 +0000 |
commit | ce9d82d2c0e863597d84cc8909955e398405f45a (patch) | |
tree | 8ebb853119bdf673cf6f9516d428d4cc00080aeb | |
parent | 5f029543f1e673655af2d2974113069df0b6def0 (diff) |
Add passthrough properties for APEX engine
APEX event receiver and sender plugins sometimes need to exchange
information with tasks, especially in the case of REST communication.
This change enables passthrough of Properties from the event carrier
technology plugins to APEX task, task selection, and state finalizer
logics.
Apologies for the size of the review but this change involves passinng
the properties through all the APEX components, hence the large number
of small changes.
Issue-ID: POLICY-1742
Change-Id: I219fd69550f06702ef64adbb165fe7baac422e96
Signed-off-by: liamfallon <liam.fallon@est.tech>
85 files changed, 903 insertions, 1136 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-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/KafkaCarrierTechnologyParameters.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/KafkaCarrierTechnologyParameters.java index f66dbfe9e..620b1fb02 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/KafkaCarrierTechnologyParameters.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/main/java/org/onap/policy/apex/plugins/event/carrier/kafka/KafkaCarrierTechnologyParameters.java @@ -55,7 +55,6 @@ public class KafkaCarrierTechnologyParameters extends CarrierTechnologyParameter public static final String KAFKA_EVENT_CONSUMER_PLUGIN_CLASS = ApexKafkaConsumer.class.getName(); // Repeated strings in messages - private static final String SPECIFY_AS_STRING_MESSAGE = "not specified, must be specified as a string"; private static final String ENTRY = "entry "; private static final String KAFKA_PROPERTIES = "kafkaProperties"; 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() {} |