aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/aai/datarouter/entity/OxmEntityDescriptor.java122
-rw-r--r--src/main/java/org/onap/aai/datarouter/logging/DataRouterMsgs.java12
-rw-r--r--src/main/java/org/onap/aai/datarouter/policy/AbstractSpikeEntityEventProcessor.java13
-rw-r--r--src/main/java/org/onap/aai/datarouter/policy/EntityEventPolicy.java14
-rw-r--r--src/main/java/org/onap/aai/datarouter/policy/SpikeAutosuggestIndexProcessor.java8
-rw-r--r--src/main/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicy.java8
-rw-r--r--src/main/java/org/onap/aai/datarouter/schema/OxmConfigTranslator.java98
-rw-r--r--src/main/java/org/onap/aai/datarouter/schema/OxmModelLoader.java101
-rw-r--r--src/main/java/org/onap/aai/datarouter/schema/SchemaIngestPropertiesReader.java88
-rw-r--r--src/main/java/org/onap/aai/datarouter/util/CrossEntityReference.java93
-rw-r--r--src/main/java/org/onap/aai/datarouter/util/EntityOxmReferenceHelper.java58
-rw-r--r--src/main/java/org/onap/aai/datarouter/util/ExternalOxmModelProcessor.java33
-rw-r--r--src/main/java/org/onap/aai/datarouter/util/Version.java25
-rw-r--r--src/main/java/org/onap/aai/datarouter/util/VersionedOxmEntities.java349
-rw-r--r--src/main/resources/logging/DataRouterMsgs.properties14
15 files changed, 25 insertions, 1011 deletions
diff --git a/src/main/java/org/onap/aai/datarouter/entity/OxmEntityDescriptor.java b/src/main/java/org/onap/aai/datarouter/entity/OxmEntityDescriptor.java
deleted file mode 100644
index 30e55b7..0000000
--- a/src/main/java/org/onap/aai/datarouter/entity/OxmEntityDescriptor.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.entity;
-
-import java.util.List;
-
-import org.onap.aai.datarouter.util.CrossEntityReference;
-
-
-public class OxmEntityDescriptor {
-
- private String entityName;
-
- private List<String> primaryKeyAttributeName;
-
- private List<String> searchableAttributes;
-
- private CrossEntityReference crossEntityReference;
-
- private List<String> alias;
-
- private List<String> suggestableAttributes;
-
- boolean isSuggestableEntity;
-
- public String getEntityName() {
- return entityName;
- }
-
- public void setEntityName(String entityName) {
- this.entityName = entityName;
- }
-
- public List<String> getPrimaryKeyAttributeName() {
- return primaryKeyAttributeName;
- }
-
- public void setPrimaryKeyAttributeName(List<String> primaryKeyAttributeName) {
- this.primaryKeyAttributeName = primaryKeyAttributeName;
- }
-
- public List<String> getSearchableAttributes() {
- return searchableAttributes;
- }
-
- public void setSearchableAttributes(List<String> searchableAttributes) {
- this.searchableAttributes = searchableAttributes;
- }
-
- public boolean hasSearchableAttributes() {
-
- if ( this.searchableAttributes == null) {
- return false;
- }
-
- if ( !this.searchableAttributes.isEmpty() ) {
- return true;
- }
-
- return false;
-
- }
-
- public CrossEntityReference getCrossEntityReference() {
- return crossEntityReference;
- }
-
- public void setCrossEntityReference(CrossEntityReference crossEntityReference) {
- this.crossEntityReference = crossEntityReference;
- }
-
- public List<String> getAlias() {
- return alias;
- }
-
- public void setAlias(List<String> alias) {
- this.alias = alias;
- }
-
- public List<String> getSuggestableAttributes() {
- return suggestableAttributes;
- }
-
- public void setSuggestableAttributes(List<String> suggestableAttributes) {
- this.suggestableAttributes = suggestableAttributes;
- }
-
- public boolean isSuggestableEntity() {
- return isSuggestableEntity;
- }
-
- public void setSuggestableEntity(boolean isSuggestableEntity) {
- this.isSuggestableEntity = isSuggestableEntity;
- }
-
- @Override
- public String toString() {
- return "OxmEntityDescriptor [entityName=" + entityName + ", primaryKeyAttributeName="
- + primaryKeyAttributeName + ", searchableAttributes=" + searchableAttributes
- + ", crossEntityReference=" + crossEntityReference + ", alias=" + alias
- + ", suggestableAttributes=" + suggestableAttributes + ", isSuggestableEntity="
- + isSuggestableEntity + "]";
- }
-}
diff --git a/src/main/java/org/onap/aai/datarouter/logging/DataRouterMsgs.java b/src/main/java/org/onap/aai/datarouter/logging/DataRouterMsgs.java
index 521a7c3..2443993 100644
--- a/src/main/java/org/onap/aai/datarouter/logging/DataRouterMsgs.java
+++ b/src/main/java/org/onap/aai/datarouter/logging/DataRouterMsgs.java
@@ -153,13 +153,6 @@ public enum DataRouterMsgs implements LogMessageEnum {
INVALID_OXM_DIR,
LOAD_OXM_ERROR,
- /**
- * Successfully loaded schema: {0}
- *
- * <p>Arguments:
- * {0} = oxm filename
- */
- LOADED_OXM_FILE,
/**
* Arguments: {0} = origin payload
@@ -194,10 +187,7 @@ public enum DataRouterMsgs implements LogMessageEnum {
READING_JSON_SCHEMA_ERROR,
/** Arguments: {0} = Error message */
- JSON_CONVERSION_ERROR,
-
- /** Failed to load the schemaIngest.properties file */
- SCHEMA_INGEST_LOAD_ERROR;
+ JSON_CONVERSION_ERROR;
/**
* Static initializer to ensure the resource bundles for this class are loaded...
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 ca8caf4..c642102 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,19 +42,19 @@ 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.schema.OxmModelLoader;
+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;
diff --git a/src/main/java/org/onap/aai/datarouter/policy/EntityEventPolicy.java b/src/main/java/org/onap/aai/datarouter/policy/EntityEventPolicy.java
index ae5d0e6..6276abd 100644
--- a/src/main/java/org/onap/aai/datarouter/policy/EntityEventPolicy.java
+++ b/src/main/java/org/onap/aai/datarouter/policy/EntityEventPolicy.java
@@ -43,21 +43,21 @@ import org.json.JSONObject;
import org.onap.aai.datarouter.entity.AaiEventEntity;
import org.onap.aai.datarouter.entity.AggregationEntity;
import org.onap.aai.datarouter.entity.DocumentStoreDataEntity;
-import org.onap.aai.datarouter.entity.OxmEntityDescriptor;
import org.onap.aai.datarouter.entity.SuggestionSearchEntity;
import org.onap.aai.datarouter.entity.TopographicalEntity;
import org.onap.aai.datarouter.entity.UebEventHeader;
import org.onap.aai.datarouter.logging.EntityEventPolicyMsgs;
-import org.onap.aai.datarouter.util.CrossEntityReference;
-import org.onap.aai.datarouter.util.EntityOxmReferenceHelper;
-import org.onap.aai.datarouter.util.ExternalOxmModelProcessor;
import org.onap.aai.datarouter.util.NodeUtils;
-import org.onap.aai.datarouter.schema.OxmModelLoader;
import org.onap.aai.datarouter.util.RouterServiceUtil;
import org.onap.aai.datarouter.util.SearchServiceAgent;
import org.onap.aai.datarouter.util.SearchSuggestionPermutation;
-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.CrossEntityReference;
+import org.onap.aai.util.EntityOxmReferenceHelper;
+import org.onap.aai.util.ExternalOxmModelProcessor;
+import org.onap.aai.schema.OxmModelLoader;
+import org.onap.aai.util.Version;
+import org.onap.aai.util.VersionedOxmEntities;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.cl.mdc.MdcContext;
diff --git a/src/main/java/org/onap/aai/datarouter/policy/SpikeAutosuggestIndexProcessor.java b/src/main/java/org/onap/aai/datarouter/policy/SpikeAutosuggestIndexProcessor.java
index 8b56f99..b2f9202 100644
--- a/src/main/java/org/onap/aai/datarouter/policy/SpikeAutosuggestIndexProcessor.java
+++ b/src/main/java/org/onap/aai/datarouter/policy/SpikeAutosuggestIndexProcessor.java
@@ -28,14 +28,14 @@ import java.util.List;
import java.util.Map;
import org.apache.camel.Exchange;
-import org.onap.aai.datarouter.entity.OxmEntityDescriptor;
import org.onap.aai.datarouter.entity.SpikeEventMeta;
import org.onap.aai.datarouter.entity.SuggestionSearchEntity;
import org.onap.aai.datarouter.logging.EntityEventPolicyMsgs;
-import org.onap.aai.datarouter.util.EntityOxmReferenceHelper;
import org.onap.aai.datarouter.util.SearchSuggestionPermutation;
-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.Version;
+import org.onap.aai.util.VersionedOxmEntities;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/src/main/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicy.java b/src/main/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicy.java
index 67db407..9826743 100644
--- a/src/main/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicy.java
+++ b/src/main/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicy.java
@@ -44,15 +44,15 @@ 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.entity.DocumentStoreDataEntity;
-import org.onap.aai.datarouter.entity.OxmEntityDescriptor;
import org.onap.aai.datarouter.entity.SpikeEventEntity;
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.schema.OxmModelLoader;
import org.onap.aai.datarouter.util.RouterServiceUtil;
import org.onap.aai.datarouter.util.SearchServiceAgent;
+import org.onap.aai.entity.OxmEntityDescriptor;
+import org.onap.aai.util.EntityOxmReferenceHelper;
+import org.onap.aai.util.ExternalOxmModelProcessor;
+import org.onap.aai.schema.OxmModelLoader;
import org.onap.aai.restclient.client.Headers;
import org.onap.aai.restclient.client.OperationResult;
import org.onap.aai.restclient.rest.HttpUtil;
diff --git a/src/main/java/org/onap/aai/datarouter/schema/OxmConfigTranslator.java b/src/main/java/org/onap/aai/datarouter/schema/OxmConfigTranslator.java
deleted file mode 100644
index ee2c5dc..0000000
--- a/src/main/java/org/onap/aai/datarouter/schema/OxmConfigTranslator.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.schema;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.PathMatcher;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Map;
-import java.util.ServiceConfigurationError;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.onap.aai.setup.ConfigTranslator;
-import org.onap.aai.setup.SchemaLocationsBean;
-import org.onap.aai.setup.Version;
-
-public class OxmConfigTranslator extends ConfigTranslator {
- public OxmConfigTranslator(SchemaLocationsBean bean) {
- super(bean);
- }
-
- @Override
- public Map<Version, List<String>> getNodeFiles() {
- String nodeDirectory = bean.getNodeDirectory();
- if (nodeDirectory == null) {
- throw new ServiceConfigurationError(
- "Node(s) directory is empty in the schema location bean (" + bean.getSchemaConfigLocation() + ")");
- }
- try {
- return getVersionMap(Paths.get(nodeDirectory), "*_v*.xml");
- } catch (IOException e) {
- throw new ServiceConfigurationError("Failed to read node(s) directory " + getPath(nodeDirectory), e);
- }
- }
-
- @Override
- public Map<Version, List<String>> getEdgeFiles() {
- String edgeDirectory = bean.getEdgeDirectory();
- if (edgeDirectory == null) {
- throw new ServiceConfigurationError(
- "Edge(s) directory is empty in the schema location bean (" + bean.getSchemaConfigLocation() + ")");
- }
- try {
- return getVersionMap(Paths.get(edgeDirectory), "*_v*.json");
- } catch (IOException e) {
- throw new ServiceConfigurationError("Failed to read edge(s) directory " + getPath(edgeDirectory), e);
- }
- }
-
- private String getPath(String nodeDirectory) {
- return Paths.get(nodeDirectory).toAbsolutePath().toString();
- }
-
- /**
- * Creates a map containing each OXM Version and the matching OXM file path(s)
- *
- * @param folderPath the folder/directory containing the OXM files
- * @param fileSuffix
- * @return a new Map object (may be empty)
- * @throws IOException if there is a problem reading the specified directory path
- */
- private Map<Version, List<String>> getVersionMap(Path folderPath, String globPattern) throws IOException {
- final PathMatcher filter = folderPath.getFileSystem().getPathMatcher("glob:**/" + globPattern);
- try (final Stream<Path> stream = Files.list(folderPath)) {
- return stream.filter(filter::matches).map(Path::toString).filter(p -> getVersionFromPath(p) != null)
- .collect(Collectors.groupingBy(this::getVersionFromPath));
- }
- }
-
- private Version getVersionFromPath(String pathName) {
- String version = "V" + pathName.replaceAll("^.*\\/", "").replaceAll("\\D+", "");
- try {
- return Version.valueOf(version);
- } catch (IllegalArgumentException e) {
- return null;
- }
- }
-}
diff --git a/src/main/java/org/onap/aai/datarouter/schema/OxmModelLoader.java b/src/main/java/org/onap/aai/datarouter/schema/OxmModelLoader.java
deleted file mode 100644
index 93854d8..0000000
--- a/src/main/java/org/onap/aai/datarouter/schema/OxmModelLoader.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.schema;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.ws.rs.core.Response.Status;
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
-import org.onap.aai.cl.eelf.LoggerFactory;
-import org.onap.aai.datarouter.logging.DataRouterMsgs;
-import org.onap.aai.datarouter.util.ExternalOxmModelProcessor;
-import org.onap.aai.nodes.NodeIngestor;
-import org.onap.aai.setup.ConfigTranslator;
-import org.onap.aai.setup.SchemaLocationsBean;
-import org.onap.aai.setup.Version;
-
-public class OxmModelLoader {
-
- private static Map<String, DynamicJAXBContext> versionContextMap = new ConcurrentHashMap<>();
- private static List<ExternalOxmModelProcessor> oxmModelProcessorRegistry = new ArrayList<>();
-
- private static final org.onap.aai.cl.api.Logger logger =
- LoggerFactory.getInstance().getLogger(OxmModelLoader.class.getName());
-
- private OxmModelLoader() {
- throw new IllegalStateException("Utility class");
- }
-
- public static synchronized void loadModels() {
- SchemaIngestPropertiesReader schemaIngestPropReader = new SchemaIngestPropertiesReader();
- SchemaLocationsBean schemaLocationsBean = new SchemaLocationsBean();
- schemaLocationsBean.setNodeDirectory(schemaIngestPropReader.getNodeDir());
- ConfigTranslator configTranslator = new OxmConfigTranslator(schemaLocationsBean);
- NodeIngestor nodeIngestor = new NodeIngestor(configTranslator);
-
- for (Version oxmVersion : Version.values()) {
- DynamicJAXBContext jaxbContext = nodeIngestor.getContextForVersion(oxmVersion);
- if (jaxbContext != null) {
- loadModel(oxmVersion.toString(), jaxbContext);
- }
- }
- }
-
- public static DynamicJAXBContext getContextForVersion(String version) {
- if (versionContextMap == null || versionContextMap.isEmpty()) {
- loadModels();
- } else if (!versionContextMap.containsKey(version)) {
- throw new NoSuchElementException(Status.NOT_FOUND.toString());
- }
- return versionContextMap.get(version);
- }
-
- public static synchronized void registerExternalOxmModelProcessors(
- Collection<ExternalOxmModelProcessor> processors) {
- if (processors != null) {
- for (ExternalOxmModelProcessor processor : processors) {
- if (!oxmModelProcessorRegistry.contains(processor)) {
- oxmModelProcessorRegistry.add(processor);
- }
- }
- }
- }
-
- public static Map<String, DynamicJAXBContext> getVersionContextMap() {
- return versionContextMap;
- }
-
- private static synchronized void loadModel(String oxmVersion, DynamicJAXBContext jaxbContext) {
- versionContextMap.put(oxmVersion, jaxbContext);
- if (oxmModelProcessorRegistry != null) {
- for (ExternalOxmModelProcessor processor : oxmModelProcessorRegistry) {
- processor.onOxmVersionChange(org.onap.aai.datarouter.util.Version.valueOf(oxmVersion.toLowerCase()),
- jaxbContext);
- }
- }
- logger.info(DataRouterMsgs.LOADED_OXM_FILE, oxmVersion);
- }
-
-}
diff --git a/src/main/java/org/onap/aai/datarouter/schema/SchemaIngestPropertiesReader.java b/src/main/java/org/onap/aai/datarouter/schema/SchemaIngestPropertiesReader.java
deleted file mode 100644
index 76530ae..0000000
--- a/src/main/java/org/onap/aai/datarouter/schema/SchemaIngestPropertiesReader.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.schema;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.NoSuchFileException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Properties;
-import org.onap.aai.cl.eelf.LoggerFactory;
-import org.onap.aai.datarouter.logging.DataRouterMsgs;
-
-public class SchemaIngestPropertiesReader {
-
- private static final String SCHEMA_INGEST_PROPERTIES_FILE = "schemaIngest.properties";
- private static final String MSG_FAILED_LOAD_SCHEMA_INGEST_PROPERTIES = "Failed to load " + SCHEMA_INGEST_PROPERTIES_FILE;
-
- private static final String SCHEMA_INGEST_PROPERTIES_LOCATION =
- System.getProperty("CONFIG_HOME") + "/" + SCHEMA_INGEST_PROPERTIES_FILE;
-
- private static org.onap.aai.cl.api.Logger logger =
- LoggerFactory.getInstance().getLogger(SchemaIngestPropertiesReader.class.getName());
-
- /**
- * Gets the location of the OXM.
- *
- * @return the directory containing the OXM files
- */
- public String getNodeDir() {
-
- Properties prop = new Properties();
- try {
- prop = loadFromFile(SCHEMA_INGEST_PROPERTIES_LOCATION);
- } catch (NoSuchFileException e) {
- try {
- prop = loadFromClasspath(SCHEMA_INGEST_PROPERTIES_FILE);
- } catch (URISyntaxException | IOException ef) {
- logger.error(DataRouterMsgs.SCHEMA_INGEST_LOAD_ERROR, ef.getMessage());
- throw new RuntimeException(MSG_FAILED_LOAD_SCHEMA_INGEST_PROPERTIES);
- }
- } catch (IOException ec) {
- logger.error(DataRouterMsgs.SCHEMA_INGEST_LOAD_ERROR, ec.getMessage());
- throw new RuntimeException(MSG_FAILED_LOAD_SCHEMA_INGEST_PROPERTIES);
- }
- return prop.getProperty("nodeDir");
- }
-
- private Properties loadFromFile(String filename) throws IOException {
- Path configLocation = Paths.get(filename);
- try (InputStream stream = Files.newInputStream(configLocation)) {
- return loadProperties(stream);
- }
- }
-
- private Properties loadFromClasspath(String resourceName) throws URISyntaxException, IOException {
- Path path = Paths.get(ClassLoader.getSystemResource(resourceName).toURI());
- try (InputStream stream = Files.newInputStream(path)) {
- return loadProperties(stream);
- }
- }
-
- private Properties loadProperties(InputStream stream) throws IOException {
- Properties config = new Properties();
- config.load(stream);
- return config;
- }
-}
diff --git a/src/main/java/org/onap/aai/datarouter/util/CrossEntityReference.java b/src/main/java/org/onap/aai/datarouter/util/CrossEntityReference.java
deleted file mode 100644
index 47d6105..0000000
--- a/src/main/java/org/onap/aai/datarouter/util/CrossEntityReference.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Processing and entity wrapper for property transposition logic and UEB processing
- *
- * @author DAVEA
- */
-public class CrossEntityReference {
-
- private String targetEntityType;
-
- private List<String> attributeNames;
-
- public CrossEntityReference() {
- this.targetEntityType = null;
- this.attributeNames = new ArrayList<>();
- }
-
- public String getTargetEntityType() {
- return targetEntityType;
- }
-
- public void setTargetEntityType(String targetEntityType) {
- this.targetEntityType = targetEntityType;
- }
-
- public List<String> getAttributeNames() {
- return attributeNames;
- }
-
- public void setAttributeNames(List<String> attributeNames) {
- this.attributeNames = attributeNames;
- }
-
- public void addAttributeName(String attributeName) {
- if (!this.attributeNames.contains(attributeName)) {
- this.attributeNames.add(attributeName);
- }
- }
-
- public void initialize(String crossEntityReferenceValueFromModel) {
-
- if (crossEntityReferenceValueFromModel == null
- || crossEntityReferenceValueFromModel.length() == 0) {
- // or throw an exception due to failure to initialize
- return;
- }
-
- String[] tokens = crossEntityReferenceValueFromModel.split(",");
-
- if (tokens.length >= 2) {
- this.targetEntityType = tokens[0];
-
- for (int x = 1; x < tokens.length; x++) {
- this.attributeNames.add(tokens[x]);
- }
- } else {
- // throw a CrossEntityReferenceInitializationException??
- }
-
- }
-
- @Override
- public String toString() {
- return "CrossEntityReference ["
- + (targetEntityType != null ? "entityType=" + targetEntityType + ", " : "")
- + (attributeNames != null ? "attributeNames=" + attributeNames : "") + "]";
- }
-
-}
diff --git a/src/main/java/org/onap/aai/datarouter/util/EntityOxmReferenceHelper.java b/src/main/java/org/onap/aai/datarouter/util/EntityOxmReferenceHelper.java
deleted file mode 100644
index 3f05a92..0000000
--- a/src/main/java/org/onap/aai/datarouter/util/EntityOxmReferenceHelper.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.util;
-
-import java.util.HashMap;
-
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
-
-public class EntityOxmReferenceHelper implements ExternalOxmModelProcessor {
-
- private static EntityOxmReferenceHelper _instance = null;
-
- private HashMap<Version, VersionedOxmEntities> versionedModels;
-
- protected EntityOxmReferenceHelper() {
- this.versionedModels = new HashMap<>();
- }
-
- public static EntityOxmReferenceHelper getInstance() {
- if ( _instance == null ) {
- _instance = new EntityOxmReferenceHelper();
- }
-
- return _instance;
- }
-
-
- @Override
- public void onOxmVersionChange(Version version, DynamicJAXBContext context) {
- VersionedOxmEntities oxmEntities = new VersionedOxmEntities();
- oxmEntities.initialize(context);
- this.versionedModels.put(version, oxmEntities);
-
- }
-
- public VersionedOxmEntities getVersionedOxmEntities(Version version){
- return this.versionedModels.get(version);
- }
-
-}
diff --git a/src/main/java/org/onap/aai/datarouter/util/ExternalOxmModelProcessor.java b/src/main/java/org/onap/aai/datarouter/util/ExternalOxmModelProcessor.java
deleted file mode 100644
index 9406d30..0000000
--- a/src/main/java/org/onap/aai/datarouter/util/ExternalOxmModelProcessor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.util;
-
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
-
-/**
- * Exposes a registration and processing contract so that any load/change of an oxm version will
- * inform registered model processors.
- *
- * @author davea
- */
-public interface ExternalOxmModelProcessor {
- public void onOxmVersionChange(Version version, DynamicJAXBContext context);
-}
diff --git a/src/main/java/org/onap/aai/datarouter/util/Version.java b/src/main/java/org/onap/aai/datarouter/util/Version.java
deleted file mode 100644
index 62418ae..0000000
--- a/src/main/java/org/onap/aai/datarouter/util/Version.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.util;
-
-public enum Version {
- v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20;
-} \ No newline at end of file
diff --git a/src/main/java/org/onap/aai/datarouter/util/VersionedOxmEntities.java b/src/main/java/org/onap/aai/datarouter/util/VersionedOxmEntities.java
deleted file mode 100644
index fc34437..0000000
--- a/src/main/java/org/onap/aai/datarouter/util/VersionedOxmEntities.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ================================================================================
- * 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.onap.aai.datarouter.util;
-
-import org.eclipse.persistence.dynamic.DynamicType;
-import org.eclipse.persistence.internal.helper.DatabaseField;
-import org.eclipse.persistence.internal.oxm.XPathFragment;
-import org.eclipse.persistence.internal.oxm.mappings.Descriptor;
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
-import org.eclipse.persistence.mappings.DatabaseMapping;
-import org.eclipse.persistence.oxm.XMLField;
-import org.onap.aai.datarouter.entity.OxmEntityDescriptor;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-
-/**
- * Builds up a representation of the versioned entities in a way that they can be cross referenced
- * in a data-driven way
- *
- * @author DAVEA
- */
-public class VersionedOxmEntities {
-
- private static final String REST_ROOT_ENTITY = "inventory";
-
- private HashMap<String, Boolean> crossEntityReferenceContainerLookup = new HashMap<>();
- private HashMap<String, CrossEntityReference> crossEntityReferenceLookup = new HashMap<>();
- private Map<String, DynamicType> entityTypeLookup = new LinkedHashMap<>();
- private Map<String, OxmEntityDescriptor> searchableEntityDescriptors = new HashMap<>();
- private Map<String, OxmEntityDescriptor> suggestableEntityDescriptors = new HashMap<>();
- private Map<String, OxmEntityDescriptor> entityAliasDescriptors = new HashMap<>();
-
-
- public void initialize(DynamicJAXBContext context) {
- parseOxmContext(context);
- buildCrossEntityReferenceCollections(REST_ROOT_ENTITY, new HashSet<String>());
- populateSearchableDescriptors(context);
- }
-
- /**
- * The big goal for these methods is to make the processing as generic and model driven as possible.
- * There are only two exceptions to this rule, at the moment. I needed to hard-coded the top level REST data
- * model entity type, which is "inventory" for now. And as this class is heavily focused and coupled towards
- * building a version specific set of lookup structures for the "crossEntityReference" model attribute, it possesses
- * knowledge of that attribute whether it exists or not in the DynamicJAXBContext we are currently analyzing.
- * <p>
- * This method will build two collections:
- * <p>
- * 1) A list of entity types that can have nested entities containing cross entity reference definitions.
- * The purpose of this collection is a fail-fast test when processing UEB events so we can quickly determine if
- * it is necessary to deeply parse the event looking for cross entity reference attributes which not exist.
- * <p>
- * For example, looking at a service-instance <=> inventory path:
- * <p>
- * inventory (true)
- * -> business (true)
- * -> customers (true)
- * -> customer (true)
- * -> service-subscriptions (true)
- * -> service-subscription (CER defined here in the model) (true)
- * -> service-instances (false)
- * -> service-instance (false)
- * <p>
- * Because service-subscription contains a model definition of CER, in the first collection all the types in the
- * tree will indicate that it possesses one or more contained entity types with a cross-entity-reference definition.
- * <p>
- * 2) A lookup for { entityType => CrossEntityReference } so we can quickly access the model definition of a CER
- * for a specific entity type when we begin extracting parent attributes for transposition into nested child entity
- * types.
- *
- * @param entityType
- * @param checked
- * @return
- */
- protected boolean buildCrossEntityReferenceCollections(String entityType, HashSet<String> checked) {
-
- /*
- * To short-circuit infinite loops, make sure this entityType hasn't
- * already been checked
- */
-
- if (checked.contains(entityType)) {
- return false;
- } else {
- checked.add(entityType);
- }
-
- DynamicType parentType = entityTypeLookup.get(entityType);
- DynamicType childType;
- boolean returnValue = false;
-
- if (parentType == null) {
- return returnValue;
- }
-
- /*
- * Check if current descriptor contains the cross-entity-reference
- * attribute. If it does not walk the entity model looking for nested
- * entity types that may contain the reference.
- */
-
- Map<String, String> properties = parentType.getDescriptor().getProperties();
- if (properties != null) {
- for (Map.Entry<String, String> entry : properties.entrySet()) {
- if ("crossEntityReference".equalsIgnoreCase(entry.getKey())) {
- returnValue = true;
- CrossEntityReference cer = new CrossEntityReference();
- cer.initialize(entry.getValue());
- crossEntityReferenceLookup.put(entityType, cer);
- //System.out.println("entityType = " + entityType + " contains a CER instance = " + returnValue);
- // return true;
- }
- }
- }
-
- Vector<DatabaseField> fields = parentType.getDescriptor().getAllFields();
-
- if (fields != null) {
-
- XMLField xmlField;
- for (DatabaseField f : fields) {
-
- if (f instanceof XMLField) {
- xmlField = (XMLField) f;
- XPathFragment xpathFragment = xmlField.getXPathFragment();
- String entityShortName = xpathFragment.getLocalName();
-
- childType = entityTypeLookup.get(entityShortName);
-
- if (childType != null) {
-
- if (!checked.contains(entityShortName)) {
-
- if (buildCrossEntityReferenceCollections(entityShortName, checked)) {
- returnValue = true;
- }
-
- }
-
- checked.add(entityShortName);
-
- }
-
- }
-
- }
-
- }
-
- crossEntityReferenceContainerLookup.put(entityType, Boolean.valueOf(returnValue));
- return returnValue;
- }
-
- private void populateSearchableDescriptors(DynamicJAXBContext oxmContext) {
- List<Descriptor> descriptorsList = oxmContext.getXMLContext().getDescriptors();
- OxmEntityDescriptor newOxmEntity;
-
- for (Descriptor desc : descriptorsList) {
-
- DynamicType entity = (DynamicType) oxmContext.getDynamicType(desc.getAlias());
-
- //LinkedHashMap<String, String> oxmProperties = new LinkedHashMap<String, String>();
- String primaryKeyAttributeNames = null;
-
- //Not all fields have key attributes
- if (desc.getPrimaryKeyFields() != null) {
- primaryKeyAttributeNames = desc.getPrimaryKeyFields()
- .toString().replaceAll("/text\\(\\)", "").replaceAll("\\[", "").replaceAll("\\]", "");
- }
-
- String entityName = desc.getDefaultRootElement();
-
- Map<String, String> properties = entity.getDescriptor().getProperties();
- if (properties != null) {
- for (Map.Entry<String, String> entry : properties.entrySet()) {
- if ("searchable".equalsIgnoreCase(entry.getKey())) {
-
- /*
- * we can do all the work here, we don't have a create additional collections for
- * subsequent passes
- */
- newOxmEntity = new OxmEntityDescriptor();
- newOxmEntity.setEntityName(entityName);
- newOxmEntity
- .setPrimaryKeyAttributeName(Arrays.asList(primaryKeyAttributeNames.split(",")));
- newOxmEntity.setSearchableAttributes(Arrays.asList(entry.getValue().split(",")));
- searchableEntityDescriptors.put(entityName, newOxmEntity);
- } else if ("containsSuggestibleProps".equalsIgnoreCase(entry.getKey())) {
- newOxmEntity = new OxmEntityDescriptor();
- newOxmEntity.setEntityName(entityName);
- newOxmEntity.setSuggestableEntity(true);
- Vector<DatabaseMapping> descriptorMaps = entity.getDescriptor().getMappings();
- List<String> listOfSuggestableAttributes = new ArrayList<>();
-
- for (DatabaseMapping descMap : descriptorMaps) {
- if (descMap.isAbstractDirectMapping()) {
-
- if (descMap.getProperties().get("suggestibleOnSearch") != null) {
- String suggestableOnSearchString = String.valueOf(
- descMap.getProperties().get("suggestibleOnSearch"));
-
- boolean isSuggestibleOnSearch = Boolean.valueOf(suggestableOnSearchString);
-
- if (isSuggestibleOnSearch) {
- /* Grab attribute types for suggestion */
- String attributeName = descMap.getField().getName()
- .replaceAll("/text\\(\\)", "");
- listOfSuggestableAttributes.add(attributeName);
- }
- }
- }
- }
- newOxmEntity.setSuggestableAttributes(listOfSuggestableAttributes);
- suggestableEntityDescriptors.put(entityName, newOxmEntity);
- } else if ("suggestionAliases".equalsIgnoreCase(entry.getKey())) {
- newOxmEntity = new OxmEntityDescriptor();
- newOxmEntity.setEntityName(entityName);
- newOxmEntity.setAlias(Arrays.asList(entry.getValue().split(",")));
- entityAliasDescriptors.put(entityName, newOxmEntity);
- }
- }
- }
-
- }
-
- }
-
- public Map<String, OxmEntityDescriptor> getSearchableEntityDescriptors() {
- return searchableEntityDescriptors;
- }
-
- public OxmEntityDescriptor getSearchableEntityDescriptor(String entityType) {
- return searchableEntityDescriptors.get(entityType);
- }
-
-
- public HashMap<String, Boolean> getCrossEntityReferenceContainers() {
- return crossEntityReferenceContainerLookup;
- }
-
- public HashMap<String, CrossEntityReference> getCrossEntityReferences() {
- return crossEntityReferenceLookup;
- }
-
-
- private void parseOxmContext(DynamicJAXBContext oxmContext) {
- List<Descriptor> descriptorsList = oxmContext.getXMLContext().getDescriptors();
-
- for (Descriptor desc : descriptorsList) {
-
- DynamicType entity = (DynamicType) oxmContext.getDynamicType(desc.getAlias());
-
- String entityName = desc.getDefaultRootElement();
-
- entityTypeLookup.put(entityName, entity);
-
- }
-
- }
-
- public boolean entityModelContainsCrossEntityReference(String containerEntityType) {
- Boolean v = crossEntityReferenceContainerLookup.get(containerEntityType);
-
- if (v == null) {
- return false;
- }
-
- return v;
- }
-
- public boolean entityContainsCrossEntityReference(String entityType) {
- return crossEntityReferenceLookup.get(entityType) != null;
- }
-
- public CrossEntityReference getCrossEntityReference(String entityType) {
- return crossEntityReferenceLookup.get(entityType);
- }
-
- public Map<String, OxmEntityDescriptor> getSuggestableEntityDescriptors() {
- return suggestableEntityDescriptors;
- }
-
- public void setSuggestableEntityDescriptors(
- Map<String, OxmEntityDescriptor> suggestableEntityDescriptors) {
- this.suggestableEntityDescriptors = suggestableEntityDescriptors;
- }
-
- public Map<String, OxmEntityDescriptor> getEntityAliasDescriptors() {
- return entityAliasDescriptors;
- }
-
- public void setEntityAliasDescriptors(Map<String, OxmEntityDescriptor> entityAliasDescriptors) {
- this.entityAliasDescriptors = entityAliasDescriptors;
- }
-
- public void extractEntities(String entityType, DynamicJAXBContext context, Collection<DynamicType> entities) {
-
-
- }
-
- public String dumpCrossEntityReferenceContainers() {
-
- Set<String> keys = crossEntityReferenceContainerLookup.keySet();
- StringBuilder sb = new StringBuilder(128);
-
- for (String key : keys) {
-
- if (crossEntityReferenceContainerLookup.get(key)) {
- sb.append("\n").append("Entity-Type = '" + key + "' contains a Cross-Entity-Reference.");
- }
- }
-
-
- return sb.toString();
-
- }
-
- public Map<String, DynamicType> getEntityTypeLookup() {
- return entityTypeLookup;
- }
-
-}
diff --git a/src/main/resources/logging/DataRouterMsgs.properties b/src/main/resources/logging/DataRouterMsgs.properties
index d922a7f..3194f5e 100644
--- a/src/main/resources/logging/DataRouterMsgs.properties
+++ b/src/main/resources/logging/DataRouterMsgs.properties
@@ -95,11 +95,7 @@ ROUTING_RESPONSE=\
OP_TIME=\
DR0013I|\
- {0} took {1} ms.
-
-LOADED_OXM_FILE=\
- DR0014I|\
- Successfully loaded schema: {0}
+ {0} took {1} ms.
STARTUP_FAILURE=\
DR2001E|\
@@ -115,11 +111,11 @@ QUERY_ROUTING_ERR=\
LOAD_PROPERTIES_FAILURE=\
DR3001E|\
- File {0} cannot be loaded into the map.
+ File {0} cannot be loaded into the map.
FILE_MON_BLOCK_ERR=\
DR3002E|\
- Error in the file monitor block.
+ Error in the file monitor block.
CREATE_PROPERTY_MAP_ERR=\
DR3003E|\
@@ -171,7 +167,3 @@ FAIL_TO_CREATE_UPDATE_DOC=\
LOAD_OXM_ERROR=\
DR5000E|\
Unable to load Oxm model: {0}\
-
-SCHEMA_INGEST_LOAD_ERROR=\
- DR5001E|\
- Unable to load schema ingest properties file due to : {0}