X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fdatarouter%2Fpolicy%2FAbstractSpikeEntityEventProcessor.java;h=08ebd77e73ee2a927698fe7bfe29adfd24275844;hb=2f70cf4692e55dce03c130792d4d4096aaf0c354;hp=50d344b25a48566583b6e37c2578ede9a39bd46f;hpb=6015c2cc7d1cd28e91b5a9cb5aed5366c6c29290;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 50d344b..08ebd77 100644 --- a/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java +++ b/src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java @@ -26,7 +26,6 @@ import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -43,6 +42,7 @@ 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.datarouter.util.DataRouterProperties; import org.onap.aai.schema.OxmModelLoader; import org.onap.aai.datarouter.entity.DocumentStoreDataEntity; import org.onap.aai.datarouter.entity.SpikeEventEntity; @@ -59,6 +59,7 @@ 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 +82,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 +112,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 +130,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(); } @@ -460,6 +462,10 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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) { @@ -744,7 +750,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 + "'."); /* @@ -766,22 +772,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); @@ -789,12 +806,7 @@ 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; } @@ -814,12 +826,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; } @@ -831,49 +838,28 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { 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; } @@ -906,21 +892,4 @@ public abstract class AbstractSpikeEntityEventProcessor implements Processor { } - protected List extractSuggestableAttr(VersionedOxmEntities oxmEntities, String entityType) { - // Extract suggestable attributeshandleTopographicalData - Map rootDescriptor = oxmEntities.getSuggestableEntityDescriptors(); - - if (rootDescriptor == null) { - return Collections.emptyList(); - } - - OxmEntityDescriptor desc = rootDescriptor.get(entityType); - - if (desc == null) { - return Collections.emptyList(); - } - - return desc.getSuggestableAttributes(); - } - }