From ddc73b563fcd2b3e47b5d0f54139f20ed3cdcba1 Mon Sep 17 00:00:00 2001 From: abatos Date: Tue, 22 Aug 2017 14:23:21 -0400 Subject: Split out Titan specific dependencies from core Remove the Titan specific references within the gizmo core and prepare for dependency on new champ core library. Change-Id: I29a4e7b6528e8357715b095d8db5456cd01eb636 Issue-ID: AAI-21 Signed-off-by: abatos --- .../org/openecomp/crud/dao/champ/ChampDao.java | 174 ++------------------- .../openecomp/crud/logging/CrudServiceMsgs.java | 35 ----- .../crud/service/CrudGraphDataService.java | 37 +---- 3 files changed, 16 insertions(+), 230 deletions(-) (limited to 'src/main/java/org') diff --git a/src/main/java/org/openecomp/crud/dao/champ/ChampDao.java b/src/main/java/org/openecomp/crud/dao/champ/ChampDao.java index c8a68e7..5e9d10a 100644 --- a/src/main/java/org/openecomp/crud/dao/champ/ChampDao.java +++ b/src/main/java/org/openecomp/crud/dao/champ/ChampDao.java @@ -23,17 +23,16 @@ */ package org.openecomp.crud.dao.champ; -import org.openecomp.aai.champ.ChampAPI; -import org.openecomp.aai.champ.ChampGraph; -import org.openecomp.aai.champ.exceptions.ChampMarshallingException; -import org.openecomp.aai.champ.exceptions.ChampObjectNotExistsException; -import org.openecomp.aai.champ.exceptions.ChampRelationshipNotExistsException; -import org.openecomp.aai.champ.exceptions.ChampSchemaViolationException; -import org.openecomp.aai.champ.exceptions.ChampUnmarshallingException; -import org.openecomp.aai.champ.graph.impl.TitanChampGraphImpl; -import org.openecomp.aai.champ.model.ChampObject; -import org.openecomp.aai.champ.model.ChampRelationship; -import org.openecomp.aai.champ.model.fluent.object.ObjectBuildOrPropertiesStep; +import org.openecomp.aai.champcore.ChampGraph; +import org.openecomp.aai.champcore.exceptions.ChampMarshallingException; +import org.openecomp.aai.champcore.exceptions.ChampObjectNotExistsException; +import org.openecomp.aai.champcore.exceptions.ChampRelationshipNotExistsException; +import org.openecomp.aai.champcore.exceptions.ChampSchemaViolationException; +import org.openecomp.aai.champcore.exceptions.ChampTransactionException; +import org.openecomp.aai.champcore.exceptions.ChampUnmarshallingException; +import org.openecomp.aai.champcore.model.ChampObject; +import org.openecomp.aai.champcore.model.ChampRelationship; +import org.openecomp.aai.champcore.model.fluent.object.ObjectBuildOrPropertiesStep; import org.openecomp.cl.api.Logger; import org.openecomp.cl.eelf.LoggerFactory; import org.openecomp.crud.dao.GraphDao; @@ -47,8 +46,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Properties; -import java.util.Random; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -81,11 +78,6 @@ public class ChampDao implements GraphDao { DSE } - /** - * Set of configuration properties for the DAI. - */ - private Properties daoConfig; - /** * Instance of the API used for interacting with the Champ library. */ @@ -97,20 +89,12 @@ public class ChampDao implements GraphDao { /** * Creates a new instance of the ChampDao. * - * @param config - Set of configuration properties to be applied to this instance - * of the DAO. + * @param champGraph - Concrete implementation of the graph dao layer */ - public ChampDao(Properties config) { - - // Store the configuration properties. - daoConfig = config; - - // Apply the configuration to the DAO. - configure(); - + public ChampDao(ChampGraph champGraph) { + this.champApi = champGraph; } - @Override public Vertex getVertex(String id, String type) throws CrudException { @@ -635,112 +619,6 @@ public class ChampDao implements GraphDao { return edgeBuilder.build(); } - - /** - * Performs all one-time configuration operations which are required when creating - * a new instance of the DAO. - */ - private void configure() { - - // Instantiate the Champ library API. - try { - - // Determine which back end we are using. - switch (getBackendTypeFromConfig()) { - - case IN_MEMORY: - - logger.info(CrudServiceMsgs.INSTANTIATE_GRAPH_DAO, - "In Memory", - daoConfig.getProperty(CONFIG_GRAPH_NAME, DEFAULT_GRAPH_NAME), - "Not applicable"); - - champApi = ChampGraph.Factory.newInstance(ChampGraph.Type.IN_MEMORY, - daoConfig.getProperty(CONFIG_GRAPH_NAME, DEFAULT_GRAPH_NAME)); - - break; - - case TITAN: - try { - String db = daoConfig.getProperty(CONFIG_STORAGE_BACKEND_DB); - Short graphIdSuffix = (short) new Random().nextInt(Short.MAX_VALUE); - logger.info(CrudServiceMsgs.TITAN_GRAPH_INFO, GRAPH_UNQ_INSTANCE_ID_SUFFIX - + ": = " + graphIdSuffix); - if (db.equalsIgnoreCase(STORAGE_CASSANDRA_DB)) { - logger.info(CrudServiceMsgs.INSTANTIATE_GRAPH_DAO, "Titan with cassandra backend", - daoConfig.getProperty(CONFIG_GRAPH_NAME, DEFAULT_GRAPH_NAME), - daoConfig.getProperty(CONFIG_STORAGE_HOSTNAMES)); - - TitanChampGraphImpl.Builder champApiBuilder = - new TitanChampGraphImpl.Builder(daoConfig.getProperty(CONFIG_GRAPH_NAME, - DEFAULT_GRAPH_NAME)) - .property("storage.backend", "cassandrathrift") - .property(GRAPH_UNQ_INSTANCE_ID_SUFFIX, graphIdSuffix) - .property("storage.hostname", daoConfig.get(CONFIG_STORAGE_HOSTNAMES)); - - if (daoConfig.containsKey(CONFIG_EVENT_STREAM_PUBLISHER)) { - champApiBuilder.property("champ.event.stream.publisher", - daoConfig.get(CONFIG_EVENT_STREAM_PUBLISHER)); - } - - if (daoConfig.containsKey(CONFIG_EVENT_STREAM_NUM_PUBLISHERS)) { - champApiBuilder.property("champ.event.stream.publisher-pool-size", - daoConfig.get(CONFIG_EVENT_STREAM_NUM_PUBLISHERS)); - } - - champApi = champApiBuilder.build(); - - } else if (db.equalsIgnoreCase(STORAGE_HBASE_DB)) { - - logger.info(CrudServiceMsgs.INSTANTIATE_GRAPH_DAO, "Titan with Hbase backend", - daoConfig.getProperty(CONFIG_GRAPH_NAME, DEFAULT_GRAPH_NAME), - daoConfig.getProperty(CONFIG_STORAGE_HOSTNAMES)); - TitanChampGraphImpl.Builder champApiBuilder = - new TitanChampGraphImpl.Builder(daoConfig - .getProperty(CONFIG_GRAPH_NAME, DEFAULT_GRAPH_NAME)) - .property("storage.backend", "hbase") - .property("storage.hbase.ext.zookeeper.znode.parent", - daoConfig.get(CONFIG_HBASE_ZNODE_PARENT)) - .property("storage.port", daoConfig.get(CONFIG_STORAGE_PORT)) - .property(GRAPH_UNQ_INSTANCE_ID_SUFFIX, graphIdSuffix) - .property("storage.hostname", daoConfig.get(CONFIG_STORAGE_HOSTNAMES)); - - if (daoConfig.containsKey(CONFIG_EVENT_STREAM_PUBLISHER)) { - champApiBuilder.property("champ.event.stream.publisher", - daoConfig.get(CONFIG_EVENT_STREAM_PUBLISHER)); - } - - if (daoConfig.containsKey(CONFIG_EVENT_STREAM_NUM_PUBLISHERS)) { - champApiBuilder.property("champ.event.stream.publisher-pool-size", - daoConfig.get(CONFIG_EVENT_STREAM_NUM_PUBLISHERS)); - } - champApi = champApiBuilder.build(); - } else { - logger.error(CrudServiceMsgs.INVALID_GRAPH_BACKEND, - daoConfig.getProperty(CONFIG_STORAGE_BACKEND_DB)); - } - - } catch (com.thinkaurelius.titan.core.TitanException e) { - - logger.error(CrudServiceMsgs.INSTANTIATE_GRAPH_BACKEND_ERR, "Titan", e.getMessage()); - } - - - break; - - default: - logger.error(CrudServiceMsgs.INVALID_GRAPH_BACKEND, - daoConfig.getProperty(CONFIG_STORAGE_BACKEND)); - break; - } - - } catch (CrudException e) { - logger.error(CrudServiceMsgs.INSTANTIATE_GRAPH_BACKEND_ERR, - daoConfig.getProperty(CONFIG_STORAGE_BACKEND), e.getMessage()); - } - } - - /** * Performs any necessary shut down operations when the DAO is no longer needed. */ @@ -753,30 +631,4 @@ public class ChampDao implements GraphDao { champApi.shutdown(); } } - - - /** - * This helper function converts the 'graph back end type' config parameter into the - * corresponding {@link ChampAPI.Type}. - * - * @return - A {@link ChampAPI.Type} - * @throws CrudException - */ - private GraphType getBackendTypeFromConfig() throws CrudException { - - // Get the back end type from the DAO's configuration properties. - String backend = daoConfig.getProperty(CONFIG_STORAGE_BACKEND, "in-memory"); - - // Now, find the appropriate ChampAPI type and return it. - if (backend.equals("in-memory")) { - return GraphType.IN_MEMORY; - } else if (backend.equals("titan")) { - return GraphType.TITAN; - } - - // If we are here, then whatever was in the config properties didn't match to a supported - // back end type, so just throw an exception and let the caller figure it out. - throw new CrudException("Invalid graph backend type '" + backend + "' specified.", - javax.ws.rs.core.Response.Status.BAD_REQUEST); - } } diff --git a/src/main/java/org/openecomp/crud/logging/CrudServiceMsgs.java b/src/main/java/org/openecomp/crud/logging/CrudServiceMsgs.java index 71fb14b..265f327 100644 --- a/src/main/java/org/openecomp/crud/logging/CrudServiceMsgs.java +++ b/src/main/java/org/openecomp/crud/logging/CrudServiceMsgs.java @@ -60,16 +60,6 @@ public enum CrudServiceMsgs implements LogMessageEnum { */ OXM_LOAD_ERROR, - /** - * Instantiate data access layer for graph data store type: {0} graph: {1} using hosts: {2} - * - *

Arguments: - * {0} = Graph data store technology type - * {1} = Graph name - * {2} = Hosts list - */ - INSTANTIATE_GRAPH_DAO, - /** * Stopping ChampDAO... * @@ -77,23 +67,6 @@ public enum CrudServiceMsgs implements LogMessageEnum { */ STOPPING_CHAMP_DAO, - /** - * Unsupported graph database {0} specified. - * - *

Arguments: - * {0} = Graph database back end. - */ - INVALID_GRAPH_BACKEND, - - /** - * Failure instantiating {0} graph database backend. Cause: {1} - * - *

Arguments: - * {0} - Graph database type. - * {1} - Failure cause. - */ - INSTANTIATE_GRAPH_BACKEND_ERR, - /** * Failure instantiating CRUD Rest Service. Cause: {0} * @@ -102,14 +75,6 @@ public enum CrudServiceMsgs implements LogMessageEnum { */ INSTANTIATE_AUTH_ERR, - /** - * Any info log related to titan graph - * - *

Arguments: - * {0} - Info. - */ - TITAN_GRAPH_INFO, - /** * Arguments: * {0} Opertaion diff --git a/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java index 8693505..e6d6748 100644 --- a/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java +++ b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java @@ -23,16 +23,13 @@ */ package org.openecomp.crud.service; -import org.onap.aai.event.api.EventPublisher; - +import org.openecomp.aai.champcore.ChampGraph; import org.openecomp.crud.dao.GraphDao; import org.openecomp.crud.dao.champ.ChampDao; import org.openecomp.crud.entity.Edge; import org.openecomp.crud.entity.Vertex; import org.openecomp.crud.exception.CrudException; import org.openecomp.crud.parser.CrudResponseBuilder; -import org.openecomp.crud.util.CrudProperties; -import org.openecomp.crud.util.CrudServiceConstants; import org.openecomp.schema.OxmModelLoader; import org.openecomp.schema.OxmModelValidator; import org.openecomp.schema.RelationshipSchemaLoader; @@ -40,42 +37,14 @@ import org.openecomp.schema.RelationshipSchemaValidator; import java.util.List; import java.util.Map; -import java.util.Properties; public class CrudGraphDataService { private GraphDao dao; - public CrudGraphDataService(EventPublisher champEventPublisher) throws CrudException { - - // Configure the GraphDao and wire it - Properties champProperties = new Properties(); - champProperties.put(ChampDao.CONFIG_STORAGE_BACKEND, "titan"); - champProperties.put(ChampDao.CONFIG_STORAGE_BACKEND_DB, - CrudProperties.get(CrudServiceConstants.CRD_STORAGE_BACKEND_DB, "hbase")); - champProperties.put(ChampDao.CONFIG_STORAGE_HOSTNAMES, - CrudProperties.get(CrudServiceConstants.CRD_GRAPH_HOST)); - champProperties.put(ChampDao.CONFIG_STORAGE_PORT, - CrudProperties.get(CrudServiceConstants.CRD_GRAPH_PORT, "2181")); - champProperties.put(ChampDao.CONFIG_HBASE_ZNODE_PARENT, - CrudProperties.get(CrudServiceConstants.CRD_HBASE_ZNODE_PARENT, "/hbase-unsecure")); - - if (CrudProperties.get("crud.graph.name") != null) { - champProperties.put(ChampDao.CONFIG_GRAPH_NAME, CrudProperties.get("crud.graph.name")); - } - - if (champEventPublisher != null) { - champProperties.put(ChampDao.CONFIG_EVENT_STREAM_PUBLISHER, champEventPublisher); - } - - if (CrudProperties.get(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS) != null) { - champProperties.put(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS, - Integer.parseInt(CrudProperties.get(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS))); - } - - ChampDao champDao = new ChampDao(champProperties); + public CrudGraphDataService(ChampGraph graphImpl) throws CrudException { - this.dao = champDao; + this.dao = new ChampDao(graphImpl); //load the schemas OxmModelLoader.loadModels(); -- cgit 1.2.3-korg