aboutsummaryrefslogtreecommitdiffstats
path: root/core/core-engine/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'core/core-engine/src/main')
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/engine/impl/StateMachineHandler.java20
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/event/EnEvent.java25
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/Executor.java8
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateExecutor.java114
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateFinalizerExecutor.java132
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/StateMachineExecutor.java109
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskExecutor.java138
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/TaskSelectExecutor.java110
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/StateFinalizerExecutionContext.java47
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskExecutionContext.java32
-rw-r--r--core/core-engine/src/main/java/org/onap/policy/apex/core/engine/executor/context/TaskSelectionExecutionContext.java5
11 files changed, 298 insertions, 442 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;