X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fdatarouter%2Fpolicy%2FAbstractSpikeEntityEventProcessor.java;h=4aad6f2230bd4be4ea1854941b903279bbd8280b;hb=054076beaac949cc00035f6d6b9374e8ba752db3;hp=6d04ed6d29bd26e59cb743b40e0aca6259bc6931;hpb=72da66902a3efaff3068ed2b3f4f7eb3bb5fe43f;p=aai%2Fdata-router.git diff --git a/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java b/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java index 6d04ed6..4aad6f2 100644 --- a/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java +++ b/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java @@ -33,7 +33,6 @@ import java.util.Map; 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; @@ -43,22 +42,23 @@ import org.json.JSONObject; 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.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.OxmModelLoader; 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; @@ -81,6 +81,8 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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"; @@ -109,8 +111,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { protected Logger logger; protected Logger metricsLogger; protected ObjectMapper mapper; - - + public AbstractSpikeEntityEventProcessor(SpikeEventPolicyConfig config) throws FileNotFoundException { mapper = new ObjectMapper(); @@ -128,7 +129,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { this.externalOxmModelProcessors = new ArrayList<>(); this.externalOxmModelProcessors.add(EntityOxmReferenceHelper.getInstance()); OxmModelLoader.registerExternalOxmModelProcessors(externalOxmModelProcessors); - OxmModelLoader.loadModels(); + OxmModelLoader.loadModels(config.getSchemaVersions(), config.getSchemaLocationsBean()); oxmVersionContextMap = OxmModelLoader.getVersionContextMap(); parseLatestOxmVersion(); } @@ -295,7 +296,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { } protected DynamicJAXBContext readOxm(Exchange exchange, String uebPayload) { - DynamicJAXBContext oxmJaxbContext = loadOxmContext(oxmVersion.toLowerCase()); + DynamicJAXBContext oxmJaxbContext = loadOxmContext(oxmVersion); if (oxmJaxbContext == null) { logger.error(EntityEventPolicyMsgs.OXM_VERSION_NOT_SUPPORTED, oxmVersion); logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "OXM version mismatch", uebPayload); @@ -407,13 +408,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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 getSearchableAttibutes(DynamicJAXBContext oxmJaxbContext, String oxmEntityType, @@ -539,7 +534,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { private List getOxmAttributes(DynamicJAXBContext oxmJaxbContext, String oxmEntityType, String entityType, String fieldName) { - DynamicType entity = (DynamicType) oxmJaxbContext.getDynamicType(oxmEntityType); + DynamicType entity = oxmJaxbContext.getDynamicType(oxmEntityType); if (entity == null) { return null; } @@ -750,7 +745,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { // 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 + "'."); /* @@ -772,22 +767,33 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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); @@ -795,18 +801,13 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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; } meta.setSpikeEventVertex(spikeEventVertex); - DynamicJAXBContext oxmJaxbContext = loadOxmContext(oxmVersion.toLowerCase()); + DynamicJAXBContext oxmJaxbContext = loadOxmContext(oxmVersion); if (oxmJaxbContext == null) { logger.error(EntityEventPolicyMsgs.OXM_VERSION_NOT_SUPPORTED, oxmVersion); logger.debug(EntityEventPolicyMsgs.DISCARD_EVENT_VERBOSE, "OXM version mismatch", @@ -820,12 +821,7 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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; } @@ -834,52 +830,31 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { */ VersionedOxmEntities oxmEntities = - EntityOxmReferenceHelper.getInstance().getVersionedOxmEntities(Version.valueOf(oxmVersion)); + 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; }