summaryrefslogtreecommitdiffstats
path: root/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java')
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java56
1 files changed, 51 insertions, 5 deletions
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java
index be294aae7..b9a405b44 100644
--- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java
+++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java
@@ -20,6 +20,11 @@
package org.onap.policy.apex.service.engine.runtime.impl;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Arrays;
@@ -55,11 +60,6 @@ import org.onap.policy.apex.service.engine.runtime.EngineServiceEventInterface;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-
/**
* The Class EngineWorker encapsulates a core {@link ApexEngine} instance, which runs policies
* defined in the {@link org.onap.policy.apex.model.basicmodel.concepts.AxModelAxModel}. Each policy
@@ -283,6 +283,7 @@ final class EngineWorker implements EngineService {
}
// Update the Apex model in the Apex engine
+ engine.clear();
engine.updateModel(apexModel);
LOGGER.debug("engine model {} added to the engine-{}", apexModel.getKey().getId(), engineWorkerKey);
@@ -394,9 +395,54 @@ final class EngineWorker implements EngineService {
// Interrupt the thread that is handling events toward the engine
processorThread.interrupt();
+ processorThread = null;
// Stop the engine
engine.stop();
+
+ LOGGER.exit(engineKey);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.onap.policy.apex.service.engine.runtime.EngineService#clear()
+ */
+ @Override
+ public void clear() throws ApexException {
+ clear(this.getKey());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.apex.service.engine.runtime.EngineService#clear(org.onap.policy.apex.core.
+ * model. concepts.AxArtifactKey)
+ */
+ @Override
+ public void clear(final AxArtifactKey engineKey) throws ApexException {
+ // Check if the key on the start request is correct
+ if (!engineWorkerKey.equals(engineKey)) {
+ LOGGER.warn("engine key " + engineKey.getId() + " does not match the key" + engineWorkerKey.getId()
+ + " of this engine");
+ throw new ApexException("engine key " + engineKey.getId() + " does not match the key"
+ + engineWorkerKey.getId() + " of this engine");
+ }
+
+ if (engine == null) {
+ LOGGER.error("apex engine for engine key" + engineWorkerKey.getId() + " null");
+ throw new ApexException("apex engine for engine key" + engineWorkerKey.getId() + " null");
+ }
+
+ // Interrupt the worker to stop its thread
+ if (processorThread != null && !processorThread.isAlive()) {
+ LOGGER.warn("apex engine for engine key" + engineWorkerKey.getId() + " is not stopped with state "
+ + getState());
+ return;
+ }
+
+ // Clear the engine
engine.clear();
LOGGER.exit(engineKey);