summaryrefslogtreecommitdiffstats
path: root/services/services-engine
diff options
context:
space:
mode:
Diffstat (limited to 'services/services-engine')
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/jsonprotocolplugin/Apex2JSONEventConverter.java159
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/runtime/impl/EngineWorker.java1
2 files changed, 74 insertions, 86 deletions
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/jsonprotocolplugin/Apex2JSONEventConverter.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/jsonprotocolplugin/Apex2JSONEventConverter.java
index 223843631..edaf5d5bb 100644
--- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/jsonprotocolplugin/Apex2JSONEventConverter.java
+++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/event/impl/jsonprotocolplugin/Apex2JSONEventConverter.java
@@ -43,8 +43,8 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
/**
- * The Class Apex2JSONEventConverter converts {@link ApexEvent} instances to and from JSON string representations of
- * Apex events.
+ * The Class Apex2JSONEventConverter converts {@link ApexEvent} instances to and from JSON string
+ * representations of Apex events.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
@@ -57,7 +57,8 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/*
* (non-Javadoc)
*
- * @see org.onap.policy.apex.service.engine.event.ApexEventProtocolConverter#init(org.onap.policy.
+ * @see
+ * org.onap.policy.apex.service.engine.event.ApexEventProtocolConverter#init(org.onap.policy.
* apex.service.parameters.eventprotocol.EventProtocolParameters)
*/
@Override
@@ -75,7 +76,9 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/*
* (non-Javadoc)
*
- * @see org.onap.policy.apex.service.engine.event.ApexEventConverter#toApexEvent(java.lang.String, java.lang.Object)
+ * @see
+ * org.onap.policy.apex.service.engine.event.ApexEventConverter#toApexEvent(java.lang.String,
+ * java.lang.Object)
*/
@Override
public List<ApexEvent> toApexEvent(final String eventName, final Object eventObject) throws ApexEventException {
@@ -101,8 +104,8 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
try {
// We may have a single JSON object with a single event or an array of JSON objects
- final Object decodedJsonObject = new GsonBuilder().serializeNulls().create().fromJson(jsonEventString,
- Object.class);
+ final Object decodedJsonObject =
+ new GsonBuilder().serializeNulls().create().fromJson(jsonEventString, Object.class);
// Check if we have a list of objects
if (decodedJsonObject instanceof List) {
@@ -118,15 +121,15 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
eventList.add(jsonObject2ApexEvent(eventName, (JsonObject) jsonListObject));
} else {
throw new ApexEventException("incoming event (" + jsonEventString
- + ") is a JSON object array containing an invalid object " + jsonListObject);
+ + ") is a JSON object array containing an invalid object " + jsonListObject);
}
}
} else {
eventList.add(jsonStringApexEvent(eventName, jsonEventString));
}
} catch (final Exception e) {
- final String errorString = "Failed to unmarshal JSON event: " + e.getMessage() + ", event="
- + jsonEventString;
+ final String errorString =
+ "Failed to unmarshal JSON event: " + e.getMessage() + ", event=" + jsonEventString;
LOGGER.warn(errorString, e);
throw new ApexEventException(errorString, e);
}
@@ -138,7 +141,8 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/*
* (non-Javadoc)
*
- * @see org.onap.policy.apex.service.engine.event.ApexEventConverter#fromApexEvent(org.onap.policy.
+ * @see
+ * org.onap.policy.apex.service.engine.event.ApexEventConverter#fromApexEvent(org.onap.policy.
* apex.service.engine.event.ApexEvent)
*/
@Override
@@ -150,8 +154,8 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
}
// Get the event definition for the event from the model service
- final AxEvent eventDefinition = ModelService.getModel(AxEvents.class).get(apexEvent.getName(),
- apexEvent.getVersion());
+ final AxEvent eventDefinition =
+ ModelService.getModel(AxEvents.class).get(apexEvent.getName(), apexEvent.getVersion());
// Use a GSON Json object to marshal the Apex event to JSON
final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
@@ -173,7 +177,7 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
if (!apexEvent.containsKey(fieldName)) {
if (!eventField.getOptional()) {
final String errorMessage = "error parsing " + eventDefinition.getID() + " event to Json. "
- + "Field \"" + fieldName + "\" is missing, but is mandatory. Fields: " + apexEvent;
+ + "Field \"" + fieldName + "\" is missing, but is mandatory. Fields: " + apexEvent;
LOGGER.debug(errorMessage);
throw new ApexEventRuntimeException(errorMessage);
}
@@ -183,9 +187,9 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
final Object fieldValue = apexEvent.get(fieldName);
// Get the schema helper
- final SchemaHelper fieldSchemaHelper = new SchemaHelperFactory().createSchemaHelper(eventField.getKey(),
- eventField.getSchema());
- jsonObject.add(fieldName, (JsonElement)fieldSchemaHelper.marshal2Object(fieldValue));
+ final SchemaHelper fieldSchemaHelper =
+ new SchemaHelperFactory().createSchemaHelper(eventField.getKey(), eventField.getSchema());
+ jsonObject.add(fieldName, (JsonElement) fieldSchemaHelper.marshal2Object(fieldValue));
}
// Output JSON string in a pretty format
@@ -195,23 +199,20 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method converts a JSON object into an Apex event.
*
- * @param eventName
- * the name of the event
- * @param jsonEventString
- * the JSON string that holds the event
+ * @param eventName the name of the event
+ * @param jsonEventString the JSON string that holds the event
* @return the apex event that we have converted the JSON object into
- * @throws ApexEventException
- * thrown on unmarshaling exceptions
+ * @throws ApexEventException thrown on unmarshaling exceptions
*/
private ApexEvent jsonStringApexEvent(final String eventName, final String jsonEventString)
- throws ApexEventException {
+ throws ApexEventException {
// Use GSON to read the event string
- final JsonObject jsonObject = new GsonBuilder().serializeNulls().create().fromJson(jsonEventString,
- JsonObject.class);
+ final JsonObject jsonObject =
+ new GsonBuilder().serializeNulls().create().fromJson(jsonEventString, JsonObject.class);
if (jsonObject == null || !jsonObject.isJsonObject()) {
throw new ApexEventException(
- "incoming event (" + jsonEventString + ") is not a JSON object or an JSON object array");
+ "incoming event (" + jsonEventString + ") is not a JSON object or an JSON object array");
}
return jsonObject2ApexEvent(eventName, jsonObject);
@@ -220,22 +221,19 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method converts a JSON object into an Apex event.
*
- * @param eventName
- * the name of the event
- * @param jsonObject
- * the JSON object that holds the event
+ * @param eventName the name of the event
+ * @param jsonObject the JSON object that holds the event
* @return the apex event that we have converted the JSON object into
- * @throws ApexEventException
- * thrown on unmarshaling exceptions
+ * @throws ApexEventException thrown on unmarshaling exceptions
*/
private ApexEvent jsonObject2ApexEvent(final String eventName, final JsonObject jsonObject)
- throws ApexEventException {
+ throws ApexEventException {
// Process the mandatory Apex header
final ApexEvent apexEvent = processApexEventHeader(eventName, jsonObject);
// Get the event definition for the event from the model service
- final AxEvent eventDefinition = ModelService.getModel(AxEvents.class).get(apexEvent.getName(),
- apexEvent.getVersion());
+ final AxEvent eventDefinition =
+ ModelService.getModel(AxEvents.class).get(apexEvent.getName(), apexEvent.getVersion());
// Iterate over the input fields in the event
for (final AxField eventField : eventDefinition.getFields()) {
@@ -243,7 +241,7 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
if (!hasJSONField(jsonObject, fieldName)) {
if (!eventField.getOptional()) {
final String errorMessage = "error parsing " + eventDefinition.getID() + " event from Json. "
- + "Field \"" + fieldName + "\" is missing, but is mandatory.";
+ + "Field \"" + fieldName + "\" is missing, but is mandatory.";
LOGGER.debug(errorMessage);
throw new ApexEventException(errorMessage);
}
@@ -254,8 +252,8 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
if (fieldValue != null && !fieldValue.isJsonNull()) {
// Get the schema helper
- final SchemaHelper fieldSchemaHelper = new SchemaHelperFactory().createSchemaHelper(eventField.getKey(),
- eventField.getSchema());
+ final SchemaHelper fieldSchemaHelper =
+ new SchemaHelperFactory().createSchemaHelper(eventField.getKey(), eventField.getSchema());
apexEvent.put(fieldName, fieldSchemaHelper.createNewInstance(fieldValue));
} else {
apexEvent.put(fieldName, null);
@@ -268,18 +266,14 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method processes the event header of an Apex event.
*
- * @param eventName
- * the name of the event
- * @param jsonObject
- * the JSON object containing the JSON representation of the incoming event
+ * @param eventName the name of the event
+ * @param jsonObject the JSON object containing the JSON representation of the incoming event
* @return an apex event constructed using the header fields of the event
- * @throws ApexEventRuntimeException
- * the apex event runtime exception
- * @throws ApexEventException
- * on invalid events with missing header fields
+ * @throws ApexEventRuntimeException the apex event runtime exception
+ * @throws ApexEventException on invalid events with missing header fields
*/
private ApexEvent processApexEventHeader(final String eventName, final JsonObject jsonObject)
- throws ApexEventException {
+ throws ApexEventException {
// Get the event header fields
// @formatter:off
String name = getJSONStringField(jsonObject, ApexEvent.NAME_HEADER_FIELD, jsonPars.getNameAlias(), ApexEvent.NAME_REGEXP, false);
@@ -292,14 +286,15 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
// Check that an event name has been specified
if (name == null && eventName == null) {
throw new ApexEventRuntimeException(
- "event received without mandatory parameter \"name\" on configuration or on event");
+ "event received without mandatory parameter \"name\" on configuration or on event");
}
// Check if an event name was specified on the event parameters
if (eventName != null) {
if (name != null && !eventName.equals(name)) {
- LOGGER.warn("The incoming event name \"{}\" does not match the configured event name \"{}\", using configured event name",
- name, eventName);
+ LOGGER.warn(
+ "The incoming event name \"{}\" does not match the configured event name \"{}\", using configured event name",
+ name, eventName);
}
name = eventName;
}
@@ -308,8 +303,12 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
// definition in the model service is used
final AxEvent eventDefinition = ModelService.getModel(AxEvents.class).get(name, version);
if (eventDefinition == null) {
+ if (version == null) {
+ throw new ApexEventRuntimeException(
+ "an event definition for an event named \"" + name + "\" not found in Apex model");
+ }
throw new ApexEventRuntimeException("an event definition for an event named \"" + name
- + "\" with version \"" + version + "\" not found in Apex model");
+ + "\" with version \"" + version + "\" not found in Apex model");
}
// Use the defined event version if no version is specified on the incoming fields
@@ -320,9 +319,9 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
// Check the name space is OK if it is defined, if not, use the name space from the model
if (namespace != null) {
if (!namespace.equals(eventDefinition.getNameSpace())) {
- throw new ApexEventRuntimeException("namespace \"" + namespace + "\" on event \"" + name
- + "\" does not match namespace \"" + eventDefinition.getNameSpace()
- + "\" for that event in the Apex model");
+ throw new ApexEventRuntimeException(
+ "namespace \"" + namespace + "\" on event \"" + name + "\" does not match namespace \""
+ + eventDefinition.getNameSpace() + "\" for that event in the Apex model");
}
} else {
namespace = eventDefinition.getNameSpace();
@@ -344,22 +343,17 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method gets an event string field from a JSON object.
*
- * @param jsonObject
- * the JSON object containing the JSON representation of the incoming event
- * @param fieldName
- * the field name to find in the event
- * @param fieldAlias
- * the alias for the field to find in the event, overrides the field name if it is not null
- * @param fieldRE
- * the regular expression to check the field against for validity
- * @param mandatory
- * true if the field is mandatory
+ * @param jsonObject the JSON object containing the JSON representation of the incoming event
+ * @param fieldName the field name to find in the event
+ * @param fieldAlias the alias for the field to find in the event, overrides the field name if
+ * it is not null
+ * @param fieldRE the regular expression to check the field against for validity
+ * @param mandatory true if the field is mandatory
* @return the value of the field in the JSON object or null if the field is optional
- * @throws ApexEventRuntimeException
- * the apex event runtime exception
+ * @throws ApexEventRuntimeException the apex event runtime exception
*/
private String getJSONStringField(final JsonObject jsonObject, final String fieldName, final String fieldAlias,
- final String fieldRE, final boolean mandatory) {
+ final String fieldRE, final boolean mandatory) {
// Get the JSON field for the string field
final JsonElement jsonField = getJSONField(jsonObject, fieldName, fieldAlias, mandatory);
@@ -375,7 +369,7 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
} catch (final Exception e) {
// The element is not a string so throw an error
throw new ApexEventRuntimeException("field \"" + fieldName + "\" with type \""
- + jsonField.getClass().getCanonicalName() + "\" is not a string value");
+ + jsonField.getClass().getCanonicalName() + "\" is not a string value");
}
// Is regular expression checking required
@@ -386,7 +380,7 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
// Check the event field against its regular expression
if (!fieldValueString.matches(fieldRE)) {
throw new ApexEventRuntimeException(
- "field \"" + fieldName + "\" with value \"" + fieldValueString + "\" is invalid");
+ "field \"" + fieldName + "\" with value \"" + fieldValueString + "\" is invalid");
}
return fieldValueString;
@@ -395,20 +389,16 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method gets an event field from a JSON object.
*
- * @param jsonObject
- * the JSON object containing the JSON representation of the incoming event
- * @param fieldName
- * the field name to find in the event
- * @param fieldAlias
- * the alias for the field to find in the event, overrides the field name if it is not null
- * @param mandatory
- * true if the field is mandatory
+ * @param jsonObject the JSON object containing the JSON representation of the incoming event
+ * @param fieldName the field name to find in the event
+ * @param fieldAlias the alias for the field to find in the event, overrides the field name if
+ * it is not null
+ * @param mandatory true if the field is mandatory
* @return the value of the field in the JSON object or null if the field is optional
- * @throws ApexEventRuntimeException
- * the apex event runtime exception
+ * @throws ApexEventRuntimeException the apex event runtime exception
*/
private JsonElement getJSONField(final JsonObject jsonObject, final String fieldName, final String fieldAlias,
- final boolean mandatory) {
+ final boolean mandatory) {
// Check if we should use the alias for this field
String fieldToFind = fieldName;
@@ -432,13 +422,10 @@ public class Apex2JSONEventConverter implements ApexEventProtocolConverter {
/**
* This method if a JSON object has a named field.
*
- * @param jsonObject
- * the JSON object containing the JSON representation of the incoming event
- * @param fieldName
- * the field name to find in the event
+ * @param jsonObject the JSON object containing the JSON representation of the incoming event
+ * @param fieldName the field name to find in the event
* @return true if the field is present
- * @throws ApexEventRuntimeException
- * the apex event runtime exception
+ * @throws ApexEventRuntimeException the apex event runtime exception
*/
private boolean hasJSONField(final JsonObject jsonObject, final String fieldName) {
// check for the field
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 9a9888652..cd657d8fb 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
@@ -397,6 +397,7 @@ final class EngineWorker implements EngineService {
// Stop the engine
engine.stop();
+ engine.clear();
LOGGER.exit(engineKey);
}