summaryrefslogtreecommitdiffstats
path: root/aai-schema-ingest/src/main/java/org
diff options
context:
space:
mode:
authorKajur, Harish (vk250x) <vk250x@att.com>2019-04-07 18:50:42 -0400
committerKajur, Harish (vk250x) <vk250x@att.com>2019-04-08 13:25:06 -0400
commit312c14b50f32493fa93fe3e6b757b8d16058a777 (patch)
tree5956721ce6a4bb4eafea5f2249aba0132b796f17 /aai-schema-ingest/src/main/java/org
parent08c1bd4d78a0504e7531876869a7ae0cd9c448df (diff)
Update schema service to fail to start
when all of the schema failed to load so the microservice wouldn't be in a bad state and also have the microservice dictate what versions of schema they are using Issue-ID: AAI-2329 Change-Id: Ie2e6e2bb3bac37b2ad57ada613e7c0e65647b64e Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
Diffstat (limited to 'aai-schema-ingest/src/main/java/org')
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/config/ConfigConfiguration.java8
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/config/EdgesConfiguration.java4
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java5
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/config/SchemaServiceConfiguration.java14
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java10
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java12
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceNoAuthClient.java4
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java4
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java4
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/AAIConfigTranslator.java2
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/ConfigTranslator.java3
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaConfigVersions.java92
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceTranslator.java16
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceVersions.java33
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersions.java30
-rw-r--r--aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersionsBean.java31
16 files changed, 200 insertions, 72 deletions
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/ConfigConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/ConfigConfiguration.java
index 9f28cf8f..11f0da6a 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/config/ConfigConfiguration.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/ConfigConfiguration.java
@@ -21,6 +21,7 @@
*/
package org.onap.aai.config;
+import org.onap.aai.setup.SchemaConfigVersions;
import org.onap.aai.setup.SchemaLocationsBean;
import org.onap.aai.setup.SchemaVersions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -34,9 +35,14 @@ import org.springframework.context.annotation.PropertySource;
@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
public class ConfigConfiguration {
+ @Bean(name = "schemaConfigVersions")
+ public SchemaConfigVersions schemaConfigVersions() {
+ return new SchemaConfigVersions();
+ }
+
@Bean(name = "schemaVersions")
public SchemaVersions schemaVersions() {
- return new SchemaVersions();
+ return schemaConfigVersions();
}
@Bean(name = "schemaLocationsBean")
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/EdgesConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/EdgesConfiguration.java
index e492d213..605dc0cf 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/config/EdgesConfiguration.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/EdgesConfiguration.java
@@ -22,10 +22,10 @@
package org.onap.aai.config;
import org.onap.aai.edges.EdgeIngestor;
-import org.onap.aai.setup.SchemaVersions;
import org.onap.aai.setup.Translator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@@ -39,6 +39,7 @@ import java.util.Set;
@Import({SchemaServiceConfiguration.class, ConfigConfiguration.class, TranslatorConfiguration.class})
@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
+
@Configuration
public class EdgesConfiguration {
@@ -70,6 +71,7 @@ public class EdgesConfiguration {
}
@Bean(name = "edgeIngestor")
+ @ConditionalOnExpression("'${schema.translators.needed:all}'.contains('edges') || '${schema.translators.needed:all}'.contains('all')")
public EdgeIngestor edgeIngestor() {
return new EdgeIngestor(translators());
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java
index 50738df9..8c520aaa 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java
@@ -24,10 +24,10 @@ package org.onap.aai.config;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import org.onap.aai.nodes.NodeIngestor;
-import org.onap.aai.setup.SchemaVersions;
import org.onap.aai.setup.Translator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@@ -38,9 +38,11 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+
@Import({SchemaServiceConfiguration.class, ConfigConfiguration.class, TranslatorConfiguration.class})
@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
+
@Configuration
public class NodesConfiguration {
@@ -75,6 +77,7 @@ public class NodesConfiguration {
}
@Bean(name = "nodeIngestor")
+ @ConditionalOnExpression("'${schema.translators.needed:all}'.contains('nodes') || '${schema.translators.needed:all}'.contains('all')")
public NodeIngestor nodeIngestor() {
return new NodeIngestor(translators());
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/SchemaServiceConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/SchemaServiceConfiguration.java
index 81ef02a8..c6decb03 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/config/SchemaServiceConfiguration.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/SchemaServiceConfiguration.java
@@ -21,10 +21,7 @@
*/
package org.onap.aai.config;
-import org.onap.aai.setup.SchemaServiceTranslator;
-import org.onap.aai.setup.SchemaVersions;
-import org.onap.aai.setup.SchemaVersionsBean;
-import org.onap.aai.setup.Translator;
+import org.onap.aai.setup.*;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -41,14 +38,19 @@ public class SchemaServiceConfiguration {
return new SchemaVersionsBean();
}
+ @Bean(name = "schemaServiceVersions")
+ public SchemaServiceVersions schemaServiceVersions() {
+ return schemaVersionsBean().getSchemaVersions();
+ }
+
@Bean(name = "schemaVersions")
public SchemaVersions schemaVersions() {
- return schemaVersionsBean().getSchemaVersions();
+ return schemaServiceVersions();
}
@Bean(name = "schemaServiceTranslator")
public Translator schemaServiceTranslator() {
- return new SchemaServiceTranslator(schemaVersions());
+ return new SchemaServiceTranslator(schemaServiceVersions());
}
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java
index 213ff590..5d8c3d55 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java
@@ -76,7 +76,6 @@ public class EdgeIngestor {
@Autowired
public EdgeIngestor(Set<Translator> translatorSet) {
- LOGGER.debug("Local Schema files will be fetched");
this.translators = translatorSet;
}
@@ -89,8 +88,8 @@ public class EdgeIngestor {
translateAll(translator);
} catch (Exception e) {
- LOGGER.debug("Error while Processing the translator" + e.getMessage());
- continue;
+ LOGGER.error("Error while Processing the translator" + e.getMessage());
+ throw new ExceptionInInitializerError("EdgeIngestor could not ingest schema");
}
}
if (versionJsonFilesMap.isEmpty() || schemaVersions==null ) {
@@ -98,7 +97,7 @@ public class EdgeIngestor {
}
}
- public void translateAll(Translator translator) {
+ public void translateAll(Translator translator) throws ExceptionInInitializerError{
/*
Use SchemaVersions from the Translator
*/
@@ -115,7 +114,8 @@ public class EdgeIngestor {
try {
jsonPayloads = translator.getJsonPayload(version); // need to change this - need to receive the json files.
} catch (IOException e) {
- LOGGER.info("Exception in retrieving the JSON Payload"+e.getMessage());
+ LOGGER.error("Error in retrieving the JSON Payload" + e.getMessage());
+ throw new ExceptionInInitializerError("EdgeIngestor could not ingest schema");
}
if (jsonPayloads == null || jsonPayloads.isEmpty()) {
continue;
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java
index 69cd51ab..f9b23080 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java
@@ -71,16 +71,14 @@ public class NodeIngestor {
private Set<Translator> translators;
//TODO : See if you can get rid of InputStream resets
- /**
+
+ /**
* Instantiates the NodeIngestor bean.
- *
- * @param - ConfigTranslator autowired in by Spring framework which
- * contains the configuration information needed to ingest the desired files.
+ * @param translatorSet
*/
@Autowired
public NodeIngestor(Set<Translator> translatorSet) {
- LOGGER.debug("Local Schema files will be fetched");
this.translators = translatorSet;
}
@@ -93,8 +91,8 @@ public class NodeIngestor {
translateAll(translator);
} catch (Exception e) {
- LOGGER.info("Error while Processing the translator" + e.getMessage());
- continue;
+ LOGGER.error("Error while Processing the translator" + e.getMessage());
+ throw new ExceptionInInitializerError("NodeIngestor could not ingest schema");
}
}
if (versionContextMap.isEmpty() || schemaPerVersion.isEmpty() || typesPerVersion.isEmpty()) {
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceNoAuthClient.java b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceNoAuthClient.java
index 07f522b4..83687a76 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceNoAuthClient.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceNoAuthClient.java
@@ -68,8 +68,4 @@ public class SchemaServiceNoAuthClient extends NoAuthRestClient{
return httpHeaders;
}
- @Override
- public EELFLogger getLogger() {
- return logger;
- }
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java
index 3aa3b1da..a3e4de54 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceOneWayClient.java
@@ -80,8 +80,4 @@ public class SchemaServiceOneWayClient extends OneWaySSLRestClient{
return httpHeaders;
}
- @Override
- public EELFLogger getLogger() {
- return logger;
- }
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java
index db1a50b5..300c5d83 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/restclient/SchemaServiceRestClient.java
@@ -95,8 +95,4 @@ public class SchemaServiceRestClient extends TwoWaySSLRestClient {
return httpHeaders;
}
- @Override
- public EELFLogger getLogger() {
- return logger;
- }
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/AAIConfigTranslator.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/AAIConfigTranslator.java
index 899a520d..4454ad27 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/AAIConfigTranslator.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/AAIConfigTranslator.java
@@ -37,7 +37,7 @@ public class AAIConfigTranslator extends ConfigTranslator {
private static final String FILESEP = (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator");
- public AAIConfigTranslator(SchemaLocationsBean bean, SchemaVersions schemaVersions) {
+ public AAIConfigTranslator(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) {
super(bean, schemaVersions);
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/ConfigTranslator.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/ConfigTranslator.java
index 4e6a6bdf..3ef76d75 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/ConfigTranslator.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/ConfigTranslator.java
@@ -25,7 +25,6 @@ import com.att.eelf.configuration.EELFManager;
import org.apache.commons.io.IOUtils;
import org.onap.aai.edges.JsonIngestor;
import org.springframework.beans.factory.annotation.Autowired;
-
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -45,7 +44,7 @@ public abstract class ConfigTranslator extends Translator{
@Autowired
- public ConfigTranslator(SchemaLocationsBean schemaLocationbean, SchemaVersions schemaVersions) {
+ public ConfigTranslator(SchemaLocationsBean schemaLocationbean, SchemaConfigVersions schemaVersions) {
super(schemaVersions);
this.bean = schemaLocationbean;
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaConfigVersions.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaConfigVersions.java
new file mode 100644
index 00000000..e23fea26
--- /dev/null
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaConfigVersions.java
@@ -0,0 +1,92 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-18 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.onap.aai.setup;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component("schemaConfigVersions")
+@ConditionalOnExpression("'${schema.translator.list:config}'.contains('config') || '${schema.service.versions.override:false}'.equals('true')")
+@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
+@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
+public class SchemaConfigVersions extends SchemaVersions {
+
+ @Value("#{'${schema.version.list:''}'.split(',')}")
+ private List<String> apiVersions;
+ @Value("${schema.version.api.default}")
+ private String defaultApiVersion;
+ @Value("${schema.version.edge.label.start:''}")
+ private String edgeLabelStartVersion;
+ @Value("${schema.version.depth.start:''}")
+ private String depthStartVersion;
+ @Value("${schema.version.app.root.start:''}")
+ private String appRootStartVersion;
+ @Value("${schema.version.related.link.start:''}")
+ private String relatedLinkStartVersion;
+ @Value("${schema.version.namespace.change.start:''}")
+ protected String namespaceChangeStartVersion;
+
+ public List<String> getApiVersions() {
+ return apiVersions;
+ }
+
+ public String getDefaultApiVersion() {
+ return defaultApiVersion;
+ }
+
+ public String getEdgeLabelStartVersion() {
+ return edgeLabelStartVersion;
+ }
+
+ public String getDepthStartVersion() {
+ return depthStartVersion;
+ }
+
+ public String getAppRootStartVersion() {
+ return appRootStartVersion;
+ }
+
+ public String getRelatedLinkStartVersion() {
+ return relatedLinkStartVersion;
+ }
+
+ public String getNamespaceChangeStartVersion() {
+ return namespaceChangeStartVersion;
+ }
+
+ @PostConstruct
+ public void initialize() {
+ versionsValue = apiVersions.stream().map(SchemaVersion::new).collect(Collectors.toList());
+ edgeLabelVersionValue = new SchemaVersion(edgeLabelStartVersion);
+ defaultVersionValue = new SchemaVersion(defaultApiVersion);
+ depthVersionValue = new SchemaVersion(depthStartVersion);
+ appRootVersionValue = new SchemaVersion(appRootStartVersion);
+ relatedLinkVersionValue = new SchemaVersion(relatedLinkStartVersion);
+ namespaceChangeVersionValue = new SchemaVersion(namespaceChangeStartVersion);
+ this.validate();
+ }
+
+}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceTranslator.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceTranslator.java
index 21082fa1..2d2411fb 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceTranslator.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceTranslator.java
@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -77,12 +78,13 @@ public class SchemaServiceTranslator extends Translator {
RestClient restClient = restClientFactory.getRestClient(SchemaServiceClientType);
ResponseEntity<Resource> schemaResponse = restClient.getGetResource(content, uri,
headersMap);
- LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode());
+ verifySchemaServiceResponse(schemaResponse.getStatusCode());
+ LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode());
inputStreams.add(schemaResponse.getBody().getInputStream());
return inputStreams;
}
- @Override
+ @Override
public List<String> getJsonPayload(SchemaVersion version) throws IOException {
/*
* Call Schema MS to get versions using RestTemplate
@@ -96,10 +98,18 @@ public class SchemaServiceTranslator extends Translator {
ResponseEntity<String> schemaResponse = restClient.getGetRequest(content, uri,
headersMap);
- LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode());
+ verifySchemaServiceResponse(schemaResponse.getStatusCode());
+ LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode());
inputStreams.add(schemaResponse.getBody());
return inputStreams;
}
+ private void verifySchemaServiceResponse(HttpStatus statusCode) throws IOException {
+ if (statusCode != HttpStatus.OK) {
+ LOGGER.error("Please check the Schema Service. It returned with the status code {}", statusCode);
+ throw new IOException("SchemaService is not available");
+ }
+ }
+
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceVersions.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceVersions.java
index 6594f232..5518ccb2 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceVersions.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaServiceVersions.java
@@ -19,10 +19,17 @@
*/
package org.onap.aai.setup;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.stream.Collectors;
+@Component("schemaServiceVersions")
+@ConditionalOnExpression("'${schema.translator.list}'.contains('schema-service')")
+@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
+@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
public class SchemaServiceVersions extends SchemaVersions {
private List<String> versions;
private String edgeVersion;
@@ -32,9 +39,17 @@ public class SchemaServiceVersions extends SchemaVersions {
private String relatedLinkVersion;
private String namespaceChangeVersion;
+ public List<String> getVersionsAll() {
+ return versions;
+ }
+
+ public void setVersions(List<String> versions) {
+ this.versions = versions;
+ }
@PostConstruct
- public void initializeFromSchemaService() {
+ public void initializeFromSchemaService() throws ExceptionInInitializerError{
+
versionsValue = versions.stream().map(SchemaVersion::new).collect(Collectors.toList());
edgeLabelVersionValue = new SchemaVersion(edgeVersion);
defaultVersionValue = new SchemaVersion(defaultVersion);
@@ -42,7 +57,23 @@ public class SchemaServiceVersions extends SchemaVersions {
appRootVersionValue = new SchemaVersion(appRootVersion);
relatedLinkVersionValue = new SchemaVersion(relatedLinkVersion);
namespaceChangeVersionValue = new SchemaVersion(namespaceChangeVersion);
+
this.validate();
}
+ /*
+ * TODO Change Method names
+ */
+ public void initializeFromSchemaConfig(SchemaConfigVersions schemaConfigVersion) throws ExceptionInInitializerError{
+
+ versions = schemaConfigVersion.getApiVersions();
+ appRootVersion = schemaConfigVersion.getAppRootStartVersion();
+ defaultVersion = schemaConfigVersion.getDefaultApiVersion();
+ depthVersion = schemaConfigVersion.getDepthStartVersion();
+ edgeVersion = schemaConfigVersion.getEdgeLabelStartVersion();
+ namespaceChangeVersion = schemaConfigVersion.getNamespaceChangeStartVersion();
+ relatedLinkVersion = schemaConfigVersion.getRelatedLinkStartVersion();
+ this.initializeFromSchemaService();
+ }
+
}
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersions.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersions.java
index 028ebdeb..e7f599c6 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersions.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersions.java
@@ -28,26 +28,11 @@ import javax.annotation.PostConstruct;
import java.util.List;
import java.util.stream.Collectors;
-@Component
+
@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
public class SchemaVersions {
- @Value("#{'${schema.version.list}'.split(',')}")
- private List<String> apiVersions;
- @Value("${schema.version.api.default}")
- private String defaultApiVersion;
- @Value("${schema.version.edge.label.start}")
- private String edgeLabelStartVersion;
- @Value("${schema.version.depth.start}")
- private String depthStartVersion;
- @Value("${schema.version.app.root.start}")
- private String appRootStartVersion;
- @Value("${schema.version.related.link.start}")
- private String relatedLinkStartVersion;
- @Value("${schema.version.namespace.change.start}")
-
- protected String namespaceChangeStartVersion;
protected List<SchemaVersion> versionsValue;
protected SchemaVersion edgeLabelVersionValue;
protected SchemaVersion defaultVersionValue;
@@ -56,19 +41,6 @@ public class SchemaVersions {
protected SchemaVersion relatedLinkVersionValue;
protected SchemaVersion namespaceChangeVersionValue;
- @PostConstruct
- public void initialize() {
- versionsValue = apiVersions.stream().map(SchemaVersion::new).collect(Collectors.toList());
- edgeLabelVersionValue = new SchemaVersion(edgeLabelStartVersion);
- defaultVersionValue = new SchemaVersion(defaultApiVersion);
- depthVersionValue = new SchemaVersion(depthStartVersion);
- appRootVersionValue = new SchemaVersion(appRootStartVersion);
- relatedLinkVersionValue = new SchemaVersion(relatedLinkStartVersion);
- namespaceChangeVersionValue = new SchemaVersion(namespaceChangeStartVersion);
- this.validate();
- }
-
-
protected void validate() {
String errorMessage = "Invalid, edge label version is not in the api versions list"
+ ", please check schema.version.list and ensure that the"
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersionsBean.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersionsBean.java
index 119669d3..dde7cad6 100644
--- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersionsBean.java
+++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersionsBean.java
@@ -27,7 +27,6 @@ import org.onap.aai.restclient.RestClientFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
-
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
@@ -41,16 +40,22 @@ public class SchemaVersionsBean {
@Value("${schema.service.versions.endpoint}")
private String versionsUri;
+ @Value("${schema.service.versions.override:false}")
+ private String overrideSchemaService;
+
@Autowired
private RestClientFactory restClientFactory;
+ @Autowired(required = false)
+ private SchemaConfigVersions schemaConfigVersions;
+
@PostConstruct
public void initialize() {
//Call SchemaService to get versions
retrieveAllSchemaVersions();
}
- public void retrieveAllSchemaVersions() {
+ public void retrieveAllSchemaVersions() throws ExceptionInInitializerError{
/*
Call Schema MS to get versions using RestTemplate
*/
@@ -64,8 +69,28 @@ public class SchemaVersionsBean {
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES)
.create();
schemaVersions = gson.fromJson(schemaResponse.getBody(), SchemaServiceVersions.class);
- schemaVersions.initializeFromSchemaService();
+ if(!validateOverrides(schemaVersions)){
+ throw new ExceptionInInitializerError("The versions requested is not supported by SchemaService");
+ }
+ if("true".equals(overrideSchemaService)){
+ schemaVersions.initializeFromSchemaConfig(schemaConfigVersions);
+ }
+ else{
+ schemaVersions.initializeFromSchemaService();
+ }
+
+ }
+
+ public boolean validateOverrides(SchemaServiceVersions schemaVersions1){
+ boolean versionsAvailable = true;
+ if("true".equals(overrideSchemaService)){
+ versionsAvailable = schemaConfigVersions.getApiVersions().stream().
+ allMatch(
+ (s) -> schemaVersions1.getVersionsAll().contains(s)
+ );
+ }
+ return versionsAvailable;
}
public SchemaServiceVersions getSchemaVersions() {