Only load SchemaService related beans in aai-common when schema.translator.list=schem...
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / config / SchemaConfiguration.java
index 20112bd..9247bc7 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright © 2018 IBM.
+ * ================================================================================
  * 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
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.config;
 
 import org.onap.aai.edges.EdgeIngestor;
 import org.onap.aai.nodes.NodeIngestor;
-import org.onap.aai.setup.AAIConfigTranslator;
 import org.onap.aai.serialization.db.EdgeSerializer;
+import org.onap.aai.setup.AAIConfigTranslator;
 import org.onap.aai.setup.ConfigTranslator;
+import org.onap.aai.setup.SchemaConfigVersions;
 import org.onap.aai.setup.SchemaLocationsBean;
-import org.onap.aai.setup.SchemaVersions;
 import org.onap.aai.validation.CheckEverythingStrategy;
 import org.onap.aai.validation.SchemaErrorStrategy;
+import org.onap.aai.validation.nodes.DefaultDuplicateNodeDefinitionValidationModule;
+import org.onap.aai.validation.nodes.DuplicateNodeDefinitionValidationModule;
+import org.onap.aai.validation.nodes.NodeValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.*;
 
+@Import({NodesConfiguration.class, EdgesConfiguration.class})
 @Configuration
+@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
+@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
 public class SchemaConfiguration {
 
+    // TODO : Inject this directly into nodeIngestor
+    @Autowired(required = false)
+    NodesConfiguration nodesConfiguration;
+
+    @Autowired(required = false)
+    EdgesConfiguration edgesConfiguration;
+
     @Bean
-    public EdgeIngestor edgeIngestor(SchemaLocationsBean schemaLocationsBean, SchemaVersions schemaVersions){
-        return new EdgeIngestor(configTranslator(schemaLocationsBean, schemaVersions), schemaVersions);
+    public EdgeIngestor edgeIngestor({
+        return edgesConfiguration.edgeIngestor();
     }
 
     @Bean
-    public EdgeSerializer edgeSerializer(EdgeIngestor edgeIngestor){
+    public EdgeSerializer edgeSerializer(EdgeIngestor edgeIngestor) {
         return new EdgeSerializer(edgeIngestor);
     }
-    
-       @Bean(name = "nodeIngestor")
-       public NodeIngestor nodeIngestor(ConfigTranslator configTranslator) {
-               NodeIngestor nodeIngestor = new NodeIngestor(configTranslator);
-               return nodeIngestor;
-       }
-
-       @Bean(name = "configTranslator")
-       public ConfigTranslator configTranslator(SchemaLocationsBean schemaLocationsBean, SchemaVersions schemaVersions) {
-               ConfigTranslator aaiConfigTranslator = new AAIConfigTranslator(schemaLocationsBean, schemaVersions);
-               return aaiConfigTranslator;
-       }
-
-       @Bean
-       public SchemaErrorStrategy schemaErrorStrategy(){
+
+    @Bean(name = "nodeIngestor")
+    public NodeIngestor nodeIngestor() {
+        return nodesConfiguration.nodeIngestor();
+    }
+
+    @Bean
+    @ConditionalOnProperty(name = "schema.translator.list", havingValue = "config", matchIfMissing = true)
+    public SchemaErrorStrategy schemaErrorStrategy() {
         return new CheckEverythingStrategy();
-       }
+    }
+
+    @Bean
+    @ConditionalOnProperty(name = "schema.translator.list", havingValue = "config", matchIfMissing = true)
+    public DuplicateNodeDefinitionValidationModule duplicateNodeDefinitionValidationModule() {
+        return new DefaultDuplicateNodeDefinitionValidationModule();
+    }
+
+    @Bean
+    @ConditionalOnProperty(name = "schema.translator.list", havingValue = "config", matchIfMissing = true)
+    public NodeValidator nodeValidator(ConfigTranslator configTranslator, SchemaErrorStrategy schemaErrorStrategy,
+            DuplicateNodeDefinitionValidationModule duplicateNodeDefinitionValidationModule) {
+        return new NodeValidator(configTranslator, schemaErrorStrategy, duplicateNodeDefinitionValidationModule);
+    }
 }