From bba5cd33bd251ca52bdf623e999943ee5cb23c88 Mon Sep 17 00:00:00 2001 From: Venkata Harish K Kajur Date: Tue, 15 Aug 2017 14:58:30 -0400 Subject: [AAI-171 Amsterdam] Move rest db to aai-common Change-Id: I70301abf0bee7157e851d6c866c90b38fc43c68a Signed-off-by: Venkata Harish K Kajur --- .../aai/dmaap/AAIDmaapEventJMSConsumer.java | 138 ----- .../aai/dmaap/AAIDmaapEventJMSProducer.java | 44 -- .../java/org/openecomp/aai/rest/db/DBRequest.java | 251 --------- .../java/org/openecomp/aai/rest/db/HttpEntry.java | 567 --------------------- .../openecomp/aai/rest/ueb/NotificationEvent.java | 99 ---- .../openecomp/aai/rest/ueb/UEBNotification.java | 176 ------- .../openecomp/aai/util/StoreNotificationEvent.java | 336 ------------ .../bundleconfig-local/etc/oxm/aai_oxm_v11.xml | 2 + .../openecomp/aai/introspection/aai_oxm_v11.xml | 2 + 9 files changed, 4 insertions(+), 1611 deletions(-) delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSConsumer.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSProducer.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/rest/db/DBRequest.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/rest/db/HttpEntry.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/rest/ueb/NotificationEvent.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/rest/ueb/UEBNotification.java delete mode 100644 aai-resources/src/main/java/org/openecomp/aai/util/StoreNotificationEvent.java diff --git a/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSConsumer.java b/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSConsumer.java deleted file mode 100644 index a30ebc0..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSConsumer.java +++ /dev/null @@ -1,138 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.dmaap; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import org.apache.log4j.MDC; -import org.json.JSONException; -import org.json.JSONObject; -import org.openecomp.aai.logging.ErrorLogHelper; -import org.openecomp.aai.util.AAIConstants; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.TextMessage; -import javax.ws.rs.core.MediaType; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Properties; - -public class AAIDmaapEventJMSConsumer implements MessageListener { - - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(AAIDmaapEventJMSConsumer.class); - - private Client httpClient; - - private Properties aaiEventProps; - private String aaiEventUrl = ""; - - public AAIDmaapEventJMSConsumer() throws org.apache.commons.configuration.ConfigurationException { - super(); - try { - - if (this.httpClient == null) { - FileReader reader = new FileReader(new File(AAIConstants.AAI_EVENT_DMAAP_PROPS)); - aaiEventProps = new Properties(); - aaiEventProps.load(reader); - reader.close(); - - String host = aaiEventProps.getProperty("host"); - String topic = aaiEventProps.getProperty("topic"); - String protocol = aaiEventProps.getProperty("Protocol"); - - aaiEventUrl = protocol + "://" + host + "/events/" + topic; - httpClient = Client.create(); - } - - } catch (IOException e) { - ErrorLogHelper.logError("AAI_4000", "Error updating dmaap config file for aai event."); - } - - } - - @Override - public void onMessage(Message message) { - - String jsmMessageTxt = ""; - String aaiEvent = ""; - String eventName = ""; - - if (message instanceof TextMessage) { - try { - jsmMessageTxt = ((TextMessage) message).getText(); - JSONObject jo = new JSONObject(jsmMessageTxt); - - if (jo.has("aaiEventPayload")) { - aaiEvent = jo.getJSONObject("aaiEventPayload").toString(); - } else { - return; - } - if (jo.getString("transId") != null) { - MDC.put("requestId", jo.getString("transId")); - } - if (jo.getString("fromAppId") != null) { - MDC.put("partnerName", jo.getString("fromAppId")); - } - if (jo.getString("event-topic") != null) { - eventName = jo.getString("event-topic"); - } - - LOGGER.info(eventName + "|" + aaiEvent); - if ("AAI-EVENT".equals(eventName)) { - this.sentWithHttp(this.httpClient, this.aaiEventUrl, aaiEvent); - } - } catch (java.net.SocketException e) { - if (!e.getMessage().contains("Connection reset")) { - LOGGER.error("AAI_7304 Error reaching DMaaP to send event. " + aaiEvent, e); - } - } catch (IOException e) { - LOGGER.error("AAI_7304 Error reaching DMaaP to send event. " + aaiEvent, e); - } catch (JMSException | JSONException e) { - LOGGER.error("AAI_7350 Error parsing aaievent jsm message for sending to dmaap. " + jsmMessageTxt, e); - } catch (Exception e) { - LOGGER.error("AAI_7350 Error sending message to dmaap. " + jsmMessageTxt, e); - } - } - - } - - private boolean sentWithHttp(Client client, String url, String aaiEvent) throws IOException { - - WebResource webResource = client.resource(url); - - ClientResponse response = webResource - .accept(MediaType.APPLICATION_JSON) - .type(MediaType.APPLICATION_JSON) - .post(ClientResponse.class, aaiEvent); - - if (response.getStatus() != 200) { - LOGGER.info("Failed : HTTP error code : " + response.getStatus()); - return false; - } - return true; - } -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSProducer.java b/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSProducer.java deleted file mode 100644 index 06a4fa0..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/dmaap/AAIDmaapEventJMSProducer.java +++ /dev/null @@ -1,44 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.dmaap; - -import org.apache.activemq.ActiveMQConnectionFactory; -import org.apache.activemq.command.ActiveMQQueue; -import org.json.JSONObject; -import org.springframework.jms.connection.CachingConnectionFactory; -import org.springframework.jms.core.JmsTemplate; - -public class AAIDmaapEventJMSProducer { - - private JmsTemplate jmsTemplate; - - public AAIDmaapEventJMSProducer() { - this.jmsTemplate = new JmsTemplate(); - this.jmsTemplate.setConnectionFactory(new CachingConnectionFactory(new ActiveMQConnectionFactory("tcp://localhost:61447"))); - this.jmsTemplate.setDefaultDestination(new ActiveMQQueue("IN_QUEUE")); - } - - public void sendMessageToDefaultDestination(JSONObject finalJson) { - jmsTemplate.convertAndSend(finalJson.toString()); - CachingConnectionFactory ccf = (CachingConnectionFactory)this.jmsTemplate.getConnectionFactory(); - ccf.destroy(); - } -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/rest/db/DBRequest.java b/aai-resources/src/main/java/org/openecomp/aai/rest/db/DBRequest.java deleted file mode 100644 index e7b6858..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/rest/db/DBRequest.java +++ /dev/null @@ -1,251 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.rest.db; - -import java.net.URI; -import java.util.Optional; - -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.UriInfo; - -import org.openecomp.aai.introspection.Introspector; -import org.openecomp.aai.introspection.MarshallerProperties; -import org.openecomp.aai.parsers.query.QueryParser; -import org.openecomp.aai.restcore.HttpMethod; - -/** - * The Class DBRequest. - */ -public class DBRequest { - - private final QueryParser parser; - - private final Introspector introspector; - - private final HttpHeaders headers; - - private final String transactionId; - - private final UriInfo info; - - private final HttpMethod method; - - private final URI uri; - - private final Optional rawRequestContent; - - private final Optional marshallerProperties; - - - /** - * Instantiates a new DB request. - * - * @param method the method - * @param uri the uri - * @param parser the parser - * @param obj the obj - * @param headers the headers - * @param info the info - * @param transactionId the transaction id - */ - private DBRequest(Builder builder) { - this.method = builder.getMethod(); - this.parser = builder.getParser(); - this.introspector = builder.getIntrospector(); - this.headers = builder.getHeaders(); - this.transactionId = builder.getTransactionId(); - this.info = builder.getInfo(); - this.uri = builder.getUri(); - this.marshallerProperties = builder.getMarshallerProperties(); - this.rawRequestContent = builder.getRawRequestContent(); - } - - /** - * Gets the headers. - * - * @return the headers - */ - public HttpHeaders getHeaders() { - return headers; - } - - - /** - * Gets the transaction id. - * - * @return the transaction id - */ - public String getTransactionId() { - return transactionId; - } - - /** - * Gets the info. - * - * @return the info - */ - public UriInfo getInfo() { - return info; - } - - /** - * Gets the parser. - * - * @return the parser - */ - public QueryParser getParser() { - return parser; - } - - /** - * Gets the introspector. - * - * @return the introspector - */ - public Introspector getIntrospector() { - return introspector; - } - - /** - * Gets the method. - * - * @return the method - */ - public HttpMethod getMethod() { - return method; - } - - /** - * Gets the uri. - * - * @return the uri - */ - public URI getUri() { - return uri; - } - - /** - * Gets the raw content. - * - * @return the raw content - */ - public Optional getRawRequestContent() { - return rawRequestContent; - } - - public Optional getMarshallerProperties() { - return marshallerProperties; - } - - - - public static class Builder { - - private QueryParser parser = null; - - private Introspector introspector = null; - - private HttpHeaders headers = null; - - private String transactionId = null; - - private UriInfo info = null; - - private HttpMethod method = null; - - private URI uri = null; - - private Optional marshallerProperties = Optional.empty(); - - private Optional rawRequestContent = Optional.empty(); - /** - * Instantiates a new DB request. - * - * @param method the method - * @param uri the uri - * @param parser the parser - * @param obj the obj - * @param headers the headers - * @param info the info - * @param transactionId the transaction id - */ - public Builder(HttpMethod method, URI uri, QueryParser parser, Introspector obj, HttpHeaders headers, UriInfo info, String transactionId) { - this.method = method; - this.parser = parser; - this.introspector = obj; - this.headers = headers; - this.transactionId = transactionId; - this.info = info; - this.uri = uri; - - } - - public QueryParser getParser() { - return parser; - } - - public Introspector getIntrospector() { - return introspector; - } - - public HttpHeaders getHeaders() { - return headers; - } - - public String getTransactionId() { - return transactionId; - } - - public UriInfo getInfo() { - return info; - } - - public HttpMethod getMethod() { - return method; - } - - public URI getUri() { - return uri; - } - - public Builder customMarshaller(MarshallerProperties properties) { - this.marshallerProperties = Optional.of(properties); - return this; - } - - public Builder rawRequestContent(String content) { - this.rawRequestContent = Optional.of(content); - return this; - } - protected Optional getMarshallerProperties() { - return marshallerProperties; - } - protected Optional getRawRequestContent() { - return rawRequestContent; - } - public DBRequest build() { - - return new DBRequest(this); - } - - - } -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/rest/db/HttpEntry.java b/aai-resources/src/main/java/org/openecomp/aai/rest/db/HttpEntry.java deleted file mode 100644 index 08cc813..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/rest/db/HttpEntry.java +++ /dev/null @@ -1,567 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.rest.db; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Set; - -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriBuilder; - -import org.apache.commons.lang.StringUtils; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.javatuples.Pair; -import org.openecomp.aai.db.props.AAIProperties; -import org.openecomp.aai.dbmap.DBConnectionType; -import org.openecomp.aai.domain.responseMessage.AAIResponseMessage; -import org.openecomp.aai.domain.responseMessage.AAIResponseMessageDatum; -import org.openecomp.aai.exceptions.AAIException; -import org.openecomp.aai.introspection.Introspector; -import org.openecomp.aai.introspection.Loader; -import org.openecomp.aai.introspection.LoaderFactory; -import org.openecomp.aai.introspection.MarshallerProperties; -import org.openecomp.aai.introspection.ModelInjestor; -import org.openecomp.aai.introspection.ModelType; -import org.openecomp.aai.introspection.Version; -import org.openecomp.aai.introspection.exceptions.AAIUnknownObjectException; -import org.openecomp.aai.logging.ErrorLogHelper; -import org.openecomp.aai.parsers.query.QueryParser; -import org.openecomp.aai.parsers.uri.URIToExtensionInformation; -import org.openecomp.aai.rest.ueb.UEBNotification; -import org.openecomp.aai.restcore.HttpMethod; -import org.openecomp.aai.schema.enums.ObjectMetadata; -import org.openecomp.aai.serialization.db.DBSerializer; -import org.openecomp.aai.serialization.engines.QueryStyle; -import org.openecomp.aai.serialization.engines.TitanDBEngine; -import org.openecomp.aai.serialization.engines.TransactionalGraphEngine; -import org.openecomp.aai.serialization.engines.query.QueryEngine; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.fge.jsonpatch.JsonPatchException; -import com.github.fge.jsonpatch.mergepatch.JsonMergePatch; -import com.thinkaurelius.titan.core.TitanException; - -/** - * The Class HttpEntry. - */ -public class HttpEntry { - - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(HttpEntry.class); - - private final ModelType introspectorFactoryType; - - private final QueryStyle queryStyle; - - private final Version version; - - private final Loader loader; - - private final TransactionalGraphEngine dbEngine; - - private boolean processSingle = true; - - /** - * Instantiates a new http entry. - * - * @param version the version - * @param modelType the model type - * @param queryStyle the query style - * @param llBuilder the ll builder - */ - public HttpEntry(Version version, ModelType modelType, QueryStyle queryStyle, DBConnectionType connectionType) { - this.introspectorFactoryType = modelType; - this.queryStyle = queryStyle; - this.version = version; - this.loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - this.dbEngine = new TitanDBEngine( - queryStyle, - connectionType, - loader); - //start transaction on creation - dbEngine.startTransaction(); - - } - - /** - * Gets the introspector factory type. - * - * @return the introspector factory type - */ - public ModelType getIntrospectorFactoryType() { - return introspectorFactoryType; - } - - /** - * Gets the query style. - * - * @return the query style - */ - public QueryStyle getQueryStyle() { - return queryStyle; - } - - /** - * Gets the version. - * - * @return the version - */ - public Version getVersion() { - return version; - } - - /** - * Gets the loader. - * - * @return the loader - */ - public Loader getLoader() { - return loader; - } - - /** - * Gets the db engine. - * - * @return the db engine - */ - public TransactionalGraphEngine getDbEngine() { - return dbEngine; - } - - public Pair>> process (List requests, String sourceOfTruth) throws AAIException { - return this.process(requests, sourceOfTruth, true); - } - /** - * Process. - * @param requests the requests - * @param sourceOfTruth the source of truth - * - * @return the pair - * @throws AAIException the AAI exception - */ - public Pair>> process (List requests, String sourceOfTruth, boolean enableResourceVersion) throws AAIException { - DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, sourceOfTruth); - Response response = null; - Status status = Status.NOT_FOUND; - Introspector obj = null; - QueryParser query = null; - URI uri = null; - String transactionId = null; - UEBNotification notification = new UEBNotification(loader); - int depth = AAIProperties.MAXIMUM_DEPTH; - List> responses = new ArrayList<>(); - MultivaluedMap params = null; - HttpMethod method = null; - String uriTemp = ""; - Boolean success = true; - QueryEngine queryEngine = dbEngine.getQueryEngine(); - int maxRetries = 10; - int retry = 0; - for (DBRequest request : requests) { - try { - for (retry = 0; retry < maxRetries; ++retry) { - try { - method = request.getMethod(); - obj = request.getIntrospector(); - query = request.getParser(); - transactionId = request.getTransactionId(); - uriTemp = request.getUri().getRawPath().replaceFirst("^v\\d+/", ""); - uri = UriBuilder.fromPath(uriTemp).build(); - List vertices = query.getQueryBuilder().toList(); - boolean isNewVertex = false; - String outputMediaType = getMediaType(request.getHeaders().getAcceptableMediaTypes()); - String result = null; - params = request.getInfo().getQueryParameters(false); - depth = setDepth(obj, params.getFirst("depth")); - String cleanUp = params.getFirst("cleanup"); - String requestContext = ""; - List requestContextList = request.getHeaders().getRequestHeader("aai-request-context"); - if (requestContextList != null) { - requestContext = requestContextList.get(0); - } - - if (cleanUp == null) { - cleanUp = "false"; - } - if (vertices.size() > 1 && processSingle && !method.equals(HttpMethod.GET)) { - if (method.equals(HttpMethod.DELETE)) { - throw new AAIException("AAI_6138"); - } else { - throw new AAIException("AAI_6137"); - } - } - if (method.equals(HttpMethod.PUT)) { - String resourceVersion = (String)obj.getValue("resource-version"); - if (vertices.size() == 1) { - if (enableResourceVersion) { - serializer.verifyResourceVersion("update", query.getResultType(), (String)vertices.get(0).property("resource-version").orElse(null), resourceVersion, obj.getURI()); - } - isNewVertex = false; - } else { - if (enableResourceVersion) { - serializer.verifyResourceVersion("create", query.getResultType(), "", resourceVersion, obj.getURI()); - } - isNewVertex = true; - } - } else { - if (vertices.size() == 0) { - String msg = createNotFoundMessage(query.getResultType(), request.getUri()); - throw new AAIException("AAI_6114", msg); - } else { - isNewVertex = false; - } - } - Vertex v = null; - if (!isNewVertex) { - v = vertices.get(0); - } - HashMap relatedObjects = new HashMap<>(); - switch (method) { - case GET: - String nodeOnly = params.getFirst("nodes-only"); - boolean isNodeOnly = nodeOnly != null; - - obj = this.getObjectFromDb(vertices, serializer, query, obj, request.getUri(), depth, isNodeOnly, cleanUp); - if (obj != null) { - status = Status.OK; - MarshallerProperties properties; - if (!request.getMarshallerProperties().isPresent()) { - properties = - new MarshallerProperties.Builder(org.openecomp.aai.restcore.MediaType.getEnum(outputMediaType)).build(); - } else { - properties = request.getMarshallerProperties().get(); - } - result = obj.marshal(properties); - } - - break; - case PUT: - if (isNewVertex) { - v = serializer.createNewVertex(obj); - } - serializer.serializeToDb(obj, v, query, uri.getRawPath(), requestContext); - status = Status.OK; - if (isNewVertex) { - status = Status.CREATED; - } - obj = serializer.getLatestVersionView(v); - if (query.isDependent()) { - relatedObjects = this.getRelatedObjects(serializer, queryEngine, v); - } - notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, obj, relatedObjects); - - break; - case PUT_EDGE: - serializer.touchStandardVertexProperties(v, false); - serializer.createEdge(obj, v); - status = Status.OK; - break; - case MERGE_PATCH: - Introspector existingObj = (Introspector) obj.clone(); - existingObj = this.getObjectFromDb(vertices, serializer, query, existingObj, request.getUri(), 0, false, cleanUp); - String existingJson = existingObj.marshal(false); - String newJson; - - if (request.getRawRequestContent().isPresent()) { - newJson = request.getRawRequestContent().get(); - } else { - newJson = ""; - } - Object relationshipList = request.getIntrospector().getValue("relationship-list"); - ObjectMapper mapper = new ObjectMapper(); - try { - JsonNode existingNode = mapper.readTree(existingJson); - JsonNode newNode = mapper.readTree(newJson); - JsonMergePatch patch = JsonMergePatch.fromJson(newNode); - JsonNode completed = patch.apply(existingNode); - String patched = mapper.writeValueAsString(completed); - Introspector patchedObj = loader.unmarshal(existingObj.getName(), patched); - if (relationshipList == null) { - //if the caller didn't touch the relationship-list, we shouldn't either - patchedObj.setValue("relationship-list", null); - } - serializer.serializeToDb(patchedObj, v, query, uri.getRawPath(), requestContext); - status = Status.OK; - patchedObj = serializer.getLatestVersionView(v); - if (query.isDependent()) { - relatedObjects = this.getRelatedObjects(serializer, queryEngine, v); - } - notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, patchedObj, relatedObjects); - } catch (IOException | JsonPatchException e) { - throw new AAIException("AAI_3000", "could not perform patch operation"); - } - break; - case DELETE: - String resourceVersion = params.getFirst("resource-version"); - obj = serializer.getLatestVersionView(v); - if (query.isDependent()) { - relatedObjects = this.getRelatedObjects(serializer, queryEngine, v); - } - serializer.delete(v, resourceVersion, enableResourceVersion); - status = Status.NO_CONTENT; - notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, obj, relatedObjects); - break; - case DELETE_EDGE: - serializer.touchStandardVertexProperties(v, false); - serializer.deleteEdge(obj, v); - status = Status.NO_CONTENT; - break; - default: - break; - } - - - /* temporarily adding vertex id to the headers - * to be able to use for testing the vertex id endpoint functionality - * since we presently have no other way of generating those id urls - */ - if (response == null && v != null && ( - method.equals(HttpMethod.PUT) - || method.equals(HttpMethod.GET) - || method.equals(HttpMethod.MERGE_PATCH)) - ) { - String myvertid = v.id().toString(); - response = Response.status(status) - .header("vertex-id", myvertid) - .entity(result) - .type(outputMediaType).build(); - } else if (response == null) { - response = Response.status(status) - .type(outputMediaType).build(); - } else { - //response already set to something - } - Pair pairedResp = Pair.with(request.getUri(), response); - responses.add(pairedResp); - //break out of retry loop - break; - } catch (TitanException e) { - this.dbEngine.rollback(); - AAIException ex = new AAIException("AAI_6142", e); - ErrorLogHelper.logException(ex); - Thread.sleep((retry + 1) * 20); - this.dbEngine.startTransaction(); - queryEngine = dbEngine.getQueryEngine(); - serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, sourceOfTruth); - } - - if (retry == maxRetries) { - throw new AAIException("AAI_6134"); - } - } - } catch (AAIException e) { - success = false; - ArrayList templateVars = new ArrayList(); - templateVars.add(request.getMethod().toString()); //GET, PUT, etc - templateVars.add(request.getUri().getPath().toString()); - templateVars.addAll(e.getTemplateVars()); - - response = Response - .status(e.getErrorObject().getHTTPResponseCode()) - .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), e, templateVars)) - .build(); - Pair pairedResp = Pair.with(request.getUri(), response); - responses.add(pairedResp); - continue; - } catch (Exception e) { - success = false; - e.printStackTrace(); - AAIException ex = new AAIException("AAI_4000", e); - ArrayList templateVars = new ArrayList(); - templateVars.add(request.getMethod().toString()); //GET, PUT, etc - templateVars.add(request.getUri().getPath().toString()); - - response = Response - .status(ex.getErrorObject().getHTTPResponseCode()) - .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), ex, templateVars)) - .build(); - Pair pairedResp = Pair.with(request.getUri(), response); - responses.add(pairedResp); - continue; - } - } - - notification.triggerEvents(); - Pair>> tuple = Pair.with(success, responses); - return tuple; - } - - /** - * Gets the media type. - * - * @param mediaTypeList the media type list - * @return the media type - */ - private String getMediaType(List mediaTypeList) { - String mediaType = MediaType.APPLICATION_JSON; // json is the default - for (MediaType mt : mediaTypeList) { - if (MediaType.APPLICATION_XML_TYPE.isCompatible(mt)) { - mediaType = MediaType.APPLICATION_XML; - } - } - return mediaType; - } - - /** - * Gets the object from db. - * - * @param serializer the serializer - * @param g the g - * @param query the query - * @param obj the obj - * @param uri the uri - * @param depth the depth - * @param cleanUp the clean up - * @return the object from db - * @throws AAIException the AAI exception - * @throws IllegalAccessException the illegal access exception - * @throws IllegalArgumentException the illegal argument exception - * @throws InvocationTargetException the invocation target exception - * @throws SecurityException the security exception - * @throws InstantiationException the instantiation exception - * @throws NoSuchMethodException the no such method exception - * @throws UnsupportedEncodingException the unsupported encoding exception - * @throws MalformedURLException the malformed URL exception - * @throws AAIUnknownObjectException - * @throws URISyntaxException - */ - private Introspector getObjectFromDb(List results, DBSerializer serializer, QueryParser query, Introspector obj, URI uri, int depth, boolean nodeOnly, String cleanUp) throws AAIException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, UnsupportedEncodingException, AAIUnknownObjectException, URISyntaxException { - - //nothing found - if (results.size() == 0) { - String msg = createNotFoundMessage(query.getResultType(), uri); - throw new AAIException("AAI_6114", msg); - } - - obj = serializer.dbToObject(results, obj, depth, nodeOnly, cleanUp); - - return obj; - } - - - /** - * Creates the not found message. - * - * @param resultType the result type - * @param uri the uri - * @return the string - */ - private String createNotFoundMessage(String resultType, URI uri) { - - String msg = "No Node of type " + resultType + " found at: " + uri.getPath(); - - return msg; - } - - /** - * Sets the depth. - * - * @param depthParam the depth param - * @return the int - * @throws AAIException the AAI exception - */ - protected int setDepth(Introspector obj, String depthParam) throws AAIException { - int depth = AAIProperties.MAXIMUM_DEPTH; - - if(depthParam == null){ - if(this.version.compareTo(Version.v9) >= 0){ - depth = 0; - } else { - depth = AAIProperties.MAXIMUM_DEPTH; - } - } else { - if (depthParam.length() > 0 && !depthParam.equals("all")){ - try { - depth = Integer.valueOf(depthParam); - } catch (Exception e) { - throw new AAIException("AAI_4016"); - } - - } - } - String maxDepth = obj.getMetadata(ObjectMetadata.MAXIMUM_DEPTH); - - int maximumDepth = AAIProperties.MAXIMUM_DEPTH; - - if(maxDepth != null){ - try { - maximumDepth = Integer.parseInt(maxDepth); - } catch(Exception ex){ - throw new AAIException("AAI_4018"); - } - } - - if(depth > maximumDepth){ - throw new AAIException("AAI_3303"); - } - - return depth; - } - - /** - * Checks if is modification method. - * - * @param method the method - * @return true, if is modification method - */ - private boolean isModificationMethod(HttpMethod method) { - boolean result = false; - - if (method.equals(HttpMethod.PUT) || method.equals(HttpMethod.PUT_EDGE) || method.equals(HttpMethod.DELETE_EDGE) || method.equals(HttpMethod.MERGE_PATCH)) { - result = true; - } - - return result; - - } - - private HashMap getRelatedObjects(DBSerializer serializer, QueryEngine queryEngine, Vertex v) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, UnsupportedEncodingException, AAIException, URISyntaxException { - HashMap relatedVertices = new HashMap<>(); - List vertexChain = queryEngine.findParents(v); - for (Vertex vertex : vertexChain) { - try { - final Introspector vertexObj = serializer.getVertexProperties(vertex); - relatedVertices.put(vertexObj.getObjectId(), vertexObj); - } catch (AAIUnknownObjectException e) { - LOGGER.warn("Unable to get vertex properties, partial list of related vertices returned"); - } - - } - - return relatedVertices; - } - -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/NotificationEvent.java b/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/NotificationEvent.java deleted file mode 100644 index e473e9d..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/NotificationEvent.java +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.rest.ueb; - -import org.openecomp.aai.exceptions.AAIException; -import org.openecomp.aai.introspection.Introspector; -import org.openecomp.aai.introspection.Loader; -import org.openecomp.aai.introspection.Version; -import org.openecomp.aai.util.StoreNotificationEvent; - -/** - * The Class NotificationEvent. - */ -public class NotificationEvent { - - private final Loader loader; - - private final Introspector eventHeader; - - private final Introspector obj; - private final String transactionId; - private final String sourceOfTruth; - /** - * Instantiates a new notification event. - * - * @param version the version - * @param eventHeader the event header - * @param obj the obj - */ - public NotificationEvent (Loader loader, Introspector eventHeader, Introspector obj, String transactionId, String sourceOfTruth) { - this.loader = loader; - this.eventHeader = eventHeader; - this.obj = obj; - this.transactionId = transactionId; - this.sourceOfTruth = sourceOfTruth; - } - - /** - * Trigger. - * - * @throws AAIException the AAI exception - */ - public void trigger() throws AAIException { - - StoreNotificationEvent sne = new StoreNotificationEvent(transactionId, sourceOfTruth); - - sne.storeEvent(loader, eventHeader, obj); - - } - - /** - * Gets the notification version. - * - * @return the notification version - */ - public Version getNotificationVersion() { - return loader.getVersion(); - } - - /** - * Gets the event header. - * - * @return the event header - */ - public Introspector getEventHeader() { - return eventHeader; - } - - /** - * Gets the obj. - * - * @return the obj - */ - public Introspector getObj() { - return obj; - } - - - - -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/UEBNotification.java b/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/UEBNotification.java deleted file mode 100644 index fdba308..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/rest/ueb/UEBNotification.java +++ /dev/null @@ -1,176 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.rest.ueb; - -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.ws.rs.core.Response.Status; - -import org.openecomp.aai.db.props.AAIProperties; -import org.openecomp.aai.exceptions.AAIException; -import org.openecomp.aai.introspection.Introspector; -import org.openecomp.aai.introspection.Loader; -import org.openecomp.aai.introspection.LoaderFactory; -import org.openecomp.aai.introspection.Version; -import org.openecomp.aai.introspection.exceptions.AAIUnknownObjectException; -import org.openecomp.aai.introspection.exceptions.AAIUnmarshallingException; -import org.openecomp.aai.parsers.uri.URIToObject; -import org.openecomp.aai.util.AAIConfig; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -/** - * The Class UEBNotification. - */ -public class UEBNotification { - - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(UEBNotification.class); - - private Loader currentVersionLoader = null; - protected List events = null; - private Version notificationVersion = null; - - /** - * Instantiates a new UEB notification. - * - * @param loader the loader - */ - public UEBNotification(Loader loader) { - events = new ArrayList<>(); - currentVersionLoader = LoaderFactory.createLoaderForVersion(loader.getModelType(), AAIProperties.LATEST); - notificationVersion = Version.valueOf(AAIConfig.get("aai.notification.current.version","v11")); - } - - - /** - * Creates the notification event. - * - * @param transactionId the X-TransactionId - * @param sourceOfTruth - * @param status the status - * @param uri the uri - * @param obj the obj - * @throws AAIException the AAI exception - * @throws IllegalArgumentException the illegal argument exception - * @throws UnsupportedEncodingException the unsupported encoding exception - */ - public void createNotificationEvent(String transactionId, String sourceOfTruth, Status status, URI uri, Introspector obj, HashMap relatedObjects) throws AAIException, UnsupportedEncodingException { - - String action = "UPDATE"; - - if (status.equals(Status.CREATED)) { - action = "CREATE"; - } else if (status.equals(Status.OK)) { - action = "UPDATE"; - } else if (status.equals(Status.NO_CONTENT)) { - action = "DELETE"; - } - - try { - Introspector eventHeader = currentVersionLoader.introspectorFromName("notification-event-header"); - URIToObject parser = new URIToObject(currentVersionLoader, uri, relatedObjects); - - String entityLink = ""; - if (uri.toString().startsWith("/")) { - entityLink = "/aai/" + notificationVersion + uri; - } else { - entityLink = "/aai/" + notificationVersion + "/" + uri; - } - - - eventHeader.setValue("entity-link", entityLink); - eventHeader.setValue("action", action); - eventHeader.setValue("entity-type", obj.getDbName()); - eventHeader.setValue("top-entity-type", parser.getTopEntityName()); - eventHeader.setValue("source-name", sourceOfTruth); - eventHeader.setValue("version", notificationVersion.toString()); - eventHeader.setValue("id", transactionId); - - List parentList = parser.getParentList(); - parentList.clear(); - - if (!parser.getTopEntity().equals(parser.getEntity())) { - Introspector child = obj; - if (!parser.getLoader().getVersion().equals(obj.getVersion())) { - String json = obj.marshal(false); - child = parser.getLoader().unmarshal(parser.getEntity().getName(), json); - } - - //wrap the child object in its parents - parentList.add(child.getUnderlyingObject()); - } - - final Introspector eventObject; - - //convert to most resent version - if (!parser.getLoader().getVersion().equals(currentVersionLoader.getVersion())) { - String json = ""; - if (parser.getTopEntity().equals(parser.getEntity())) { - //convert the parent object passed in - json = obj.marshal(false); - eventObject = currentVersionLoader.unmarshal(obj.getName(), json); - } else { - //convert the object created in the parser - json = parser.getTopEntity().marshal(false); - eventObject = currentVersionLoader.unmarshal(parser.getTopEntity().getName(), json); - } - } else { - if (parser.getTopEntity().equals(parser.getEntity())) { - //take the top level parent object passed in - eventObject = obj; - } else { - //take the wrapped child objects (ogres are like onions) - eventObject = parser.getTopEntity(); - } - } - - final NotificationEvent event = new NotificationEvent(currentVersionLoader, eventHeader, eventObject, transactionId, sourceOfTruth); - events.add(event); - } catch (AAIUnknownObjectException e) { - throw new RuntimeException("Fatal error - notification-event-header object not found!"); - } catch (AAIUnmarshallingException e) { - LOGGER.error("Unmarshalling error occurred while generating UEBNotification", e); - } - } - - /** - * Trigger events. - * - * @throws AAIException the AAI exception - */ - public void triggerEvents() throws AAIException { - for (NotificationEvent event : events) { - event.trigger(); - } - events.clear(); - } - - public List getEvents() { - return this.events; - } - - - -} diff --git a/aai-resources/src/main/java/org/openecomp/aai/util/StoreNotificationEvent.java b/aai-resources/src/main/java/org/openecomp/aai/util/StoreNotificationEvent.java deleted file mode 100644 index 161339c..0000000 --- a/aai-resources/src/main/java/org/openecomp/aai/util/StoreNotificationEvent.java +++ /dev/null @@ -1,336 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.openecomp.aai - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.aai.util; - -import java.io.StringWriter; -import java.util.Iterator; -import java.util.UUID; - -import javax.xml.bind.Marshaller; - -import org.eclipse.persistence.dynamic.DynamicEntity; -import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; -import org.json.JSONException; -import org.json.JSONObject; -import org.openecomp.aai.dmaap.AAIDmaapEventJMSProducer; -import org.openecomp.aai.domain.notificationEvent.NotificationEvent; -import org.openecomp.aai.exceptions.AAIException; -import org.openecomp.aai.introspection.Introspector; -import org.openecomp.aai.introspection.Loader; -import org.openecomp.aai.introspection.exceptions.AAIUnknownObjectException; - -public class StoreNotificationEvent { - - private AAIDmaapEventJMSProducer messageProducer; - private String fromAppId = ""; - private String transId = ""; - private final String transactionId; - private final String sourceOfTruth; - /** - * Instantiates a new store notification event. - */ - public StoreNotificationEvent(String transactionId, String sourceOfTruth) { - this.messageProducer = new AAIDmaapEventJMSProducer(); - this.transactionId = transactionId; - this.sourceOfTruth = sourceOfTruth; - } - - /** - * Store event. - * - * @param eh - * the eh - * @param obj - * the obj - * @throws AAIException - * the AAI exception - */ - public void storeEvent(NotificationEvent.EventHeader eh, Object obj) throws AAIException { - - if (obj == null) { - throw new AAIException("AAI_7350"); - } - - org.openecomp.aai.domain.notificationEvent.ObjectFactory factory = new org.openecomp.aai.domain.notificationEvent.ObjectFactory(); - - org.openecomp.aai.domain.notificationEvent.NotificationEvent ne = factory.createNotificationEvent(); - - if (eh.getId() == null) { - eh.setId(genDate2() + "-" + UUID.randomUUID().toString()); - } - if (eh.getTimestamp() == null) { - eh.setTimestamp(genDate()); - } - - // there's no default, but i think we want to put this in hbase? - - if (eh.getEntityLink() == null) { - eh.setEntityLink("UNK"); - } - - if (eh.getAction() == null) { - eh.setAction("UNK"); - } - - if (eh.getEventType() == null) { - eh.setEventType(AAIConfig.get("aai.notificationEvent.default.eventType", "UNK")); - } - - if (eh.getDomain() == null) { - eh.setDomain(AAIConfig.get("aai.notificationEvent.default.domain", "UNK")); - } - - if (eh.getSourceName() == null) { - eh.setSourceName(AAIConfig.get("aai.notificationEvent.default.sourceName", "UNK")); - } - - if (eh.getSequenceNumber() == null) { - eh.setSequenceNumber(AAIConfig.get("aai.notificationEvent.default.sequenceNumber", "UNK")); - } - - if (eh.getSeverity() == null) { - eh.setSeverity(AAIConfig.get("aai.notificationEvent.default.severity", "UNK")); - } - - if (eh.getVersion() == null) { - eh.setVersion(AAIConfig.get("aai.notificationEvent.default.version", "UNK")); - } - - ne.setCambriaPartition(AAIConstants.UEB_PUB_PARTITION_AAI); - ne.setEventHeader(eh); - ne.setEntity(obj); - - try { - PojoUtils pu = new PojoUtils(); - String entityJson = pu.getJsonFromObject(ne); - sendToDmaapJmsQueue(entityJson); - } catch (Exception e) { - throw new AAIException("AAI_7350", e); - } - } - - /** - * Store dynamic event. - * - * @param notificationJaxbContext - * the notification jaxb context - * @param notificationVersion - * the notification version - * @param eventHeader - * the event header - * @param obj - * the obj - * @throws AAIException - * the AAI exception - */ - public void storeDynamicEvent(DynamicJAXBContext notificationJaxbContext, String notificationVersion, DynamicEntity eventHeader, DynamicEntity obj) throws AAIException { - - if (obj == null) { - throw new AAIException("AAI_7350"); - } - - DynamicEntity notificationEvent = notificationJaxbContext.getDynamicType("inventory.aai.openecomp.org." + notificationVersion + ".NotificationEvent").newDynamicEntity(); - - if (eventHeader.get("id") == null) { - eventHeader.set("id", genDate2() + "-" + UUID.randomUUID().toString()); - } - - if (eventHeader.get("timestamp") == null) { - eventHeader.set("timestamp", genDate()); - } - - if (eventHeader.get("entityLink") == null) { - eventHeader.set("entityLink", "UNK"); - } - - if (eventHeader.get("action") == null) { - eventHeader.set("action", "UNK"); - } - - if (eventHeader.get("eventType") == null) { - eventHeader.set("eventType", AAIConfig.get("aai.notificationEvent.default.eventType", "UNK")); - } - - if (eventHeader.get("domain") == null) { - eventHeader.set("domain", AAIConfig.get("aai.notificationEvent.default.domain", "UNK")); - } - - if (eventHeader.get("sourceName") == null) { - eventHeader.set("sourceName", AAIConfig.get("aai.notificationEvent.default.sourceName", "UNK")); - } - - if (eventHeader.get("sequenceNumber") == null) { - eventHeader.set("sequenceNumber", AAIConfig.get("aai.notificationEvent.default.sequenceNumber", "UNK")); - } - - if (eventHeader.get("severity") == null) { - eventHeader.set("severity", AAIConfig.get("aai.notificationEvent.default.severity", "UNK")); - } - - if (eventHeader.get("version") == null) { - eventHeader.set("version", AAIConfig.get("aai.notificationEvent.default.version", "UNK")); - } - - if (notificationEvent.get("cambriaPartition") == null) { - notificationEvent.set("cambriaPartition", AAIConstants.UEB_PUB_PARTITION_AAI); - } - - notificationEvent.set("eventHeader", eventHeader); - notificationEvent.set("entity", obj); - - try { - StringWriter result = new StringWriter(); - - Marshaller marshaller = notificationJaxbContext.createMarshaller(); - marshaller.setProperty(org.eclipse.persistence.jaxb.MarshallerProperties.MEDIA_TYPE, "application/json"); - marshaller.setProperty(org.eclipse.persistence.jaxb.MarshallerProperties.JSON_INCLUDE_ROOT, false); - marshaller.setProperty(org.eclipse.persistence.jaxb.MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME, false); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false); - marshaller.marshal(notificationEvent, result); - - this.sendToDmaapJmsQueue(result.toString()); - - } catch (Exception e) { - throw new AAIException("AAI_7350", e); - } - } - - public void storeEvent(Loader loader, Introspector eventHeader, Introspector obj) throws AAIException { - if (obj == null) { - throw new AAIException("AAI_7350"); - } - - try { - final Introspector notificationEvent = loader.introspectorFromName("notification-event"); - - if (eventHeader.getValue("id") == null) { - eventHeader.setValue("id", genDate2() + "-" + UUID.randomUUID().toString()); - } - - if (eventHeader.getValue("timestamp") == null) { - eventHeader.setValue("timestamp", genDate()); - } - - if (eventHeader.getValue("entity-link") == null) { - eventHeader.setValue("entity-link", "UNK"); - } - - if (eventHeader.getValue("action") == null) { - eventHeader.setValue("action", "UNK"); - } - - if (eventHeader.getValue("event-type") == null) { - eventHeader.setValue("event-type", AAIConfig.get("aai.notificationEvent.default.eventType", "UNK")); - } - - if (eventHeader.getValue("domain") == null) { - eventHeader.setValue("domain", AAIConfig.get("aai.notificationEvent.default.domain", "UNK")); - } - - if (eventHeader.getValue("source-name") == null) { - eventHeader.setValue("source-name", AAIConfig.get("aai.notificationEvent.default.sourceName", "UNK")); - } - - if (eventHeader.getValue("sequence-number") == null) { - eventHeader.setValue("sequence-number", AAIConfig.get("aai.notificationEvent.default.sequenceNumber", "UNK")); - } - - if (eventHeader.getValue("severity") == null) { - eventHeader.setValue("severity", AAIConfig.get("aai.notificationEvent.default.severity", "UNK")); - } - - if (eventHeader.getValue("version") == null) { - eventHeader.setValue("version", AAIConfig.get("aai.notificationEvent.default.version", "UNK")); - } - - if (notificationEvent.getValue("cambria-partition") == null) { - notificationEvent.setValue("cambria-partition", AAIConstants.UEB_PUB_PARTITION_AAI); - } - - notificationEvent.setValue("event-header", eventHeader.getUnderlyingObject()); - notificationEvent.setValue("entity", obj.getUnderlyingObject()); - - String entityJson = notificationEvent.marshal(false); - sendToDmaapJmsQueue(entityJson); - } catch (JSONException e) { - throw new AAIException("AAI_7350", e); - } catch (AAIUnknownObjectException e) { - throw new AAIException("AAI_7350", e); - } - } - - private void sendToDmaapJmsQueue(String entityString) throws JSONException { - - JSONObject entityJsonObject = new JSONObject(entityString); - - JSONObject entityJsonObjectUpdated = new JSONObject(); - JSONObject finalJson = new JSONObject(); - - JSONObject entityHeader = entityJsonObject.getJSONObject("event-header"); - String cambriaPartition = entityJsonObject.getString("cambria.partition"); - - entityJsonObject.remove("event-header"); - entityJsonObject.remove("cambria.partition"); - - entityJsonObjectUpdated.put("event-header", entityHeader); - entityJsonObjectUpdated.put("cambria.partition", cambriaPartition); - - String transId = entityHeader.getString("id"); - String fromAppId = entityHeader.getString("source-name"); - - Iterator iter = entityJsonObject.keys(); - JSONObject entity = new JSONObject(); - if (iter.hasNext()) { - entity = entityJsonObject.getJSONObject(iter.next()); - } - - entityJsonObjectUpdated.put("entity", entity); - - finalJson.put("event-topic", "AAI-EVENT"); - finalJson.put("transId", transId); - finalJson.put("fromAppId", fromAppId); - finalJson.put("fullId", ""); - finalJson.put("aaiEventPayload", entityJsonObjectUpdated); - - messageProducer.sendMessageToDefaultDestination(finalJson); - } - - /** - * Gen date. - * - * @return the string - */ - public static String genDate() { - FormatDate fd = new FormatDate("YYYYMMdd-HH:mm:ss:SSS"); - return fd.getDateTime(); - } - - /** - * Gen date 2. - * - * @return the string - */ - public static String genDate2() { - FormatDate fd = new FormatDate("YYYYMMddHHmmss"); - return fd.getDateTime(); - } - -} diff --git a/aai-resources/src/test/resources/bundleconfig-local/etc/oxm/aai_oxm_v11.xml b/aai-resources/src/test/resources/bundleconfig-local/etc/oxm/aai_oxm_v11.xml index 6177cdb..190fd73 100644 --- a/aai-resources/src/test/resources/bundleconfig-local/etc/oxm/aai_oxm_v11.xml +++ b/aai-resources/src/test/resources/bundleconfig-local/etc/oxm/aai_oxm_v11.xml @@ -3106,6 +3106,8 @@ + + diff --git a/aai-resources/src/test/resources/org/openecomp/aai/introspection/aai_oxm_v11.xml b/aai-resources/src/test/resources/org/openecomp/aai/introspection/aai_oxm_v11.xml index 7aa4114..3721e4f 100644 --- a/aai-resources/src/test/resources/org/openecomp/aai/introspection/aai_oxm_v11.xml +++ b/aai-resources/src/test/resources/org/openecomp/aai/introspection/aai_oxm_v11.xml @@ -3145,6 +3145,8 @@ + + -- cgit 1.2.3-korg