import org.apache.camel.Exchange;
import org.apache.camel.Processor;
-import org.apache.http.conn.routing.RouteInfo.LayerType;
import org.eclipse.persistence.dynamic.DynamicType;
import org.eclipse.persistence.internal.helper.DatabaseField;
import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.cl.mdc.MdcContext;
-import org.onap.aai.datarouter.schema.OxmModelLoader;
+import org.onap.aai.datarouter.util.DataRouterProperties;
+import org.onap.aai.schema.OxmModelLoader;
import org.onap.aai.datarouter.entity.DocumentStoreDataEntity;
-import org.onap.aai.datarouter.entity.OxmEntityDescriptor;
import org.onap.aai.datarouter.entity.SpikeEventEntity;
import org.onap.aai.datarouter.entity.SpikeEventMeta;
import org.onap.aai.datarouter.entity.SpikeEventVertex;
import org.onap.aai.datarouter.logging.EntityEventPolicyMsgs;
-import org.onap.aai.datarouter.util.EntityOxmReferenceHelper;
-import org.onap.aai.datarouter.util.ExternalOxmModelProcessor;
import org.onap.aai.datarouter.util.RouterServiceUtil;
import org.onap.aai.datarouter.util.SearchServiceAgent;
-import org.onap.aai.datarouter.util.Version;
-import org.onap.aai.datarouter.util.VersionedOxmEntities;
+import org.onap.aai.entity.OxmEntityDescriptor;
+import org.onap.aai.util.EntityOxmReferenceHelper;
+import org.onap.aai.util.ExternalOxmModelProcessor;
+import org.onap.aai.util.Version;
+import org.onap.aai.util.VersionedOxmEntities;
import org.onap.aai.restclient.client.Headers;
import org.onap.aai.restclient.client.OperationResult;
import org.onap.aai.restclient.rest.HttpUtil;
+import org.onap.aai.setup.SchemaVersions;
import org.slf4j.MDC;
import com.fasterxml.jackson.core.JsonProcessingException;
protected static final String BODY_KEY = "body";
protected static final String OPERATION_KEY = "operation";
+ protected static final String EDGE_KEY = "relationship";
+
protected static final String VERTEX_KEY = "vertex";
protected static final String VERTEX_PROPERTIES_KEY = "properties";
protected static final String VERTEX_KEY_KEY = "key";
protected Logger logger;
protected Logger metricsLogger;
protected ObjectMapper mapper;
-
-
+
public AbstractSpikeEntityEventProcessor(SpikeEventPolicyConfig config)
throws FileNotFoundException {
mapper = new ObjectMapper();
this.externalOxmModelProcessors = new ArrayList<>();
this.externalOxmModelProcessors.add(EntityOxmReferenceHelper.getInstance());
OxmModelLoader.registerExternalOxmModelProcessors(externalOxmModelProcessors);
- OxmModelLoader.loadModels();
+ OxmModelLoader.loadModels(config.getSchemaVersions(), config.getSchemaLocationsBean());
oxmVersionContextMap = OxmModelLoader.getVersionContextMap();
parseLatestOxmVersion();
}
protected String getOxmEntityType(String entityType) {
-
- String[] entityTypeArr = entityType.split("-");
- String oxmEntityType = "";
- for (String entityWord : entityTypeArr) {
- oxmEntityType += entityWord.substring(0, 1).toUpperCase() + entityWord.substring(1);
- }
- return oxmEntityType;
+ return new OxmEntityTypeConverter().convert(entityType);
}
protected List<String> getSearchableAttibutes(DynamicJAXBContext oxmJaxbContext, String oxmEntityType,
private String getEntityPrimaryKeyFieldName(DynamicJAXBContext oxmJaxbContext,
String oxmEntityType, String entityType) {
+ String defaultKey = DataRouterProperties.get("entity.primary.field");
+ if (defaultKey != null) {
+ return defaultKey;
+ }
DynamicType entity = oxmJaxbContext.getDynamicType(oxmEntityType);
if (entity == null) {
// drop event
logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "Ignoring event with sourceName='"
+ sourceName + "' and eventType='" + eventType + "'. Payload=" + eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
+ logger.info(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
"Ignoring event with sourceName='" + sourceName + "' and eventType='" + eventType + "'.");
/*
String action = eventBody.getString(OPERATION_KEY);
if (action == null || !SUPPORTED_ACTIONS.contains(action.toLowerCase())) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE,
- "Unrecognized action '" + action + "'", eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Unrecognized action '" + action + "'");
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Unrecognized action '" + action + "'");
return null;
}
meta.setBodyOperationType(action);
- // Load the event body data, any errors will result in a failure and discard
+
+ /*
+ * Ignore spike events for edges
+ */
+ if (eventBody.has(EDGE_KEY)){
+ logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "Ignoring event for edge with sourceName='"
+ + sourceName + "' and eventType='" + eventType + "'. Payload=" + eventPayload);
+ logger.info(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
+ "Ignoring event for edge with sourceName='" + sourceName + "' and eventType='" + eventType + "'.");
+ setResponse(exchange, ResponseType.SUCCESS, additionalInfo);
+ return null;
+ }
- JSONObject spikeVertex = eventBody.getJSONObject(VERTEX_KEY);
- if (spikeVertex == null) {
+
+ // Load the event body data, any errors will result in a failure and discard
+ JSONObject spikeVertex = null;
+ try {
+ spikeVertex = eventBody.getJSONObject(VERTEX_KEY);
+ } catch (JSONException exc) {
returnWithError(exchange, eventPayload, "Payload is missing " + VERTEX_KEY);
return null;
- }
+ }
meta.setSpikeVertex(spikeVertex);
try {
spikeEventVertex = initializeSpikeEventVertex(spikeVertex);
} catch (JSONException exc) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE,
- "Error initializating spike event. Error: " + exc.getMessage(), eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Error initializating spike event. Error: " + exc.getMessage());
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Error initializating spike event. Error: " + exc.getMessage());
return null;
}
String entityType = spikeEventVertex.getType();
if (entityType == null || entityType.isEmpty()) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE,
- "Payload header missing entity type", eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Payload header missing entity type");
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Payload vertex missing entity type");
return null;
}
EntityOxmReferenceHelper.getInstance().getVersionedOxmEntities(Version.valueOf(oxmVersion.toLowerCase()));
if (oxmEntities != null && !oxmEntities.getEntityTypeLookup().containsKey(entityType)) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "No matching OXM Descriptor for entity-type='" + entityType + "'",
- eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "No matching OXM Descriptor for entity-type='" + entityType + "'");
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "No matching OXM Descriptor for entity-type='" + entityType + "'");
return null;
}
String entityKey = spikeEventVertex.getKey();
if (entityKey == null || entityKey.isEmpty()) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "Payload vertex missing entity key",
- eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Payload vertex missing entity key");
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Payload vertex missing entity key");
return null;
}
+
String entityLink = spikeEventVertex.getEntityLink();
if (entityLink == null || entityLink.isEmpty()) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE,
- "Payload header missing entity link", eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Payload header missing entity link");
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Payload vertex missing entity link");
return null;
}
JSONObject vertexProperties = null;
try {
-
vertexProperties = spikeVertex.getJSONObject(VERTEX_PROPERTIES_KEY);
-
} catch (JSONException exc) {
- logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE,
- "Payload header missing " + VERTEX_PROPERTIES_KEY, eventPayload);
- logger.error(EntityEventPolicyMsgs.DISCARD_EVENT_NONVERBOSE,
- "Payload header missing " + VERTEX_PROPERTIES_KEY);
-
- setResponse(exchange, ResponseType.FAILURE, additionalInfo);
+ returnWithError(exchange, eventPayload, "Payload vertex missing " + VERTEX_PROPERTIES_KEY);
return null;
}