diff options
Diffstat (limited to 'aai-schema-ingest')
96 files changed, 2294 insertions, 2201 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 11f0da6a..e4d18650 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 @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; import org.onap.aai.setup.SchemaConfigVersions; 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 605dc0cf..af4d8e8e 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 @@ -19,8 +19,14 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.onap.aai.edges.EdgeIngestor; import org.onap.aai.setup.Translator; import org.springframework.beans.factory.annotation.Autowired; @@ -31,11 +37,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; -import java.util.Arrays; -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) 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 8c520aaa..a6675d43 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 @@ -19,10 +19,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.onap.aai.nodes.NodeIngestor; import org.onap.aai.setup.Translator; import org.springframework.beans.factory.annotation.Autowired; @@ -33,12 +40,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; -import java.util.Arrays; -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) diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/RestConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/RestConfiguration.java index 0a3dbf5e..9f523935 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/config/RestConfiguration.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/RestConfiguration.java @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; import org.onap.aai.restclient.*; @@ -59,21 +60,21 @@ public class RestConfiguration { } /* - In the below cases bean name and method names are different because all of them qualify as restClient + * In the below cases bean name and method names are different because all of them qualify as restClient */ - @Bean(name="restClient") + @Bean(name = "restClient") @ConditionalOnProperty(name = "schema.service.client", havingValue = "two-way-ssl", matchIfMissing = true) public RestClient getSchemaServiceTwoWayClient() { return new SchemaServiceRestClient(); } - @Bean(name="restClient") + @Bean(name = "restClient") @ConditionalOnProperty(name = "schema.service.client", havingValue = "no-auth") public RestClient getSchemaServiceNoAuthClient() { return new SchemaServiceNoAuthClient(); } - @Bean(name="restClient") + @Bean(name = "restClient") @ConditionalOnProperty(name = "schema.service.client", havingValue = "one-way-ssl") public RestClient getSchemaServiceOneWayClient() { return new SchemaServiceOneWayClient(); 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 c6decb03..cdd87492 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 @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; import org.onap.aai.setup.*; diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/config/TranslatorConfiguration.java b/aai-schema-ingest/src/main/java/org/onap/aai/config/TranslatorConfiguration.java index 941e03d9..d49e6ec7 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/config/TranslatorConfiguration.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/config/TranslatorConfiguration.java @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.config; import org.onap.aai.setup.*; @@ -29,7 +30,7 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnProperty(prefix = "schema.translator.list", value = "config", matchIfMissing = true) public class TranslatorConfiguration { - //TODO check if you can put dependsOn to reduce number of config files + // TODO check if you can put dependsOn to reduce number of config files @Autowired(required = false) ConfigTranslator configTranslator; 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 5d8c3d55..3cf67052 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 @@ -20,6 +20,9 @@ package org.onap.aai.edges; +import static com.jayway.jsonpath.Criteria.where; +import static com.jayway.jsonpath.Filter.filter; + import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.common.cache.CacheBuilder; @@ -30,6 +33,15 @@ import com.google.common.collect.Multimap; import com.jayway.jsonpath.Criteria; import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.Filter; + +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + import org.apache.tinkerpop.gremlin.structure.Direction; import org.onap.aai.edges.enums.DirectionNotation; import org.onap.aai.edges.enums.EdgeField; @@ -42,19 +54,9 @@ import org.onap.aai.setup.Translator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import java.io.IOException; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.ExecutionException; -import java.util.stream.Collectors; - -import static com.jayway.jsonpath.Criteria.where; -import static com.jayway.jsonpath.Filter.filter; - /** * EdgeIngestor - ingests A&AI edge rule schema files per given config, serves that edge rule - * information, including allowing various filters to extract particular rules. + * information, including allowing various filters to extract particular rules. */ @Component public class EdgeIngestor { @@ -68,7 +70,7 @@ public class EdgeIngestor { private Set<String> multipleLabelKeys; - private LoadingCache<SchemaFilter,Multimap<String,EdgeRule>> cacheFilterStore; + private LoadingCache<SchemaFilter, Multimap<String, EdgeRule>> cacheFilterStore; private LoadingCache<String, String[]> cousinLabelStore; @@ -82,7 +84,7 @@ public class EdgeIngestor { @PostConstruct public void initialize() { - for (Translator translator : translators) { + for (Translator translator : translators) { try { LOGGER.debug("Processing the translator"); translateAll(translator); @@ -92,27 +94,29 @@ public class EdgeIngestor { throw new ExceptionInInitializerError("EdgeIngestor could not ingest schema"); } } - if (versionJsonFilesMap.isEmpty() || schemaVersions==null ) { + if (versionJsonFilesMap.isEmpty() || schemaVersions == null) { throw new ExceptionInInitializerError("EdgeIngestor could not ingest edgerules"); } } - public void translateAll(Translator translator) throws ExceptionInInitializerError{ + public void translateAll(Translator translator) throws ExceptionInInitializerError { /* - Use SchemaVersions from the Translator + * Use SchemaVersions from the Translator */ this.schemaVersions = translator.getSchemaVersions(); List<SchemaVersion> schemaVersionList = this.schemaVersions.getVersions(); List<String> jsonPayloads = null; JsonIngestor ji = new JsonIngestor(); - Map<SchemaVersion, List<String>> edgeRulesToIngest = new HashMap<>(); // Obtain a map of schema versions to a list of strings. One List per key + Map<SchemaVersion, List<String>> edgeRulesToIngest = new HashMap<>(); // Obtain a map of schema versions to a + // list of strings. One List per key // Add to the map the JSON file per version. for (SchemaVersion version : schemaVersionList) { LOGGER.debug("Version being processed" + version); // If the flag is set to not use the local files, obtain the Json from the service. try { - jsonPayloads = translator.getJsonPayload(version); // need to change this - need to receive the json files. + jsonPayloads = translator.getJsonPayload(version); // need to change this - need to receive the json + // files. } catch (IOException e) { LOGGER.error("Error in retrieving the JSON Payload" + e.getMessage()); throw new ExceptionInInitializerError("EdgeIngestor could not ingest schema"); @@ -125,43 +129,36 @@ public class EdgeIngestor { } versionJsonFilesMap = ji.ingestContent(edgeRulesToIngest); - this.cacheFilterStore = CacheBuilder.newBuilder() - .maximumSize(2000) - .build( - new CacheLoader<SchemaFilter, Multimap<String, EdgeRule>>() { + this.cacheFilterStore = CacheBuilder.newBuilder().maximumSize(2000) + .build(new CacheLoader<SchemaFilter, Multimap<String, EdgeRule>>() { @Override public Multimap<String, EdgeRule> load(SchemaFilter key) { return extractRules(key); } - } - ); + }); - this.cousinLabelStore = CacheBuilder.newBuilder() - .maximumSize(50) - .build( - new CacheLoader<String, String[]>() { - @Override - public String[] load(String key) throws Exception { - return retrieveCousinLabels(key); - } - } - ); + this.cousinLabelStore = CacheBuilder.newBuilder().maximumSize(50).build(new CacheLoader<String, String[]>() { + @Override + public String[] load(String key) throws Exception { + return retrieveCousinLabels(key); + } + }); } -// //-----methods for getting rule info-----// -// + // //-----methods for getting rule info-----// + // /** * Gets list of all edge rules defined in the latest version's schema * * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules associated with those types - * where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" - * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * where the key takes the form of + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. * @throws EdgeRuleNotFoundException if none found */ public Multimap<String, EdgeRule> getAllCurrentRules() throws EdgeRuleNotFoundException { @@ -173,22 +170,22 @@ public class EdgeIngestor { * * A lazy instantiation to retrieve all this info on first call * - * @return a set containing a list of strings where each string is - * concatenated by a pipe (|) character such as aNodeType|bNodeType + * @return a set containing a list of strings where each string is + * concatenated by a pipe (|) character such as aNodeType|bNodeType */ - public Set<String> getMultipleLabelKeys(){ + public Set<String> getMultipleLabelKeys() { - if(multipleLabelKeys == null){ + if (multipleLabelKeys == null) { multipleLabelKeys = new HashSet<>(); try { final Multimap<String, EdgeRule> edges = this.getAllCurrentRules(); - if(edges == null || edges.isEmpty()){ + if (edges == null || edges.isEmpty()) { LOGGER.warn("Unable to find any edge rules for the latest version"); return multipleLabelKeys; } edges.keySet().forEach(key -> { Collection<EdgeRule> rules = edges.get(key); - if(rules.size() > 1){ + if (rules.size() > 1) { multipleLabelKeys.add(key); } }); @@ -199,18 +196,19 @@ public class EdgeIngestor { return multipleLabelKeys; } + /** * Gets list of all edge rules defined in the given version's schema * * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules associated with those types - * where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" - * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * where the key takes the form of + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. * @throws EdgeRuleNotFoundException if none found */ public Multimap<String, EdgeRule> getAllRules(SchemaVersion v) throws EdgeRuleNotFoundException { @@ -229,19 +227,19 @@ public class EdgeIngestor { * @param q - EdgeRuleQuery with filter criteria set * * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. * @throws EdgeRuleNotFoundException if none found */ public Multimap<String, EdgeRule> getRules(EdgeRuleQuery q) throws EdgeRuleNotFoundException { Multimap<String, EdgeRule> found = null; - if(q.getVersion().isPresent()){ + if (q.getVersion().isPresent()) { found = extractRules(q.getFilter(), q.getVersion().get()); } else { found = extractRules(q.getFilter(), schemaVersions.getDefaultVersion()); @@ -253,7 +251,8 @@ public class EdgeIngestor { found.entries().stream().forEach((entry) -> { EdgeRule rule = new EdgeRule(entry.getValue()); if (!q.getFromType().equals(rule.getFrom())) { - /* To maintain backwards compatibility with old EdgeRules API, + /* + * To maintain backwards compatibility with old EdgeRules API, * where the direction of the returned EdgeRule would be * flipped (if necessary) to match the directionality of * the input params. @@ -270,8 +269,6 @@ public class EdgeIngestor { } } - - /** * Gets the rule satisfying the given filter criteria. If there are more than one * that match, return the default rule. If there is no clear default to return, or @@ -281,16 +278,16 @@ public class EdgeIngestor { * @return EdgeRule satisfying given criteria * @throws EdgeRuleNotFoundException if none found that match * @throws AmbiguousRuleChoiceException if multiple match but no way to choice one from them - * Specifically, if multiple node type pairs come back (ie bar|foo and asdf|foo, - * no way to know which is appropriate over the others), - * or if there is a mix of Tree and Cousin edges because again there is no way to - * know which is "defaulter" than the other. - * The default property only clarifies among multiple cousin edges of the same node pair, - * ex: which l-interface|logical-link rule to default to. + * Specifically, if multiple node type pairs come back (ie bar|foo and asdf|foo, + * no way to know which is appropriate over the others), + * or if there is a mix of Tree and Cousin edges because again there is no way to + * know which is "defaulter" than the other. + * The default property only clarifies among multiple cousin edges of the same node pair, + * ex: which l-interface|logical-link rule to default to. */ public EdgeRule getRule(EdgeRuleQuery q) throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { Multimap<String, EdgeRule> found = null; - if(q.getVersion().isPresent()){ + if (q.getVersion().isPresent()) { found = extractRules(q.getFilter(), q.getVersion().get()); } else { found = extractRules(q.getFilter(), schemaVersions.getDefaultVersion()); @@ -301,7 +298,7 @@ public class EdgeIngestor { } EdgeRule rule = null; - if (found.keys().size() == 1) { //only one found, cool we're done + if (found.keys().size() == 1) { // only one found, cool we're done for (Entry<String, EdgeRule> e : found.entries()) { rule = e.getValue(); } @@ -309,12 +306,13 @@ public class EdgeIngestor { rule = getDefaultRule(found); } - if (rule == null) { //should never get here though + if (rule == null) { // should never get here though throw new EdgeRuleNotFoundException("No rule found for " + q.toString() + "."); } else { rule = new EdgeRule(rule); if (!q.getFromType().equals(rule.getFrom())) { - /* To maintain backwards compatibility with old EdgeRules API, + /* + * To maintain backwards compatibility with old EdgeRules API, * where the direction of the returned EdgeRule would be * flipped (if necessary) to match the directionality of * the input params. @@ -329,12 +327,13 @@ public class EdgeIngestor { } private EdgeRule getDefaultRule(Multimap<String, EdgeRule> found) throws AmbiguousRuleChoiceException { - if (found.keySet().size() > 1) { //ie multiple node pairs (a|c and b|c not just all a|c) case + if (found.keySet().size() > 1) { // ie multiple node pairs (a|c and b|c not just all a|c) case StringBuilder sb = new StringBuilder(); for (String k : found.keySet()) { sb.append(k).append(" "); } - throw new AmbiguousRuleChoiceException("No way to select single rule from these pairs: " + sb.toString() + "."); + throw new AmbiguousRuleChoiceException( + "No way to select single rule from these pairs: " + sb.toString() + "."); } int defaultCount = 0; @@ -354,6 +353,7 @@ public class EdgeIngestor { return defRule; } + /** * Checks if there exists any rule that satisfies the given filter criteria. * @@ -361,7 +361,7 @@ public class EdgeIngestor { * @return boolean */ public boolean hasRule(EdgeRuleQuery q) { - if(q.getVersion().isPresent()){ + if (q.getVersion().isPresent()) { return !extractRules(q.getFilter(), q.getVersion().get()).isEmpty(); } else { return !extractRules(q.getFilter(), schemaVersions.getDefaultVersion()).isEmpty(); @@ -373,28 +373,25 @@ public class EdgeIngestor { * * @param nodeType * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getCousinRules(String nodeType) { - return getCousinRules(nodeType, schemaVersions.getDefaultVersion()); //default to latest + return getCousinRules(nodeType, schemaVersions.getDefaultVersion()); // default to latest } - public String[] retrieveCousinLabels(String nodeType){ + public String[] retrieveCousinLabels(String nodeType) { Multimap<String, EdgeRule> cousinRules = getCousinRules(nodeType); String[] cousinLabels = new String[cousinRules.size()]; - return cousinRules.entries() - .stream() - .map(entry -> entry.getValue().getLabel()) - .collect(Collectors.toList()) - .toArray(cousinLabels); + return cousinRules.entries().stream().map(entry -> entry.getValue().getLabel()).collect(Collectors.toList()) + .toArray(cousinLabels); } public String[] retrieveCachedCousinLabels(String nodeType) throws ExecutionException { @@ -407,13 +404,13 @@ public class EdgeIngestor { * @param nodeType * @param v - the version of the edge rules to query * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getCousinRules(String nodeType, SchemaVersion v) { return extractRules(new EdgeRuleQuery.Builder(nodeType).edgeType(EdgeType.COUSIN).build().getFilter(), v); @@ -421,6 +418,7 @@ public class EdgeIngestor { /** * Returns if the given node type has any cousin relationships in the current version. + * * @param nodeType * @return boolean */ @@ -430,6 +428,7 @@ public class EdgeIngestor { /** * Returns if the given node type has any cousin relationships in the given version. + * * @param nodeType * @return boolean */ @@ -442,13 +441,13 @@ public class EdgeIngestor { * * @param nodeType - node type that is the container in the returned relationships * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getChildRules(String nodeType) { return getChildRules(nodeType, schemaVersions.getDefaultVersion()); @@ -459,24 +458,28 @@ public class EdgeIngestor { * * @param nodeType - node type that is the container in the returned relationships * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getChildRules(String nodeType, SchemaVersion v) { - Filter from = assembleFilterSegments(where(EdgeField.FROM.toString()).is(nodeType), getSameDirectionContainmentCriteria()); - Filter to = assembleFilterSegments(where(EdgeField.TO.toString()).is(nodeType), getOppositeDirectionContainmentCriteria()); + Filter from = assembleFilterSegments(where(EdgeField.FROM.toString()).is(nodeType), + getSameDirectionContainmentCriteria()); + Filter to = assembleFilterSegments(where(EdgeField.TO.toString()).is(nodeType), + getOppositeDirectionContainmentCriteria()); Filter total = from.or(to); return extractRules(total, v); } /** - * Returns if the given node type has any child relationships (ie it contains another node type) in the current version. + * Returns if the given node type has any child relationships (ie it contains another node type) in the current + * version. + * * @param nodeType * @return boolean */ @@ -485,7 +488,9 @@ public class EdgeIngestor { } /** - * Returns if the given node type has any child relationships (ie it contains another node type) in the given version. + * Returns if the given node type has any child relationships (ie it contains another node type) in the given + * version. + * * @param nodeType * @return boolean */ @@ -498,13 +503,13 @@ public class EdgeIngestor { * * @param nodeType - node type that is the containee in the returned relationships * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getParentRules(String nodeType) { return getParentRules(nodeType, schemaVersions.getDefaultVersion()); @@ -515,24 +520,28 @@ public class EdgeIngestor { * * @param nodeType - node type that is the containee in the returned relationships * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. */ public Multimap<String, EdgeRule> getParentRules(String nodeType, SchemaVersion v) { - Filter from = assembleFilterSegments(where(EdgeField.FROM.toString()).is(nodeType), getOppositeDirectionContainmentCriteria()); - Filter to = assembleFilterSegments(where(EdgeField.TO.toString()).is(nodeType), getSameDirectionContainmentCriteria()); + Filter from = assembleFilterSegments(where(EdgeField.FROM.toString()).is(nodeType), + getOppositeDirectionContainmentCriteria()); + Filter to = assembleFilterSegments(where(EdgeField.TO.toString()).is(nodeType), + getSameDirectionContainmentCriteria()); Filter total = from.or(to); return extractRules(total, v); } /** - * Returns if the given node type has any parent relationships (ie it is contained by another node type) in the current version. + * Returns if the given node type has any parent relationships (ie it is contained by another node type) in the + * current version. + * * @param nodeType * @return boolean */ @@ -541,7 +550,9 @@ public class EdgeIngestor { } /** - * Returns if the given node type has any parent relationships (ie it is contained by another node type) in the given version. + * Returns if the given node type has any parent relationships (ie it is contained by another node type) in the + * given version. + * * @param nodeType * @return boolean */ @@ -549,22 +560,22 @@ public class EdgeIngestor { return !getParentRules(nodeType, v).isEmpty(); } - /** - * Applies the given filter to the DocumentContext(s) for the given version to extract - * edge rules, and converts this extracted information into the Multimap form - * - * @param filter - JsonPath filter to read the DocumentContexts with. May be null - * to denote no filter, ie get all. - * @param v - The schema version to extract from - * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if - * no rules are found. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" - * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. - */ + /** + * Applies the given filter to the DocumentContext(s) for the given version to extract + * edge rules, and converts this extracted information into the Multimap form + * + * @param filter - JsonPath filter to read the DocumentContexts with. May be null + * to denote no filter, ie get all. + * @param v - The schema version to extract from + * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of + * {alphabetically first nodetype}|{alphabetically second nodetype}. Map will be empty if + * no rules are found. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. + */ private Multimap<String, EdgeRule> extractRules(Filter filter, SchemaVersion v) { SchemaFilter schemaFilter = new SchemaFilter(filter, v); try { @@ -575,7 +586,7 @@ public class EdgeIngestor { } } - public Multimap<String, EdgeRule> extractRules(SchemaFilter schemaFilter){ + public Multimap<String, EdgeRule> extractRules(SchemaFilter schemaFilter) { List<Map<String, String>> foundRules = new ArrayList<>(); List<DocumentContext> docs = versionJsonFilesMap.get(schemaFilter.getSchemaVersion()); if (docs != null) { @@ -591,115 +602,118 @@ public class EdgeIngestor { return convertToEdgeRules(foundRules); } - //-----filter building helpers-----// - /** - * ANDs together the given start criteria with each criteria in the pieces list, and - * then ORs together these segments into one filter. - * - * JsonPath doesn't have an OR method on Criteria, only on Filters, so assembling - * a complete filter requires this sort of roundabout construction. - * - * @param start - Criteria of the form where(from/to).is(nodeType) - * (ie the start of any A&AI edge rule query) - * @param pieces - Other Criteria to be applied - * @return Filter constructed from the given Criteria - */ - private Filter assembleFilterSegments(Criteria start, List<Criteria> pieces) { - List<Filter> segments = new ArrayList<>(); - for (Criteria c : pieces) { - segments.add(filter(start).and(c)); - } - Filter assembled = segments.remove(0); - for (Filter f : segments) { - assembled = assembled.or(f); - } - return assembled; - } - - /** - * Builds the sub-Criteria for a containment edge rule query where the direction - * and containment fields must match. - * - * Used for getChildRules() where the container node type is in the "from" position and - * for getParentRules() where the containee type is in the "to" position. - * - * @return List<Criteria> covering property permutations defined with either notation or explicit direction - */ - private List<Criteria> getSameDirectionContainmentCriteria() { - List<Criteria> crits = new ArrayList<>(); - - crits.add(where(EdgeField.CONTAINS.toString()).is(DirectionNotation.DIRECTION.toString())); - - crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.OUT.toString()) - .and(EdgeField.CONTAINS.toString()).is(Direction.OUT.toString())); - - crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.IN.toString()) - .and(EdgeField.CONTAINS.toString()).is(Direction.IN.toString())); - - return crits; - } - - /** - * Builds the sub-Criteria for a containment edge rule query where the direction - * and containment fields must not match. - * - * Used for getChildRules() where the container node type is in the "to" position and - * for getParentRules() where the containee type is in the "from" position. - * - * @return List<Criteria> covering property permutations defined with either notation or explicit direction - */ - private List<Criteria> getOppositeDirectionContainmentCriteria() { - List<Criteria> crits = new ArrayList<>(); - - crits.add(where(EdgeField.CONTAINS.toString()).is(DirectionNotation.OPPOSITE.toString())); - - crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.OUT.toString()) - .and(EdgeField.CONTAINS.toString()).is(Direction.IN.toString())); - - crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.IN.toString()) - .and(EdgeField.CONTAINS.toString()).is(Direction.OUT.toString())); - - return crits; - } - - //-----rule packaging helpers-----// - /** - * Converts the raw output from reading the json file to the Multimap<String key, EdgeRule> format - * - * @param allFound - raw edge rule output read from json file(s) - * (could be empty if none found) - * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of - * {alphabetically first nodetype}|{alphabetically second nodetype}. Will be empty if input - * was empty. - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" - * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. - */ - private Multimap<String, EdgeRule> convertToEdgeRules(List<Map<String, String>> allFound) { - Multimap<String, EdgeRule> rules = ArrayListMultimap.create(); - - TypeAlphabetizer alpher = new TypeAlphabetizer(); - - for (Map<String, String> raw : allFound) { - EdgeRule converted = new EdgeRule(raw); - if (converted.getFrom().equals(converted.getTo())) { - /* the way the code worked in the past was with outs and - * when we switched it to in the same-node-type to - * same-node-type parent child edges were failing because all - * of the calling code would pass the parent as the left argument, - * so it was either in that method swap the parent/child, - * flip the edge rule or make all callers swap. the last seemed - * like a bad idea. and felt like the edge flip was the better - * of the remaining 2 */ - converted.flipDirection(); - } - String alphabetizedKey = alpher.buildAlphabetizedKey(raw.get(EdgeField.FROM.toString()), raw.get(EdgeField.TO.toString())); - rules.put(alphabetizedKey, converted); - } - - return rules; - } + // -----filter building helpers-----// + /** + * ANDs together the given start criteria with each criteria in the pieces list, and + * then ORs together these segments into one filter. + * + * JsonPath doesn't have an OR method on Criteria, only on Filters, so assembling + * a complete filter requires this sort of roundabout construction. + * + * @param start - Criteria of the form where(from/to).is(nodeType) + * (ie the start of any A&AI edge rule query) + * @param pieces - Other Criteria to be applied + * @return Filter constructed from the given Criteria + */ + private Filter assembleFilterSegments(Criteria start, List<Criteria> pieces) { + List<Filter> segments = new ArrayList<>(); + for (Criteria c : pieces) { + segments.add(filter(start).and(c)); + } + Filter assembled = segments.remove(0); + for (Filter f : segments) { + assembled = assembled.or(f); + } + return assembled; + } + + /** + * Builds the sub-Criteria for a containment edge rule query where the direction + * and containment fields must match. + * + * Used for getChildRules() where the container node type is in the "from" position and + * for getParentRules() where the containee type is in the "to" position. + * + * @return List<Criteria> covering property permutations defined with either notation or explicit direction + */ + private List<Criteria> getSameDirectionContainmentCriteria() { + List<Criteria> crits = new ArrayList<>(); + + crits.add(where(EdgeField.CONTAINS.toString()).is(DirectionNotation.DIRECTION.toString())); + + crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.OUT.toString()).and(EdgeField.CONTAINS.toString()) + .is(Direction.OUT.toString())); + + crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.IN.toString()).and(EdgeField.CONTAINS.toString()) + .is(Direction.IN.toString())); + + return crits; + } + + /** + * Builds the sub-Criteria for a containment edge rule query where the direction + * and containment fields must not match. + * + * Used for getChildRules() where the container node type is in the "to" position and + * for getParentRules() where the containee type is in the "from" position. + * + * @return List<Criteria> covering property permutations defined with either notation or explicit direction + */ + private List<Criteria> getOppositeDirectionContainmentCriteria() { + List<Criteria> crits = new ArrayList<>(); + + crits.add(where(EdgeField.CONTAINS.toString()).is(DirectionNotation.OPPOSITE.toString())); + + crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.OUT.toString()).and(EdgeField.CONTAINS.toString()) + .is(Direction.IN.toString())); + + crits.add(where(EdgeField.DIRECTION.toString()).is(Direction.IN.toString()).and(EdgeField.CONTAINS.toString()) + .is(Direction.OUT.toString())); + + return crits; + } + + // -----rule packaging helpers-----// + /** + * Converts the raw output from reading the json file to the Multimap<String key, EdgeRule> format + * + * @param allFound - raw edge rule output read from json file(s) + * (could be empty if none found) + * @return Multimap<String, EdgeRule> of node names keys to the EdgeRules where the key takes the form of + * {alphabetically first nodetype}|{alphabetically second nodetype}. Will be empty if input + * was empty. + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. + */ + private Multimap<String, EdgeRule> convertToEdgeRules(List<Map<String, String>> allFound) { + Multimap<String, EdgeRule> rules = ArrayListMultimap.create(); + + TypeAlphabetizer alpher = new TypeAlphabetizer(); + + for (Map<String, String> raw : allFound) { + EdgeRule converted = new EdgeRule(raw); + if (converted.getFrom().equals(converted.getTo())) { + /* + * the way the code worked in the past was with outs and + * when we switched it to in the same-node-type to + * same-node-type parent child edges were failing because all + * of the calling code would pass the parent as the left argument, + * so it was either in that method swap the parent/child, + * flip the edge rule or make all callers swap. the last seemed + * like a bad idea. and felt like the edge flip was the better + * of the remaining 2 + */ + converted.flipDirection(); + } + String alphabetizedKey = + alpher.buildAlphabetizedKey(raw.get(EdgeField.FROM.toString()), raw.get(EdgeField.TO.toString())); + rules.put(alphabetizedKey, converted); + } + + return rules; + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRule.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRule.java index f8f8caca..d3c9a599 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRule.java @@ -17,211 +17,215 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.aai.edges; -import org.apache.tinkerpop.gremlin.structure.Direction; -import org.onap.aai.edges.enums.*; +package org.onap.aai.edges; import java.util.EnumMap; import java.util.HashMap; import java.util.Map; +import org.apache.tinkerpop.gremlin.structure.Direction; +import org.onap.aai.edges.enums.*; + /** * Container for A&AI edge rule information */ public class EdgeRule { - private String from; - private String to; - private String label; - private Direction direction; - private MultiplicityRule multiplicityRule; - private Map<EdgeProperty, AAIDirection> edgeFields; - private boolean isDefaultEdge; - private String description; - private boolean isPrivateEdge = false; - - /** - * Instantiates a new edge rule. - * - * @param fieldVals - Map<String, String> where first string is - * an EdgeField value and second string is the - * value of that field - */ - public EdgeRule(Map<String, String> fieldVals) { - edgeFields = new EnumMap<>(EdgeProperty.class); - - from = fieldVals.get(EdgeField.FROM.toString()); - to = fieldVals.get(EdgeField.TO.toString()); - label = fieldVals.get(EdgeField.LABEL.toString()); - direction = Direction.valueOf(fieldVals.get(EdgeField.DIRECTION.toString())); - multiplicityRule = MultiplicityRule.getValue(fieldVals.get(EdgeField.MULTIPLICITY.toString())); - isPrivateEdge = Boolean.valueOf(fieldVals.getOrDefault(EdgeField.PRIVATE.toString(), "false")); + private String from; + private String to; + private String label; + private Direction direction; + private MultiplicityRule multiplicityRule; + private Map<EdgeProperty, AAIDirection> edgeFields; + private boolean isDefaultEdge; + private String description; + private boolean isPrivateEdge = false; + + /** + * Instantiates a new edge rule. + * + * @param fieldVals - Map<String, String> where first string is + * an EdgeField value and second string is the + * value of that field + */ + public EdgeRule(Map<String, String> fieldVals) { + edgeFields = new EnumMap<>(EdgeProperty.class); + + from = fieldVals.get(EdgeField.FROM.toString()); + to = fieldVals.get(EdgeField.TO.toString()); + label = fieldVals.get(EdgeField.LABEL.toString()); + direction = Direction.valueOf(fieldVals.get(EdgeField.DIRECTION.toString())); + multiplicityRule = MultiplicityRule.getValue(fieldVals.get(EdgeField.MULTIPLICITY.toString())); + isPrivateEdge = Boolean.valueOf(fieldVals.getOrDefault(EdgeField.PRIVATE.toString(), "false")); for (EdgeProperty prop : EdgeProperty.values()) { - String rawVal = fieldVals.get(prop.toString()); - edgeFields.put(prop, convertNotation(direction, rawVal)); - } - - isDefaultEdge = Boolean.valueOf(fieldVals.get(EdgeField.DEFAULT.toString())); + String rawVal = fieldVals.get(prop.toString()); + edgeFields.put(prop, convertNotation(direction, rawVal)); + } + + isDefaultEdge = Boolean.valueOf(fieldVals.get(EdgeField.DEFAULT.toString())); description = fieldVals.get(EdgeField.DESCRIPTION.toString()); - if (description == null) { //bc description is optional and not in v12 and earlier - description = ""; - } - } + if (description == null) { // bc description is optional and not in v12 and earlier + description = ""; + } + } // Copy Constructor - public EdgeRule(EdgeRule edgeRule){ + public EdgeRule(EdgeRule edgeRule) { this.from = edgeRule.from; - this.to = edgeRule.to; + this.to = edgeRule.to; this.label = edgeRule.label; this.direction = Direction.valueOf(edgeRule.direction.toString()); this.multiplicityRule = MultiplicityRule.valueOf(edgeRule.multiplicityRule.toString()); this.edgeFields = new HashMap<>(edgeRule.edgeFields); - this.isDefaultEdge = edgeRule.isDefaultEdge; + this.isDefaultEdge = edgeRule.isDefaultEdge; this.description = edgeRule.description; this.isPrivateEdge = edgeRule.isPrivateEdge; } - /** - * Converts whatever string was in the json for an edge property value into - * the appropriate AAIDirection - * - * @param Direction dir - the edge direction - * @param String rawVal - property value from the json, may be - * IN, OUT, BOTH, NONE, ${direction}, or !${direction} - * @return AAIDirection - IN/OUT/BOTH/NONE if that's the rawVal, or - * translates the direction notation into the correct IN/OUT - */ - private AAIDirection convertNotation(Direction dir, String rawVal) { - if (AAIDirection.NONE.toString().equalsIgnoreCase(rawVal)) { - return AAIDirection.NONE; - } else if (AAIDirection.BOTH.toString().equalsIgnoreCase(rawVal)) { - return AAIDirection.BOTH; - } else if (AAIDirection.OUT.toString().equalsIgnoreCase(rawVal)) { - return AAIDirection.OUT; - } else if (AAIDirection.IN.toString().equalsIgnoreCase(rawVal)) { - return AAIDirection.IN; - } - - DirectionNotation rawDN = DirectionNotation.getValue(rawVal); - if (DirectionNotation.DIRECTION.equals(rawDN)) { - return AAIDirection.getValue(dir); - } else { - return AAIDirection.getValue(dir.opposite()); - } - } - - /** - * Gets the name of the node type in the "from" field - * @return String nodetype - */ - public String getFrom() { - return from; - } - - /** - * Gets the name of the node type in the "to" field - * @return String nodetype - */ - public String getTo() { - return to; - } - - /** - * Gets the edge label - * - * @return String label - */ - public String getLabel() { - return label; - } - - /** - * Gets the multiplicity rule. - * - * @return MultiplicityRule - */ - public MultiplicityRule getMultiplicityRule() { - return multiplicityRule; - } - - /** - * Gets the edge direction - * - * @return Direction - */ - public Direction getDirection() { - return direction; - } - - /** - * Gets the value of contains-other-v - * - * @return the value of contains-other-v - */ - public String getContains() { - return edgeFields.get(EdgeProperty.CONTAINS).toString(); - } - - /** - * Gets the value of delete-other-v - * - * @return the value of delete-other-v - */ - public String getDeleteOtherV() { - return edgeFields.get(EdgeProperty.DELETE_OTHER_V).toString(); - } - - /** - * Gets the value of the prevent-delete property - * - * @return String prevent-delete property value - */ - public String getPreventDelete() { - return edgeFields.get(EdgeProperty.PREVENT_DELETE).toString(); - } - - /** - * Returns if this rule is a default or not - * - * @return boolean - */ - public boolean isDefault() { - return isDefaultEdge; - } - - /** - * Gets the description on the edge rule (if there is one) - * @return String description - */ - public String getDescription() { - return this.description; - } - - /** - * Flips the direction value - * IN -> OUT - * OUT -> IN - * BOTH -> BOTH - */ - public void flipDirection() { - if (Direction.OUT.equals(direction)) { - direction = Direction.IN; - } else if (Direction.IN.equals(direction)) { - direction = Direction.OUT; - } - //else BOTH just stays the same - } - - public boolean isPrivateEdge() { - return isPrivateEdge; - } - - public void setPrivateEdge(boolean privateEdge) { - isPrivateEdge = privateEdge; - } - - public void setPrivateEdge(String isPrivateEdge){ - this.isPrivateEdge = "true".equals(isPrivateEdge); - } + /** + * Converts whatever string was in the json for an edge property value into + * the appropriate AAIDirection + * + * @param Direction dir - the edge direction + * @param String rawVal - property value from the json, may be + * IN, OUT, BOTH, NONE, ${direction}, or !${direction} + * @return AAIDirection - IN/OUT/BOTH/NONE if that's the rawVal, or + * translates the direction notation into the correct IN/OUT + */ + private AAIDirection convertNotation(Direction dir, String rawVal) { + if (AAIDirection.NONE.toString().equalsIgnoreCase(rawVal)) { + return AAIDirection.NONE; + } else if (AAIDirection.BOTH.toString().equalsIgnoreCase(rawVal)) { + return AAIDirection.BOTH; + } else if (AAIDirection.OUT.toString().equalsIgnoreCase(rawVal)) { + return AAIDirection.OUT; + } else if (AAIDirection.IN.toString().equalsIgnoreCase(rawVal)) { + return AAIDirection.IN; + } + + DirectionNotation rawDN = DirectionNotation.getValue(rawVal); + if (DirectionNotation.DIRECTION.equals(rawDN)) { + return AAIDirection.getValue(dir); + } else { + return AAIDirection.getValue(dir.opposite()); + } + } + + /** + * Gets the name of the node type in the "from" field + * + * @return String nodetype + */ + public String getFrom() { + return from; + } + + /** + * Gets the name of the node type in the "to" field + * + * @return String nodetype + */ + public String getTo() { + return to; + } + + /** + * Gets the edge label + * + * @return String label + */ + public String getLabel() { + return label; + } + + /** + * Gets the multiplicity rule. + * + * @return MultiplicityRule + */ + public MultiplicityRule getMultiplicityRule() { + return multiplicityRule; + } + + /** + * Gets the edge direction + * + * @return Direction + */ + public Direction getDirection() { + return direction; + } + + /** + * Gets the value of contains-other-v + * + * @return the value of contains-other-v + */ + public String getContains() { + return edgeFields.get(EdgeProperty.CONTAINS).toString(); + } + + /** + * Gets the value of delete-other-v + * + * @return the value of delete-other-v + */ + public String getDeleteOtherV() { + return edgeFields.get(EdgeProperty.DELETE_OTHER_V).toString(); + } + + /** + * Gets the value of the prevent-delete property + * + * @return String prevent-delete property value + */ + public String getPreventDelete() { + return edgeFields.get(EdgeProperty.PREVENT_DELETE).toString(); + } + + /** + * Returns if this rule is a default or not + * + * @return boolean + */ + public boolean isDefault() { + return isDefaultEdge; + } + + /** + * Gets the description on the edge rule (if there is one) + * + * @return String description + */ + public String getDescription() { + return this.description; + } + + /** + * Flips the direction value + * IN -> OUT + * OUT -> IN + * BOTH -> BOTH + */ + public void flipDirection() { + if (Direction.OUT.equals(direction)) { + direction = Direction.IN; + } else if (Direction.IN.equals(direction)) { + direction = Direction.OUT; + } + // else BOTH just stays the same + } + + public boolean isPrivateEdge() { + return isPrivateEdge; + } + + public void setPrivateEdge(boolean privateEdge) { + isPrivateEdge = privateEdge; + } + + public void setPrivateEdge(String isPrivateEdge) { + this.isPrivateEdge = "true".equals(isPrivateEdge); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRuleQuery.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRuleQuery.java index c25fc789..fc58dbb6 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRuleQuery.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRuleQuery.java @@ -22,24 +22,23 @@ package org.onap.aai.edges; -import org.apache.commons.lang.StringUtils; -import org.onap.aai.edges.enums.AAIDirection; -import org.onap.aai.edges.enums.EdgeField; -import org.onap.aai.edges.enums.EdgeProperty; -import org.onap.aai.edges.enums.EdgeType; -import org.onap.aai.setup.SchemaVersion; +import static com.jayway.jsonpath.Criteria.where; +import static com.jayway.jsonpath.Filter.filter; import com.jayway.jsonpath.Filter; import com.jayway.jsonpath.Predicate; -import static com.jayway.jsonpath.Filter.filter; - import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; -import static com.jayway.jsonpath.Criteria.where; +import org.apache.commons.lang.StringUtils; +import org.onap.aai.edges.enums.AAIDirection; +import org.onap.aai.edges.enums.EdgeField; +import org.onap.aai.edges.enums.EdgeProperty; +import org.onap.aai.edges.enums.EdgeType; +import org.onap.aai.setup.SchemaVersion; /** * For querying the edge rules schema (not the database) @@ -60,10 +59,10 @@ public class EdgeRuleQuery { private static final String FROM_ONLY = "FromOnly"; - //required + // required private String nodeA; - //optional - null will translate to any value of the param + // optional - null will translate to any value of the param private String nodeB = null; private String label = null; private EdgeType type = null; @@ -83,6 +82,7 @@ public class EdgeRuleQuery { private String getFirstNodeType() { return nodeA; } + public Builder fromOnly() { this.nodeB = FROM_ONLY; return this; @@ -92,15 +92,15 @@ public class EdgeRuleQuery { return nodeB; } - public Builder to(String nodeB){ + public Builder to(String nodeB) { this.nodeB = nodeB; return this; } public Builder toOnly() { - //Allows this to be used with single parameter constructor Builder(String nodeA) - if(StringUtils.isEmpty(this.nodeB) && StringUtils.isNotEmpty(this.nodeA) ) { - this.nodeB=this.nodeA; + // Allows this to be used with single parameter constructor Builder(String nodeA) + if (StringUtils.isEmpty(this.nodeB) && StringUtils.isNotEmpty(this.nodeA)) { + this.nodeB = this.nodeA; } this.nodeA = TO_ONLY; return this; @@ -124,7 +124,6 @@ public class EdgeRuleQuery { return type; } - public Builder direction(AAIDirection direction) { this.direction = direction; return this; @@ -139,12 +138,12 @@ public class EdgeRuleQuery { return this; } - public Builder setPrivate(boolean isPrivate){ + public Builder setPrivate(boolean isPrivate) { this.isPrivate = isPrivate; return this; } - public boolean isPrivate(){ + public boolean isPrivate() { return isPrivate; } @@ -166,18 +165,18 @@ public class EdgeRuleQuery { this.direction = builder.getDirection(); this.isPrivate = builder.isPrivate(); - //will cover from A to B case + // will cover from A to B case List<Predicate> criteriaFromTo = new ArrayList<>(); - //Special logic to allow for A to B case only - if(("FromOnly").equals(builder.getSecondNodeType())) { + // Special logic to allow for A to B case only + if (("FromOnly").equals(builder.getSecondNodeType())) { criteriaFromTo.add(buildToFromPart(builder.getFirstNodeType(), null)); } else { criteriaFromTo.add(buildToFromPart(builder.getFirstNodeType(), builder.getSecondNodeType())); } - //will cover from B to A case - must be separate bc jsonpath won't let me OR predicates >:C + // will cover from B to A case - must be separate bc jsonpath won't let me OR predicates >:C List<Predicate> criteriaToFrom = new ArrayList<>(); - //Special logic to allow for B to A case only - if(("ToOnly").equals(builder.getFirstNodeType())) { + // Special logic to allow for B to A case only + if (("ToOnly").equals(builder.getFirstNodeType())) { criteriaToFrom.add(buildToFromPart(null, builder.getSecondNodeType())); } else { criteriaToFrom.add(buildToFromPart(builder.getSecondNodeType(), builder.getFirstNodeType())); @@ -195,7 +194,7 @@ public class EdgeRuleQuery { } Predicate privatePredicate = where("private").is(String.valueOf(isPrivate)); - if(isPrivate){ + if (isPrivate) { criteriaFromTo.add(privatePredicate); criteriaToFrom.add(privatePredicate); } @@ -205,9 +204,9 @@ public class EdgeRuleQuery { criteriaFromTo.add(directionPred); criteriaToFrom.add(directionPred); } - if(("ToOnly").equals(builder.getFirstNodeType())) { + if (("ToOnly").equals(builder.getFirstNodeType())) { this.filter = filter(criteriaToFrom); - } else if(("FromOnly").equals(builder.getSecondNodeType())) { + } else if (("FromOnly").equals(builder.getSecondNodeType())) { this.filter = filter(criteriaFromTo); } else { this.filter = filter(criteriaFromTo).or(filter(criteriaToFrom)); @@ -215,7 +214,7 @@ public class EdgeRuleQuery { } private Predicate buildToFromPart(String from, String to) { - if (from == null && to == null) { //shouldn't ever happen though + if (from == null && to == null) { // shouldn't ever happen though throw new IllegalStateException("must have at least one node defined"); } @@ -239,7 +238,7 @@ public class EdgeRuleQuery { private Predicate addType(EdgeType type) { if (type == EdgeType.COUSIN) { return where(EdgeProperty.CONTAINS.toString()).is(AAIDirection.NONE.toString()); - } else { //equals TREE + } else { // equals TREE return where(EdgeProperty.CONTAINS.toString()).ne(AAIDirection.NONE.toString()); } } @@ -259,6 +258,7 @@ public class EdgeRuleQuery { /** * Provides the JsonPath filter for actually querying the edge rule schema files + * * @return Filter */ public Filter getFilter() { @@ -284,6 +284,7 @@ public class EdgeRuleQuery { /** * So the Ingestor knows which version of the rules to search + * * @return the Version */ public Optional<SchemaVersion> getVersion() { @@ -314,7 +315,7 @@ public class EdgeRuleQuery { sb.append(", isPrivate: "); sb.append(isPrivate); - if(v.isPresent()){ + if (v.isPresent()) { sb.append(", for version: ").append(v.get().toString()).append("."); } return sb.toString(); @@ -322,21 +323,19 @@ public class EdgeRuleQuery { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; EdgeRuleQuery ruleQuery = (EdgeRuleQuery) o; - return isPrivate == ruleQuery.isPrivate && - Objects.equals(v, ruleQuery.v) && - Objects.equals(nodeA, ruleQuery.nodeA) && - Objects.equals(nodeB, ruleQuery.nodeB) && - Objects.equals(label, ruleQuery.label) && - direction == ruleQuery.direction && - type == ruleQuery.type; + return isPrivate == ruleQuery.isPrivate && Objects.equals(v, ruleQuery.v) + && Objects.equals(nodeA, ruleQuery.nodeA) && Objects.equals(nodeB, ruleQuery.nodeB) + && Objects.equals(label, ruleQuery.label) && direction == ruleQuery.direction && type == ruleQuery.type; } @Override public int hashCode() { - if(v.isPresent()){ + if (v.isPresent()) { return Objects.hash(v.get(), nodeA, nodeB, label, direction, type, isPrivate); } else { return Objects.hash(nodeA, nodeB, label, direction, type, isPrivate); @@ -344,4 +343,3 @@ public class EdgeRuleQuery { } } - diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/JsonIngestor.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/JsonIngestor.java index 713103a0..b686b3a6 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/JsonIngestor.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/JsonIngestor.java @@ -24,7 +24,6 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; -import org.onap.aai.setup.SchemaVersion; import java.io.BufferedReader; import java.io.FileReader; @@ -35,17 +34,19 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.onap.aai.setup.SchemaVersion; + /** * JsonIngestor produces DocumentContexts from json files */ public class JsonIngestor { - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(JsonIngestor.class); - + private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(JsonIngestor.class); + /** * Reads in given json files to queryable DocumentContexts. * * @param filesToIngest - map of filenames to ingest - * per Version + * per Version * @return Map<SchemaVersion, List<DocumentContext>> - map of DocumentContexts per Version */ public Map<SchemaVersion, List<DocumentContext>> ingest(Map<SchemaVersion, List<String>> filesToIngest) { @@ -90,13 +91,13 @@ public class JsonIngestor { */ public String readInJsonFile(String rulesFilename) { StringBuilder sb = new StringBuilder(); - try(BufferedReader br = new BufferedReader(new FileReader(rulesFilename))) { + try (BufferedReader br = new BufferedReader(new FileReader(rulesFilename))) { String line; while ((line = br.readLine()) != null) { sb.append(line); } } catch (IOException e) { - LOGGER.warn("Exception in file"+e.getMessage()); + LOGGER.warn("Exception in file" + e.getMessage()); throw new ExceptionInInitializerError(e); } return sb.toString(); diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/SchemaFilter.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/SchemaFilter.java index 792e3c51..4d2c8455 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/SchemaFilter.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/SchemaFilter.java @@ -17,21 +17,23 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.edges; import com.jayway.jsonpath.Filter; -import org.onap.aai.setup.SchemaVersion; import java.util.Objects; +import org.onap.aai.setup.SchemaVersion; + public class SchemaFilter { private String filter; private SchemaVersion schemaVersion; - public SchemaFilter(Filter filter, SchemaVersion schemaVersion){ - if(filter != null){ + public SchemaFilter(Filter filter, SchemaVersion schemaVersion) { + if (filter != null) { this.filter = filter.toString(); } this.schemaVersion = schemaVersion; @@ -47,11 +49,12 @@ public class SchemaFilter { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; SchemaFilter that = (SchemaFilter) o; - return Objects.equals(filter, that.filter) && - Objects.equals(schemaVersion, that.schemaVersion); + return Objects.equals(filter, that.filter) && Objects.equals(schemaVersion, that.schemaVersion); } @Override @@ -61,9 +64,6 @@ public class SchemaFilter { @Override public String toString() { - return "SchemaFilter{" + - "filter='" + filter + '\'' + - ", schemaVersion=" + schemaVersion + - '}'; + return "SchemaFilter{" + "filter='" + filter + '\'' + ", schemaVersion=" + schemaVersion + '}'; } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/TypeAlphabetizer.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/TypeAlphabetizer.java index fd1f5113..4cae19ea 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/TypeAlphabetizer.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/TypeAlphabetizer.java @@ -24,42 +24,42 @@ package org.onap.aai.edges; * Helper class to produce alphabetized keys for EdgeIngestor and EdgeValidator */ public class TypeAlphabetizer { - /** - * Builds key for edge rules, where nodetypes are alphabetically sorted - * (ignoring dashes). - * - * @param nodeA - first nodetype - * @param nodeB - second nodetype - * @return {alphabetically first nodetype}|{alphabetically second nodetype} - * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" - * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" - * - * This is alphabetical order to normalize the keys, as sometimes there will be multiple - * rules for a pair of node types but the from/to value in the json is flipped for some of them. - */ - public String buildAlphabetizedKey(String nodeA, String nodeB) { - if (nodeA == null) { - nodeA = ""; - } - if (nodeB == null) { - nodeB = ""; - } - - //normalize - String normalizedNodeA = nodeA.replace("-", ""); - String normalizedNodeB = nodeB.replace("-", ""); - int cmp = normalizedNodeA.compareTo(normalizedNodeB); - - StringBuilder sb = new StringBuilder(); - if (cmp <= 0) { - sb.append(nodeA); - sb.append("|"); - sb.append(nodeB); - } else { - sb.append(nodeB); - sb.append("|"); - sb.append(nodeA); - } - return sb.toString(); - } + /** + * Builds key for edge rules, where nodetypes are alphabetically sorted + * (ignoring dashes). + * + * @param nodeA - first nodetype + * @param nodeB - second nodetype + * @return {alphabetically first nodetype}|{alphabetically second nodetype} + * ex: buildAlphabetizedKey("l-interface", "logical-link") -> "l-interface|logical-link" + * buildAlphabetizedKey("logical-link", "l-interface") -> "l-interface|logical-link" + * + * This is alphabetical order to normalize the keys, as sometimes there will be multiple + * rules for a pair of node types but the from/to value in the json is flipped for some of them. + */ + public String buildAlphabetizedKey(String nodeA, String nodeB) { + if (nodeA == null) { + nodeA = ""; + } + if (nodeB == null) { + nodeB = ""; + } + + // normalize + String normalizedNodeA = nodeA.replace("-", ""); + String normalizedNodeB = nodeB.replace("-", ""); + int cmp = normalizedNodeA.compareTo(normalizedNodeB); + + StringBuilder sb = new StringBuilder(); + if (cmp <= 0) { + sb.append(nodeA); + sb.append("|"); + sb.append(nodeB); + } else { + sb.append(nodeB); + sb.append("|"); + sb.append(nodeA); + } + return sb.toString(); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/AAIDirection.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/AAIDirection.java index aeb5d77d..04c97fc4 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/AAIDirection.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/AAIDirection.java @@ -17,44 +17,45 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.edges.enums; import org.apache.tinkerpop.gremlin.structure.Direction; public enum AAIDirection { - IN, OUT, BOTH, NONE; + IN, OUT, BOTH, NONE; + + public AAIDirection opposite() { + if (this.equals(OUT)) { + return IN; + } else if (this.equals(IN)) { + return OUT; + } else { + return BOTH; + } + } + + public static AAIDirection getValue(String aaidir) { + if (OUT.toString().equals(aaidir)) { + return OUT; + } else if (IN.toString().equals(aaidir)) { + return IN; + } else if (NONE.toString().equals(aaidir)) { + return NONE; + } else { // should be BOTH + return BOTH; + } + } - public AAIDirection opposite() { - if (this.equals(OUT)) { - return IN; - } else if (this.equals(IN)) { - return OUT; - } else { - return BOTH; - } - } - - public static AAIDirection getValue(String aaidir) { - if (OUT.toString().equals(aaidir)) { - return OUT; - } else if (IN.toString().equals(aaidir)) { - return IN; - } else if (NONE.toString().equals(aaidir)) { - return NONE; - } else { //should be BOTH - return BOTH; - } - } - - public static AAIDirection getValue(Direction dir) { - if (dir == Direction.OUT) { - return OUT; - } else if (dir == Direction.IN) { - return IN; - } else if (dir == Direction.BOTH) { - return BOTH; - } else { - return NONE; - } - } + public static AAIDirection getValue(Direction dir) { + if (dir == Direction.OUT) { + return OUT; + } else if (dir == Direction.IN) { + return IN; + } else if (dir == Direction.BOTH) { + return BOTH; + } else { + return NONE; + } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/DirectionNotation.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/DirectionNotation.java index 5a69603b..49a094b9 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/DirectionNotation.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/DirectionNotation.java @@ -20,28 +20,27 @@ package org.onap.aai.edges.enums; -public enum DirectionNotation { - DIRECTION("${direction}"), - OPPOSITE("!${direction}"); +public enum DirectionNotation { + DIRECTION("${direction}"), OPPOSITE("!${direction}"); - private final String val; - - DirectionNotation(String dir) { - this.val = dir; - } - - public static DirectionNotation getValue(String val) { - if (DIRECTION.toString().equals(val)) { - return DIRECTION; - } else if (OPPOSITE.toString().equals(val)) { - return OPPOSITE; - } else { - throw new IllegalArgumentException(); - } - } - - @Override - public String toString() { - return this.val; - } -}
\ No newline at end of file + private final String val; + + DirectionNotation(String dir) { + this.val = dir; + } + + public static DirectionNotation getValue(String val) { + if (DIRECTION.toString().equals(val)) { + return DIRECTION; + } else if (OPPOSITE.toString().equals(val)) { + return OPPOSITE; + } else { + throw new IllegalArgumentException(); + } + } + + @Override + public String toString() { + return this.val; + } +} diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeField.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeField.java index ff6bc82d..35ea1131 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeField.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeField.java @@ -25,25 +25,17 @@ package org.onap.aai.edges.enums; * */ public enum EdgeField { - FROM("from"), - TO("to"), - LABEL("label"), - DIRECTION("direction"), - MULTIPLICITY("multiplicity"), - CONTAINS("contains-other-v"), - DELETE_OTHER_V("delete-other-v"), - PREVENT_DELETE("prevent-delete"), - DEFAULT("default"), - PRIVATE("private"), - DESCRIPTION("description"); - private final String name; + FROM("from"), TO("to"), LABEL("label"), DIRECTION("direction"), MULTIPLICITY("multiplicity"), CONTAINS( + "contains-other-v"), DELETE_OTHER_V("delete-other-v"), PREVENT_DELETE( + "prevent-delete"), DEFAULT("default"), PRIVATE("private"), DESCRIPTION("description"); + private final String name; - private EdgeField(String name) { - this.name = name; - } + private EdgeField(String name) { + this.name = name; + } - @Override - public String toString() { - return name; - } + @Override + public String toString() { + return name; + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeProperty.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeProperty.java index 18e82f5e..c4e945b0 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeProperty.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeProperty.java @@ -25,17 +25,15 @@ package org.onap.aai.edges.enums; * (ie which have a directional value) */ public enum EdgeProperty { - CONTAINS("contains-other-v"), - DELETE_OTHER_V("delete-other-v"), - PREVENT_DELETE("prevent-delete"); - private final String name; + CONTAINS("contains-other-v"), DELETE_OTHER_V("delete-other-v"), PREVENT_DELETE("prevent-delete"); + private final String name; - private EdgeProperty(String name) { - this.name = name; - } + private EdgeProperty(String name) { + this.name = name; + } - @Override - public String toString() { - return name; - } + @Override + public String toString() { + return name; + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeType.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeType.java index 4662f862..0725c92b 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeType.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeType.java @@ -17,10 +17,9 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.edges.enums; public enum EdgeType { - COUSIN, - TREE, - ALL; + COUSIN, TREE, ALL; } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/MultiplicityRule.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/MultiplicityRule.java index a29b4a61..ed00f152 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/MultiplicityRule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/MultiplicityRule.java @@ -17,23 +17,21 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.edges.enums; public enum MultiplicityRule { - MANY2ONE, - ONE2MANY, - ONE2ONE, - MANY2MANY; - - public static MultiplicityRule getValue(String multiplicity) { - if ("Many2Many".equalsIgnoreCase(multiplicity)) { - return MANY2MANY; - } else if ("One2Many".equalsIgnoreCase(multiplicity)) { - return ONE2MANY; - } else if ("One2One".equalsIgnoreCase(multiplicity)) { - return ONE2ONE; - } else { //should be "Many2One" - return MANY2ONE; - } - } + MANY2ONE, ONE2MANY, ONE2ONE, MANY2MANY; + + public static MultiplicityRule getValue(String multiplicity) { + if ("Many2Many".equalsIgnoreCase(multiplicity)) { + return MANY2MANY; + } else if ("One2Many".equalsIgnoreCase(multiplicity)) { + return ONE2MANY; + } else if ("One2One".equalsIgnoreCase(multiplicity)) { + return ONE2ONE; + } else { // should be "Many2One" + return MANY2ONE; + } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/AmbiguousRuleChoiceException.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/AmbiguousRuleChoiceException.java index da79d9c7..0f226733 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/AmbiguousRuleChoiceException.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/AmbiguousRuleChoiceException.java @@ -21,11 +21,11 @@ package org.onap.aai.edges.exceptions; public class AmbiguousRuleChoiceException extends Exception { - public AmbiguousRuleChoiceException(String msg) { - super(msg); - } + public AmbiguousRuleChoiceException(String msg) { + super(msg); + } - public AmbiguousRuleChoiceException(Throwable throwable){ + public AmbiguousRuleChoiceException(Throwable throwable) { super(throwable); } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java index 96fd65cc..cbd7aac9 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java @@ -25,7 +25,7 @@ public class EdgeIngestorException extends Exception { super(msg); } - public EdgeIngestorException(Throwable throwable){ + public EdgeIngestorException(Throwable throwable) { super(throwable); } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeRuleNotFoundException.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeRuleNotFoundException.java index f9b9b643..f3ab00e7 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeRuleNotFoundException.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeRuleNotFoundException.java @@ -21,11 +21,11 @@ package org.onap.aai.edges.exceptions; public class EdgeRuleNotFoundException extends Exception { - public EdgeRuleNotFoundException(String msg) { - super(msg); - } + public EdgeRuleNotFoundException(String msg) { + super(msg); + } - public EdgeRuleNotFoundException(Throwable throwable){ + public EdgeRuleNotFoundException(Throwable throwable) { super(throwable); } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/CaseFormatStore.java b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/CaseFormatStore.java index 69a153da..03036cad 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/CaseFormatStore.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/CaseFormatStore.java @@ -17,16 +17,18 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.nodes; import com.google.common.base.CaseFormat; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; import java.util.HashMap; import java.util.Map; import java.util.Optional; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; + /** * CaseFormatStore stores the converted strings from * lower hyphen (example-object) to lower camel case (exampleObject) @@ -40,15 +42,16 @@ public class CaseFormatStore { private final Map<String, String> lowerCamelToLowerHyphen = new HashMap<>(); private final Map<String, String> upperCamelToLowerHyphen = new HashMap<>(); - CaseFormatStore(){} + CaseFormatStore() { + } /** * Parses the document and creates a lower camel case string * upper camel string, lower hyphen and lower camel case * - * @param doc Takes an xml document and adds it to the hash maps as appropriate + * @param doc Takes an xml document and adds it to the hash maps as appropriate */ - void parse(Document doc){ + void parse(Document doc) { // Get the xml-root-element and add those nodes // with the attribute name and it to the hashmaps @@ -86,19 +89,19 @@ public class CaseFormatStore { } } - public Optional<String> fromLowerHyphenToLowerCamel(String value){ + public Optional<String> fromLowerHyphenToLowerCamel(String value) { return Optional.ofNullable(lowerHyphenToLowerCamel.get(value)); } - public Optional<String> fromLowerHyphenToUpperCamel(String value){ + public Optional<String> fromLowerHyphenToUpperCamel(String value) { return Optional.ofNullable(lowerHyphenToUpperCamel.get(value)); } - public Optional<String> fromUpperCamelToLowerHyphen(String value){ + public Optional<String> fromUpperCamelToLowerHyphen(String value) { return Optional.ofNullable(upperCamelToLowerHyphen.get(value)); } - public Optional<String> fromLowerCamelToLowerHyphen(String value){ + public Optional<String> fromLowerCamelToLowerHyphen(String value) { return Optional.ofNullable(lowerCamelToLowerHyphen.get(value)); } 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 2428a6dd..6016fcca 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 @@ -25,6 +25,20 @@ package org.onap.aai.nodes; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.common.base.CaseFormat; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.annotation.PostConstruct; +import javax.xml.XMLConstants; +import javax.xml.bind.JAXBException; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + import org.eclipse.persistence.jaxb.JAXBContextProperties; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory; @@ -40,24 +54,12 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import javax.annotation.PostConstruct; -import javax.xml.XMLConstants; -import javax.xml.bind.JAXBException; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @Component /* - NodeIngestor - ingests A&AI OXM files per given config, serves DynamicJAXBContext per version + * NodeIngestor - ingests A&AI OXM files per given config, serves DynamicJAXBContext per version */ -@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound=true) -@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound=true) +@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true) +@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true) public class NodeIngestor { private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(NodeIngestor.class); @@ -70,14 +72,15 @@ public class NodeIngestor { private Set<Translator> translators; private CaseFormatStore caseFormatStore; - //TODO : See if you can get rid of InputStream resets + // TODO : See if you can get rid of InputStream resets /** * Instantiates the NodeIngestor bean. + * * @param translatorSet */ - @Autowired + @Autowired public NodeIngestor(Set<Translator> translatorSet) { this.translators = translatorSet; this.caseFormatStore = new CaseFormatStore(); @@ -106,7 +109,7 @@ public class NodeIngestor { this.localSchema = "true"; } - Boolean retrieveLocalSchema = Boolean.parseBoolean(this.localSchema); + Boolean retrieveLocalSchema = Boolean.parseBoolean(this.localSchema); /* * Set this to default schemaVersion */ @@ -119,8 +122,8 @@ public class NodeIngestor { List<InputStream> inputStreams = retrieveOXM(version, translator); LOGGER.debug("Retrieved OXMs from SchemaService"); /* - IOUtils.copy and copy the inputstream - */ + * IOUtils.copy and copy the inputstream + */ if (inputStreams.isEmpty()) { continue; } @@ -151,14 +154,15 @@ public class NodeIngestor { return DynamicJAXBContextFactory.createContextFromOXM(this.getClass().getClassLoader(), properties); } - private void setAllTypesAndProperties(SchemaVersion version, List<InputStream> inputStreams) throws ParserConfigurationException, IOException, SAXException { + private void setAllTypesAndProperties(SchemaVersion version, List<InputStream> inputStreams) + throws ParserConfigurationException, IOException, SAXException { Set<String> types = new HashSet<>(); final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); final DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); for (InputStream inputStream : inputStreams) { - //TODO Change this + // TODO Change this inputStream.reset(); final Document doc = docBuilder.parse(inputStream); final NodeList list = doc.getElementsByTagName("java-type"); @@ -170,7 +174,7 @@ public class NodeIngestor { typesPerVersion.put(version, types); } - private void getAllNodeTypes(NodeList list, Set<String> types){ + private void getAllNodeTypes(NodeList list, Set<String> types) { for (int i = 0; i < list.getLength(); i++) { String type = list.item(i).getAttributes().getNamedItem("name").getNodeValue(); @@ -178,7 +182,8 @@ public class NodeIngestor { } } - private Document createCombinedSchema(List<InputStream> inputStreams, SchemaVersion version, boolean localSchema) throws ParserConfigurationException, SAXException, IOException { + private Document createCombinedSchema(List<InputStream> inputStreams, SchemaVersion version, boolean localSchema) + throws ParserConfigurationException, SAXException, IOException { if (localSchema) { return createCombinedSchema(inputStreams, version); } @@ -191,7 +196,8 @@ public class NodeIngestor { return masterDocBuilder.parse(inputStream); } - private Document createCombinedSchema(List<InputStream> inputStreams, SchemaVersion version) throws ParserConfigurationException, SAXException, IOException { + private Document createCombinedSchema(List<InputStream> inputStreams, SchemaVersion version) + throws ParserConfigurationException, SAXException, IOException { final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); final DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); @@ -247,7 +253,6 @@ public class NodeIngestor { return schemaPerVersion.get(v); } - public SchemaVersion getVersionFromClassName(String classname) { Matcher m = classNamePattern.matcher(classname); if (m.find()) { @@ -259,26 +264,24 @@ public class NodeIngestor { } private List<InputStream> retrieveOXM(SchemaVersion version, Translator translator) throws IOException { - /* - Call Schema MS to get versions using RestTemplate or Local - */ + /* + * Call Schema MS to get versions using RestTemplate or Local + */ return translator.getVersionNodeStream(version); } private InputStream getShell(SchemaVersion v) { - String source = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + - "<xml-bindings xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\" package-name=\"inventory.aai.onap.org." + v.toString().toLowerCase() + "\" xml-mapping-metadata-complete=\"true\">\n" + - " <xml-schema element-form-default=\"QUALIFIED\">\n" + - " <xml-ns namespace-uri=\"http://org.onap.aai.inventory/" + v.toString().toLowerCase() + "\" />\n" + - " </xml-schema>\n" + - " <java-types>\n" + - " </java-types>\n" + - "</xml-bindings>"; + String source = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + + "<xml-bindings xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\" package-name=\"inventory.aai.onap.org." + + v.toString().toLowerCase() + "\" xml-mapping-metadata-complete=\"true\">\n" + + " <xml-schema element-form-default=\"QUALIFIED\">\n" + + " <xml-ns namespace-uri=\"http://org.onap.aai.inventory/" + v.toString().toLowerCase() + "\" />\n" + + " </xml-schema>\n" + " <java-types>\n" + " </java-types>\n" + "</xml-bindings>"; return new ByteArrayInputStream(source.getBytes(StandardCharsets.UTF_8)); } - public CaseFormatStore getCaseFormatStore(){ + public CaseFormatStore getCaseFormatStore() { return caseFormatStore; } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java index adaf538e..ef1e0d24 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java @@ -25,7 +25,7 @@ public class NodeIngestorException extends Exception { super(msg); } - public NodeIngestorException(Throwable throwable){ + public NodeIngestorException(Throwable throwable) { super(throwable); } } 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 83687a76..cc88edef 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 @@ -17,55 +17,59 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +import javax.annotation.PostConstruct; + import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; -import javax.annotation.PostConstruct; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; +@Component(value = "no-auth-service-rest-client") +public class SchemaServiceNoAuthClient extends NoAuthRestClient { -@Component(value="no-auth-service-rest-client") -public class SchemaServiceNoAuthClient extends NoAuthRestClient{ + private static EELFLogger logger = EELFManager.getInstance().getLogger(SchemaServiceNoAuthClient.class); - private static EELFLogger logger = EELFManager.getInstance().getLogger(SchemaServiceNoAuthClient.class); - - @Value("${schema.service.base.url}") - private String baseUrl; + @Value("${schema.service.base.url}") + private String baseUrl; @PostConstruct - public void init () throws Exception { + public void init() throws Exception { super.init(); } - @Override - public String getBaseUrl() { - return baseUrl; - } + @Override + public String getBaseUrl() { + return baseUrl; + } @Override - public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { - HttpHeaders httpHeaders = new HttpHeaders(); + public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { + HttpHeaders httpHeaders = new HttpHeaders(); String defaultAccept = headers.getOrDefault(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON.toString()); - String defaultContentType = headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); + String defaultContentType = + headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); - if(headers.isEmpty()){ + if (headers.isEmpty()) { httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType(defaultAccept))); httpHeaders.setContentType(MediaType.parseMediaType(defaultContentType)); } - httpHeaders.add("X-FromAppId", appName); - httpHeaders.add("X-TransactionId", UUID.randomUUID().toString()); + httpHeaders.add("X-FromAppId", appName); + httpHeaders.add("X-TransactionId", UUID.randomUUID().toString()); headers.forEach(httpHeaders::add); - return httpHeaders; - } + return httpHeaders; + } } 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 a3e4de54..6b107285 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 @@ -17,25 +17,28 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +import javax.annotation.PostConstruct; + import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; -import javax.annotation.PostConstruct; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; - -@Component(value="schema-service-one-way-rest-client") -public class SchemaServiceOneWayClient extends OneWaySSLRestClient{ +@Component(value = "schema-service-one-way-rest-client") +public class SchemaServiceOneWayClient extends OneWaySSLRestClient { - private static EELFLogger logger = EELFManager.getInstance().getLogger(SchemaServiceOneWayClient.class); + private static EELFLogger logger = EELFManager.getInstance().getLogger(SchemaServiceOneWayClient.class); @Value("${schema.service.base.url}") private String baseUrl; @@ -62,22 +65,23 @@ public class SchemaServiceOneWayClient extends OneWaySSLRestClient{ } @Override - public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { - HttpHeaders httpHeaders = new HttpHeaders(); + public MultiValueMap<String, String> getHeaders(Map<String, String> headers) { + HttpHeaders httpHeaders = new HttpHeaders(); String defaultAccept = headers.getOrDefault(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON.toString()); - String defaultContentType = headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); + String defaultContentType = + headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); - if(headers.isEmpty()){ + if (headers.isEmpty()) { httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType(defaultAccept))); httpHeaders.setContentType(MediaType.parseMediaType(defaultContentType)); } - httpHeaders.add("X-FromAppId", appName); - httpHeaders.add("X-TransactionId", UUID.randomUUID().toString()); + httpHeaders.add("X-FromAppId", appName); + httpHeaders.add("X-TransactionId", UUID.randomUUID().toString()); httpHeaders.add("X-TransactionId", appName); - headers.forEach(httpHeaders::add); - return httpHeaders; - } + headers.forEach(httpHeaders::add); + return httpHeaders; + } } 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 300c5d83..56ddd744 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 @@ -19,20 +19,22 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; - @Component(value = "schema-service-rest-client") public class SchemaServiceRestClient extends TwoWaySSLRestClient { private static EELFLogger logger = EELFManager.getInstance().getLogger(SchemaServiceRestClient.class); @@ -54,7 +56,7 @@ public class SchemaServiceRestClient extends TwoWaySSLRestClient { @Override public String getBaseUrl() { - return baseUrl; + return baseUrl; } @Override @@ -82,7 +84,8 @@ public class SchemaServiceRestClient extends TwoWaySSLRestClient { HttpHeaders httpHeaders = new HttpHeaders(); String defaultAccept = headers.getOrDefault(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON.toString()); - String defaultContentType = headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); + String defaultContentType = + headers.getOrDefault(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()); if (headers.isEmpty()) { httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType(defaultAccept))); 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 4454ad27..8949891e 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 @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; import java.io.File; @@ -35,79 +36,67 @@ import java.util.stream.Stream; */ public class AAIConfigTranslator extends ConfigTranslator { - private static final String FILESEP = (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator"); + private static final String FILESEP = + (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator"); public AAIConfigTranslator(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) { - super(bean, schemaVersions); - } - - /* (non-Javadoc) - * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles() - */ - @Override - public Map<SchemaVersion, List<String>> getNodeFiles() { - - Map<SchemaVersion, List<String>> files = new TreeMap<>(); - for (SchemaVersion v : schemaVersions.getVersions()) { - List<String> container = getVersionNodeFiles(v); - files.put(v, container); - } - - return files; - } - - - private List<String> getVersionNodeFiles(SchemaVersion v) { - return getVersionFiles( - bean.getNodeDirectory(), - v, - () -> bean.getNodesInclusionPattern().stream(), - () -> bean.getNodesExclusionPattern().stream() - ); - } - - - /* (non-Javadoc) - * @see org.onap.aai.setup.ConfigTranslator#getEdgeFiles() - */ - @Override - public Map<SchemaVersion, List<String>> getEdgeFiles() { - - Map<SchemaVersion, List<String>> files = new TreeMap<>(); - for (SchemaVersion v : schemaVersions.getVersions()) { - List<String> container = getVersionEdgeFiles(v); - files.put(v, container); - } - - return files; - } - - private List<String> getVersionEdgeFiles(SchemaVersion v) { - - return getVersionFiles( - bean.getEdgeDirectory(), - v, - () -> bean.getEdgesInclusionPattern().stream(), - () -> bean.getEdgesExclusionPattern().stream() - ); - } - - private List<String> getVersionFiles( - String startDirectory, - SchemaVersion schemaVersion, - Supplier<Stream<String>> inclusionPattern, - Supplier<Stream<String>> exclusionPattern - ){ - - List<String> container; - final String directoryName = startDirectory + FILESEP + schemaVersion.toString() + FILESEP; - container = Arrays.stream(new File(directoryName).listFiles()) - .map(File::getName) - .filter(name -> inclusionPattern.get().anyMatch(name::matches)) - .map(name -> directoryName + name) - .filter(name -> exclusionPattern.get().noneMatch(name::matches)) - .collect(Collectors.toList()); - - return container; - } + super(bean, schemaVersions); + } + + /* + * (non-Javadoc) + * + * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles() + */ + @Override + public Map<SchemaVersion, List<String>> getNodeFiles() { + + Map<SchemaVersion, List<String>> files = new TreeMap<>(); + for (SchemaVersion v : schemaVersions.getVersions()) { + List<String> container = getVersionNodeFiles(v); + files.put(v, container); + } + + return files; + } + + private List<String> getVersionNodeFiles(SchemaVersion v) { + return getVersionFiles(bean.getNodeDirectory(), v, () -> bean.getNodesInclusionPattern().stream(), + () -> bean.getNodesExclusionPattern().stream()); + } + + /* + * (non-Javadoc) + * + * @see org.onap.aai.setup.ConfigTranslator#getEdgeFiles() + */ + @Override + public Map<SchemaVersion, List<String>> getEdgeFiles() { + + Map<SchemaVersion, List<String>> files = new TreeMap<>(); + for (SchemaVersion v : schemaVersions.getVersions()) { + List<String> container = getVersionEdgeFiles(v); + files.put(v, container); + } + + return files; + } + + private List<String> getVersionEdgeFiles(SchemaVersion v) { + + return getVersionFiles(bean.getEdgeDirectory(), v, () -> bean.getEdgesInclusionPattern().stream(), + () -> bean.getEdgesExclusionPattern().stream()); + } + + private List<String> getVersionFiles(String startDirectory, SchemaVersion schemaVersion, + Supplier<Stream<String>> inclusionPattern, Supplier<Stream<String>> exclusionPattern) { + + List<String> container; + final String directoryName = startDirectory + FILESEP + schemaVersion.toString() + FILESEP; + container = Arrays.stream(new File(directoryName).listFiles()).map(File::getName) + .filter(name -> inclusionPattern.get().anyMatch(name::matches)).map(name -> directoryName + name) + .filter(name -> exclusionPattern.get().noneMatch(name::matches)).collect(Collectors.toList()); + + return container; + } } 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 3ef76d75..1c49e1de 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 @@ -22,49 +22,50 @@ package org.onap.aai.setup; import com.att.eelf.configuration.EELFLogger; 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; import java.util.List; import java.util.Map; +import org.apache.commons.io.IOUtils; +import org.onap.aai.edges.JsonIngestor; +import org.springframework.beans.factory.annotation.Autowired; + /** * Converts the contents of the schema config file * (which lists which schema files to be loaded) to * the format the Ingestors can work with. * */ -public abstract class ConfigTranslator extends Translator{ - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(ConfigTranslator.class); - - protected SchemaLocationsBean bean; +public abstract class ConfigTranslator extends Translator { + private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(ConfigTranslator.class); + + protected SchemaLocationsBean bean; - - @Autowired + @Autowired public ConfigTranslator(SchemaLocationsBean schemaLocationbean, SchemaConfigVersions schemaVersions) { - super(schemaVersions); - this.bean = schemaLocationbean; - - } - - /** - * Translates the contents of the schema config file - * into the input for the NodeIngestor - * - * @return Map of Version to the list of (string) filenames to be - * ingested for that version - */ - public abstract Map<SchemaVersion, List<String>> getNodeFiles(); + super(schemaVersions); + this.bean = schemaLocationbean; + + } + + /** + * Translates the contents of the schema config file + * into the input for the NodeIngestor + * + * @return Map of Version to the list of (string) filenames to be + * ingested for that version + */ + public abstract Map<SchemaVersion, List<String>> getNodeFiles(); public List<InputStream> getVersionNodeStream(SchemaVersion version) { Map<SchemaVersion, List<String>> filesToIngest = getNodeFiles(); List<InputStream> streams = new ArrayList<>(); - if(!filesToIngest.containsKey(version)) { + if (!filesToIngest.containsKey(version)) { return streams; } List<String> versionFiles = filesToIngest.get(version); @@ -73,13 +74,13 @@ public abstract class ConfigTranslator extends Translator{ try { InputStream stream = new FileInputStream(new File(name)); String value = IOUtils.toString(stream, Charset.defaultCharset()); - InputStream bis =(IOUtils.toInputStream(value, Charset.defaultCharset())); + InputStream bis = (IOUtils.toInputStream(value, Charset.defaultCharset())); streams.add(bis); } catch (FileNotFoundException e) { - //TODO This may have to be cascaded - LOGGER.warn("File Not Found"+e.getMessage()); + // TODO This may have to be cascaded + LOGGER.warn("File Not Found" + e.getMessage()); } catch (IOException e) { - LOGGER.warn("IOException while reading files"+e.getMessage()); + LOGGER.warn("IOException while reading files" + e.getMessage()); } } return streams; @@ -89,7 +90,7 @@ public abstract class ConfigTranslator extends Translator{ public List<String> getJsonPayload(SchemaVersion version) { Map<SchemaVersion, List<String>> filesToIngest = getEdgeFiles(); List<String> jsonPayloads = new ArrayList<>(); - if(!filesToIngest.containsKey(version)) { + if (!filesToIngest.containsKey(version)) { return jsonPayloads; } List<String> versionFiles = filesToIngest.get(version); @@ -101,14 +102,14 @@ public abstract class ConfigTranslator extends Translator{ return jsonPayloads; } - - /** - * Translates the contents of the schema config file - * into the input for the EdgeIngestor - * - * @return Map of Version to the List of (String) filenames to be - * ingested for that version - */ - public abstract Map<SchemaVersion, List<String>> getEdgeFiles(); + + /** + * Translates the contents of the schema config file + * into the input for the EdgeIngestor + * + * @return Map of Version to the List of (String) filenames to be + * ingested for that version + */ + public abstract Map<SchemaVersion, List<String>> getEdgeFiles(); } 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 index e23fea26..2d9d557b 100644 --- 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 @@ -17,17 +17,19 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + 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) diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaLocationsBean.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaLocationsBean.java index 9e740a8c..13591766 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaLocationsBean.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaLocationsBean.java @@ -20,120 +20,120 @@ package org.onap.aai.setup; +import java.util.List; + import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; -import java.util.List; - @Configuration -@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound=true) -@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound=true) +@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true) +@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true) public class SchemaLocationsBean { - /* - * Per Spring documentation, the last PropertySource that works will - * be applied. Here, schema.ingest.file will be an environment variable - * set on install that tells Spring where to look for the schema - * ingest properties file (and the actual filename), but the former - * PropertySource gives the default of looking on the classpath for - * schema-ingest.properties in case that second one doesn't work. - * - * The schema-ingest.properties file (or its equivalent if you choose - * to name it otherwise) must contain the entries the below @Value - * annotations are looking for. - */ - - @Value("${schema.configuration.location}") - private String schemaConfigLoc; - - @Value("${schema.nodes.location}") - private String nodeDirectory; - - @Value("${schema.edges.location}") - private String edgeDirectory; - - @Value("${schema.nodes.inclusion.list:}#{T(java.util.Arrays).asList(\".*oxm(.*).xml\")}") - private List<String> nodesInclusionPattern; - - @Value("${schema.nodes.exclusion.list:}#{T(java.util.Collections).emptyList()}") - private List<String> nodesExclusionPattern; - - @Value("${schema.edges.inclusion.list:}#{T(java.util.Arrays).asList(\"DbEdgeRules_.*.json\")}") - private List<String> edgesInclusionPattern; - - @Value("${schema.edges.exclusion.list:}#{T(java.util.Collections).emptyList()}") - private List<String> edgesExclusionPattern; - - /** - * @return the file name/location with the list of schema files to be ingested - */ - public String getSchemaConfigLocation() { - return schemaConfigLoc; - } - - /** - * Sets the name/location of the file with the list of schema files to ingest - * - * @param schemaConfigLoc - the file name/location - */ - public void setSchemaConfigLocation(String schemaConfigLoc) { - this.schemaConfigLoc = schemaConfigLoc; - } - - /** - * @return the location of the OXM files - */ - public String getNodeDirectory() { - return nodeDirectory; - } - - /** - * Sets the location of the OXM files - * - * @param nodeDirectory - the location of the OXM files - */ - public void setNodeDirectory(String nodeDirectory) { - this.nodeDirectory = nodeDirectory; - } - - /** - * @return the location of the edge rule json files - */ - public String getEdgeDirectory() { - return edgeDirectory; - } - - /** - * Sets the location of the edge rule json files - * - * @param edgeDirectory - the location of the edge rule files - */ - public void setEdgeDirectory(String edgeDirectory) { - this.edgeDirectory = edgeDirectory; - } - - public List<String> getNodesExclusionPattern(){ - return this.nodesExclusionPattern; - } - - public List<String> getNodesInclusionPattern(){ - return this.nodesInclusionPattern; - } - - public List<String> getEdgesExclusionPattern(){ - return this.edgesExclusionPattern; - } - - public List<String> getEdgesInclusionPattern(){ - return this.edgesInclusionPattern; - } - - //this allows the code to actually read the value from the config file - //without this those strings get set to literally "${edgeDir}" etc - @Bean - public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } + /* + * Per Spring documentation, the last PropertySource that works will + * be applied. Here, schema.ingest.file will be an environment variable + * set on install that tells Spring where to look for the schema + * ingest properties file (and the actual filename), but the former + * PropertySource gives the default of looking on the classpath for + * schema-ingest.properties in case that second one doesn't work. + * + * The schema-ingest.properties file (or its equivalent if you choose + * to name it otherwise) must contain the entries the below @Value + * annotations are looking for. + */ + + @Value("${schema.configuration.location}") + private String schemaConfigLoc; + + @Value("${schema.nodes.location}") + private String nodeDirectory; + + @Value("${schema.edges.location}") + private String edgeDirectory; + + @Value("${schema.nodes.inclusion.list:}#{T(java.util.Arrays).asList(\".*oxm(.*).xml\")}") + private List<String> nodesInclusionPattern; + + @Value("${schema.nodes.exclusion.list:}#{T(java.util.Collections).emptyList()}") + private List<String> nodesExclusionPattern; + + @Value("${schema.edges.inclusion.list:}#{T(java.util.Arrays).asList(\"DbEdgeRules_.*.json\")}") + private List<String> edgesInclusionPattern; + + @Value("${schema.edges.exclusion.list:}#{T(java.util.Collections).emptyList()}") + private List<String> edgesExclusionPattern; + + /** + * @return the file name/location with the list of schema files to be ingested + */ + public String getSchemaConfigLocation() { + return schemaConfigLoc; + } + + /** + * Sets the name/location of the file with the list of schema files to ingest + * + * @param schemaConfigLoc - the file name/location + */ + public void setSchemaConfigLocation(String schemaConfigLoc) { + this.schemaConfigLoc = schemaConfigLoc; + } + + /** + * @return the location of the OXM files + */ + public String getNodeDirectory() { + return nodeDirectory; + } + + /** + * Sets the location of the OXM files + * + * @param nodeDirectory - the location of the OXM files + */ + public void setNodeDirectory(String nodeDirectory) { + this.nodeDirectory = nodeDirectory; + } + + /** + * @return the location of the edge rule json files + */ + public String getEdgeDirectory() { + return edgeDirectory; + } + + /** + * Sets the location of the edge rule json files + * + * @param edgeDirectory - the location of the edge rule files + */ + public void setEdgeDirectory(String edgeDirectory) { + this.edgeDirectory = edgeDirectory; + } + + public List<String> getNodesExclusionPattern() { + return this.nodesExclusionPattern; + } + + public List<String> getNodesInclusionPattern() { + return this.nodesInclusionPattern; + } + + public List<String> getEdgesExclusionPattern() { + return this.edgesExclusionPattern; + } + + public List<String> getEdgesInclusionPattern() { + return this.edgesInclusionPattern; + } + + // this allows the code to actually read the value from the config file + // without this those strings get set to literally "${edgeDir}" etc + @Bean + public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { + return new PropertySourcesPlaceholderConfigurer(); + } } 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 2d2411fb..8c29f96d 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 @@ -17,10 +17,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + +import java.io.*; +import java.util.*; + +import javax.ws.rs.HttpMethod; + import org.onap.aai.restclient.RestClient; import org.onap.aai.restclient.RestClientFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,10 +38,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import javax.ws.rs.HttpMethod; -import java.io.*; -import java.util.*; - /** * <b>AAIConfigTranslator</b> is responsible for looking at the schema files and * edge files based on the available versions Also has the ability to exclude @@ -42,68 +45,66 @@ import java.util.*; */ public class SchemaServiceTranslator extends Translator { - private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SchemaServiceTranslator.class); + private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SchemaServiceTranslator.class); - private static final String SchemaServiceClientType = "schema.service"; + private static final String SchemaServiceClientType = "schema.service"; - @Value("${schema.service.nodes.endpoint}") - private String nodeSchemaUri; + @Value("${schema.service.nodes.endpoint}") + private String nodeSchemaUri; - @Value("${schema.service.edges.endpoint}") - private String edgeSchemaUri; + @Value("${schema.service.edges.endpoint}") + private String edgeSchemaUri; - @Autowired - private RestClientFactory restClientFactory; + @Autowired + private RestClientFactory restClientFactory; - public SchemaServiceTranslator(SchemaVersions schemaVersions) { - super(schemaVersions); - } + public SchemaServiceTranslator(SchemaVersions schemaVersions) { + super(schemaVersions); + } - /* - * (non-Javadoc) - * - * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles() - */ + /* + * (non-Javadoc) + * + * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles() + */ - @Override - public List<InputStream> getVersionNodeStream(SchemaVersion version) throws IOException { + @Override + public List<InputStream> getVersionNodeStream(SchemaVersion version) throws IOException { - List<InputStream> inputStreams = new ArrayList<>(); - String content = ""; - String uri = nodeSchemaUri + version.toString(); - Map<String, String> headersMap = new HashMap<>(); + List<InputStream> inputStreams = new ArrayList<>(); + String content = ""; + String uri = nodeSchemaUri + version.toString(); + Map<String, String> headersMap = new HashMap<>(); - headersMap.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_XML.toString()); + headersMap.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_XML.toString()); headersMap.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML.toString()); - RestClient restClient = restClientFactory.getRestClient(SchemaServiceClientType); - ResponseEntity<Resource> schemaResponse = restClient.getGetResource(content, uri, - headersMap); + RestClient restClient = restClientFactory.getRestClient(SchemaServiceClientType); + ResponseEntity<Resource> schemaResponse = restClient.getGetResource(content, uri, headersMap); verifySchemaServiceResponse(schemaResponse.getStatusCode()); LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode()); - inputStreams.add(schemaResponse.getBody().getInputStream()); - return inputStreams; - } + inputStreams.add(schemaResponse.getBody().getInputStream()); + return inputStreams; + } @Override - public List<String> getJsonPayload(SchemaVersion version) throws IOException { - /* - * Call Schema MS to get versions using RestTemplate - */ - List<String> inputStreams = new ArrayList<>(); - String content = ""; - String uri = edgeSchemaUri + version.toString(); - Map<String, String> headersMap = new HashMap<>(); - - RestClient restClient = restClientFactory.getRestClient(SchemaServiceClientType); - - ResponseEntity<String> schemaResponse = restClient.getGetRequest(content, uri, - headersMap); + public List<String> getJsonPayload(SchemaVersion version) throws IOException { + /* + * Call Schema MS to get versions using RestTemplate + */ + List<String> inputStreams = new ArrayList<>(); + String content = ""; + String uri = edgeSchemaUri + version.toString(); + Map<String, String> headersMap = new HashMap<>(); + + RestClient restClient = restClientFactory.getRestClient(SchemaServiceClientType); + + ResponseEntity<String> schemaResponse = restClient.getGetRequest(content, uri, headersMap); verifySchemaServiceResponse(schemaResponse.getStatusCode()); LOGGER.debug("SchemaResponse Status code" + schemaResponse.getStatusCode()); - inputStreams.add(schemaResponse.getBody()); - return inputStreams; + inputStreams.add(schemaResponse.getBody()); + return inputStreams; - } + } private void verifySchemaServiceResponse(HttpStatus statusCode) throws IOException { if (statusCode != HttpStatus.OK) { 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 5518ccb2..f39042d4 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 @@ -17,14 +17,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + 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')") @@ -48,7 +51,7 @@ public class SchemaServiceVersions extends SchemaVersions { } @PostConstruct - public void initializeFromSchemaService() throws ExceptionInInitializerError{ + public void initializeFromSchemaService() throws ExceptionInInitializerError { versionsValue = versions.stream().map(SchemaVersion::new).collect(Collectors.toList()); edgeLabelVersionValue = new SchemaVersion(edgeVersion); @@ -64,7 +67,8 @@ public class SchemaServiceVersions extends SchemaVersions { /* * TODO Change Method names */ - public void initializeFromSchemaConfig(SchemaConfigVersions schemaConfigVersion) throws ExceptionInInitializerError{ + public void initializeFromSchemaConfig(SchemaConfigVersions schemaConfigVersion) + throws ExceptionInInitializerError { versions = schemaConfigVersion.getApiVersions(); appRootVersion = schemaConfigVersion.getAppRootStartVersion(); diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersion.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersion.java index 8143b5e1..6214a6f8 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersion.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/SchemaVersion.java @@ -17,62 +17,64 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.aai.setup; -import org.onap.aai.validation.AAISchemaValidationException; +package org.onap.aai.setup; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.onap.aai.validation.AAISchemaValidationException; + public class SchemaVersion implements Comparable<SchemaVersion> { public static final Pattern VERSION_PATTERN = Pattern.compile("v([1-9][0-9]*)"); private final Integer value; - public SchemaVersion(String value){ + public SchemaVersion(String value) { Matcher matcher = VERSION_PATTERN.matcher(value); - if(!matcher.find()){ - throw new AAISchemaValidationException("Invalid Schema Version " + value + ", value doesn't match the expected regex: " + VERSION_PATTERN); + if (!matcher.find()) { + throw new AAISchemaValidationException( + "Invalid Schema Version " + value + ", value doesn't match the expected regex: " + VERSION_PATTERN); } else { this.value = Integer.parseInt(matcher.group(1)); } } @Override - public int hashCode(){ + public int hashCode() { return value.hashCode(); } @Override - public boolean equals(Object other){ + public boolean equals(Object other) { - if(this == other){ + if (this == other) { return true; } - if(other == null){ + if (other == null) { return false; } - if(!(other instanceof SchemaVersion)){ + if (!(other instanceof SchemaVersion)) { return false; } - SchemaVersion obj = (SchemaVersion)other; + SchemaVersion obj = (SchemaVersion) other; return this.value.equals(obj.value); } @Override - public String toString(){ + public String toString() { return String.valueOf("v" + value); } @Override public int compareTo(SchemaVersion o) { - if(o == null){ + if (o == null) { return -1; } 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 e7f599c6..0094a161 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 @@ -17,18 +17,19 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + import org.onap.aai.validation.AAISchemaValidationException; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import java.util.List; -import java.util.stream.Collectors; - - @PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true) @PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true) public class SchemaVersions { @@ -42,9 +43,9 @@ public class SchemaVersions { protected SchemaVersion namespaceChangeVersionValue; 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" - + " schema.version.edge.label.start is in that list"; + String errorMessage = "Invalid, edge label version is not in the api versions list" + + ", please check schema.version.list and ensure that the" + + " schema.version.edge.label.start is in that list"; if (!versionsValue.contains(edgeLabelVersionValue)) { throw new AAISchemaValidationException(errorMessage); } @@ -69,7 +70,7 @@ public class SchemaVersions { throw new AAISchemaValidationException(errorMessage); } } - + public List<SchemaVersion> getVersions() { return versionsValue; } 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 dde7cad6..68678b83 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 @@ -17,20 +17,24 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; + import org.onap.aai.restclient.RestClient; 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; -import java.util.Map; public class SchemaVersionsBean { @@ -51,43 +55,37 @@ public class SchemaVersionsBean { @PostConstruct public void initialize() { - //Call SchemaService to get versions + // Call SchemaService to get versions retrieveAllSchemaVersions(); } - public void retrieveAllSchemaVersions() throws ExceptionInInitializerError{ - /* - Call Schema MS to get versions using RestTemplate - */ + public void retrieveAllSchemaVersions() throws ExceptionInInitializerError { + /* + * Call Schema MS to get versions using RestTemplate + */ String content = ""; Map<String, String> headersMap = new HashMap<>(); - RestClient restClient = restClientFactory - .getRestClient(SCHEMA_SERVICE); + RestClient restClient = restClientFactory.getRestClient(SCHEMA_SERVICE); - ResponseEntity<String> schemaResponse = restClient.getGetRequest( content, versionsUri, headersMap); - Gson gson = new GsonBuilder() - .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES) - .create(); + ResponseEntity<String> schemaResponse = restClient.getGetRequest(content, versionsUri, headersMap); + Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create(); schemaVersions = gson.fromJson(schemaResponse.getBody(), SchemaServiceVersions.class); - if(!validateOverrides(schemaVersions)){ - throw new ExceptionInInitializerError("The versions requested is not supported by SchemaService"); - } - if("true".equals(overrideSchemaService)){ - schemaVersions.initializeFromSchemaConfig(schemaConfigVersions); - } - else{ - 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){ + public boolean validateOverrides(SchemaServiceVersions schemaVersions1) { boolean versionsAvailable = true; - if("true".equals(overrideSchemaService)){ - versionsAvailable = schemaConfigVersions.getApiVersions().stream(). - allMatch( - (s) -> schemaVersions1.getVersionsAll().contains(s) - ); + if ("true".equals(overrideSchemaService)) { + versionsAvailable = schemaConfigVersions.getApiVersions().stream() + .allMatch((s) -> schemaVersions1.getVersionsAll().contains(s)); } return versionsAvailable; diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/setup/Translator.java b/aai-schema-ingest/src/main/java/org/onap/aai/setup/Translator.java index 09062e1c..39efde54 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/setup/Translator.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/setup/Translator.java @@ -20,10 +20,11 @@ package org.onap.aai.setup; -import org.springframework.beans.factory.annotation.Autowired; - import java.io.*; import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + /** * Converts the contents of the schema config file * (which lists which schema files to be loaded) to @@ -32,36 +33,33 @@ import java.util.List; */ public abstract class Translator { - protected SchemaVersions schemaVersions; + protected SchemaVersions schemaVersions; - public Translator(SchemaVersions schemaVersions) { - this.schemaVersions = schemaVersions; - } - - /** - * Translates the contents of the schema config file - * into the input for the NodeIngestor - * - * @return Map of Version to the list of (string) filenames to be - * ingested for that version - */ + public Translator(SchemaVersions schemaVersions) { + this.schemaVersions = schemaVersions; + } + /** + * Translates the contents of the schema config file + * into the input for the NodeIngestor + * + * @return Map of Version to the list of (string) filenames to be + * ingested for that version + */ public abstract List<InputStream> getVersionNodeStream(SchemaVersion version) throws IOException; - public abstract List<String> - getJsonPayload(SchemaVersion version) throws IOException; - - /** - * Translates the contents of the schema config file - * into the input for the EdgeIngestor - * - * @return Map of Version to the List of (String) filenames to be - * ingested for that version - */ + public abstract List<String> getJsonPayload(SchemaVersion version) throws IOException; + /** + * Translates the contents of the schema config file + * into the input for the EdgeIngestor + * + * @return Map of Version to the List of (String) filenames to be + * ingested for that version + */ - public SchemaVersions getSchemaVersions(){ + public SchemaVersions getSchemaVersions() { return this.schemaVersions; - } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/AAISchemaValidationException.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/AAISchemaValidationException.java index 3fd536b0..1506f135 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/AAISchemaValidationException.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/AAISchemaValidationException.java @@ -24,7 +24,7 @@ package org.onap.aai.validation; * Indicates that a fatal error in the A&AI schema has been found. */ public class AAISchemaValidationException extends IllegalStateException { - public AAISchemaValidationException(String msg) { - super(msg); - } + public AAISchemaValidationException(String msg) { + super(msg); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/CheckEverythingStrategy.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/CheckEverythingStrategy.java index 768c18bd..3f0ee41f 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/CheckEverythingStrategy.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/CheckEverythingStrategy.java @@ -21,6 +21,7 @@ /** * */ + package org.onap.aai.validation; import java.util.ArrayList; @@ -29,42 +30,48 @@ import java.util.List; import org.apache.commons.lang.StringUtils; /** - * When an error is found, mark that it is NOT ok to - * continue with installation/whatever other caller function, + * When an error is found, mark that it is NOT ok to + * continue with installation/whatever other caller function, * and keep track of the message but * keep validating so all issues are found in one run. */ public class CheckEverythingStrategy implements SchemaErrorStrategy { - private boolean isOK = true; - private List<String> errorMsgs = new ArrayList<>(); + private boolean isOK = true; + private List<String> errorMsgs = new ArrayList<>(); - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#isOK() - */ - @Override - public boolean isOK() { - return isOK; - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#isOK() + */ + @Override + public boolean isOK() { + return isOK; + } - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#getErrorMsg() - */ - @Override - public String getErrorMsg() { - if (errorMsgs.isEmpty()) { - return "No errors found."; - } else { - return StringUtils.join(errorMsgs, "\n"); - } - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#getErrorMsg() + */ + @Override + public String getErrorMsg() { + if (errorMsgs.isEmpty()) { + return "No errors found."; + } else { + return StringUtils.join(errorMsgs, "\n"); + } + } - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#notifyOnError(java.lang.String) - */ - @Override - public void notifyOnError(String errorMsg) { - isOK = false; - errorMsgs.add(errorMsg); - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#notifyOnError(java.lang.String) + */ + @Override + public void notifyOnError(String errorMsg) { + isOK = false; + errorMsgs.add(errorMsg); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/DefaultVersionValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/DefaultVersionValidationModule.java index 36176587..7308e377 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/DefaultVersionValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/DefaultVersionValidationModule.java @@ -21,6 +21,7 @@ /** * */ + package org.onap.aai.validation; import java.util.List; @@ -41,15 +42,17 @@ public class DefaultVersionValidationModule implements VersionValidationModule { private ConfigTranslator config; - @Autowired - public DefaultVersionValidationModule(ConfigTranslator config) { + @Autowired + public DefaultVersionValidationModule(ConfigTranslator config) { - this.config = config; - } + this.config = config; + } - /* (non-Javadoc) - * @see org.onap.aai.validation.VersionValidationModule#validate(org.onap.aai.setup.ConfigTranslator) - */ + /* + * (non-Javadoc) + * + * @see org.onap.aai.validation.VersionValidationModule#validate(org.onap.aai.setup.ConfigTranslator) + */ @Override public String validate() { Map<SchemaVersion, List<String>> nodeConfig = config.getNodeFiles(); diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/FailFastStrategy.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/FailFastStrategy.java index 2c21e685..1352e6b7 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/FailFastStrategy.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/FailFastStrategy.java @@ -21,6 +21,7 @@ /** * */ + package org.onap.aai.validation; /** @@ -29,33 +30,39 @@ package org.onap.aai.validation; * process to abort. */ public class FailFastStrategy implements SchemaErrorStrategy { - private boolean isOK = true; - private String errorMsg = "No errors found."; + private boolean isOK = true; + private String errorMsg = "No errors found."; - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#isOK() - */ - @Override - public boolean isOK() { - return isOK; - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#isOK() + */ + @Override + public boolean isOK() { + return isOK; + } - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#getErrorMsg() - */ - @Override - public String getErrorMsg() { - return errorMsg; - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#getErrorMsg() + */ + @Override + public String getErrorMsg() { + return errorMsg; + } - /* (non-Javadoc) - * @see org.onap.aai.edges.validation.SchemaErrorStrategy#notifyOnError(java.lang.String) - */ - @Override - public void notifyOnError(String errorMsg) { - isOK = false; - this.errorMsg = errorMsg; - throw new AAISchemaValidationException(errorMsg); - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.validation.SchemaErrorStrategy#notifyOnError(java.lang.String) + */ + @Override + public void notifyOnError(String errorMsg) { + isOK = false; + this.errorMsg = errorMsg; + throw new AAISchemaValidationException(errorMsg); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/SchemaErrorStrategy.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/SchemaErrorStrategy.java index cefc29c2..f46416cb 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/SchemaErrorStrategy.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/SchemaErrorStrategy.java @@ -24,36 +24,36 @@ package org.onap.aai.validation; * Controls response to finding problems in the schema files. */ public interface SchemaErrorStrategy { - /** - * Gives if it is OK to proceed with whatever process - * invoked the validation (probably the installation of - * the A&AI instance). - * - * @return boolean - */ - public boolean isOK(); - - /** - * Gets the error message(s) gathered in the course - * of validation. - * - * @return String error message or messages concatenated together - */ - public String getErrorMsg(); - - /** - * Invokes the ErrorStrategy to do whatever response to - * an issue in the schema having been found. - * - * Options: - * -Throw an exception if the whole process should be - * immediately aborted - * -Set OK status to false, store the message and allow the - * validation process to continue and find any other issues - * -Completely ignore that something is wrong - * etc. - * - * @param String errorMsg - the error message from the validator module - */ - public void notifyOnError(String errorMsg); + /** + * Gives if it is OK to proceed with whatever process + * invoked the validation (probably the installation of + * the A&AI instance). + * + * @return boolean + */ + public boolean isOK(); + + /** + * Gets the error message(s) gathered in the course + * of validation. + * + * @return String error message or messages concatenated together + */ + public String getErrorMsg(); + + /** + * Invokes the ErrorStrategy to do whatever response to + * an issue in the schema having been found. + * + * Options: + * -Throw an exception if the whole process should be + * immediately aborted + * -Set OK status to false, store the message and allow the + * validation process to continue and find any other issues + * -Completely ignore that something is wrong + * etc. + * + * @param String errorMsg - the error message from the validator module + */ + public void notifyOnError(String errorMsg); } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidationModule.java index b87be79a..ec3523bf 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidationModule.java @@ -20,19 +20,18 @@ package org.onap.aai.validation; - /** * Defines the behavior for what versions are required/optional. * * Constructor must take ConfigTranslator via autowiring. */ public interface VersionValidationModule { - - /** - * Validates that all required versions have schema - * configured for them. - * - * @return empty string if none missing or else an appropriate error - */ - public String validate(); + + /** + * Validates that all required versions have schema + * configured for them. + * + * @return empty string if none missing or else an appropriate error + */ + public String validate(); } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidator.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidator.java index 612da353..375bec0f 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidator.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/VersionValidator.java @@ -29,25 +29,25 @@ import org.springframework.stereotype.Component; */ @Component public class VersionValidator { - private SchemaErrorStrategy strat; - private VersionValidationModule verMod; - - @Autowired - public VersionValidator(SchemaErrorStrategy strategy, VersionValidationModule verMod) { - this.strat = strategy; - this.verMod = verMod; - } - - public boolean validate() { - String result = verMod.validate(); - if (!"".equals(result)) { - strat.notifyOnError(result); - } - - return strat.isOK(); - } - - public String getErrorMsg() { - return strat.getErrorMsg(); - } + private SchemaErrorStrategy strat; + private VersionValidationModule verMod; + + @Autowired + public VersionValidator(SchemaErrorStrategy strategy, VersionValidationModule verMod) { + this.strat = strategy; + this.verMod = verMod; + } + + public boolean validate() { + String result = verMod.validate(); + if (!"".equals(result)) { + strat.notifyOnError(result); + } + + return strat.isOK(); + } + + public String getErrorMsg() { + return strat.getErrorMsg(); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/CousinDefaultingValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/CousinDefaultingValidationModule.java index d4ab7aeb..73337a49 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/CousinDefaultingValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/CousinDefaultingValidationModule.java @@ -21,60 +21,62 @@ package org.onap.aai.validation.edges; import com.jayway.jsonpath.DocumentContext; + +import java.util.*; + import org.onap.aai.edges.EdgeRuleQuery; import org.onap.aai.edges.EdgeRuleQuery.Builder; import org.onap.aai.edges.enums.EdgeField; import org.onap.aai.edges.enums.EdgeType; -import java.util.*; - /** * Validates that in the collection of cousin rules between a given node type pair, - * there is exactly 1 set default=true. + * there is exactly 1 set default=true. */ public class CousinDefaultingValidationModule { - /** - * Validates that in the collection of cousin rules between a given node type pair, - * there is exactly 1 set default=true. - * - * @param String nodeTypePair - pair of A&AI node types in the form "typeA|typeB" - * @param List<DocumentContext> ctxs - the ingested json schema to validate - * @return empty string if ok, appropriate error message otherwise - */ - public String validate(String nodeTypePair, List<DocumentContext> ctxs) { - String[] types = nodeTypePair.split("\\|"); - EdgeRuleQuery lookup = new Builder(types[0], types[1]).edgeType(EdgeType.COUSIN).build(); - List<Map<String, String>> rules = new ArrayList<>(); - for (DocumentContext ctx : ctxs) { - rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); - } - - if (rules.isEmpty()) { - return ""; //bc irrelevant check - } - - int defaultCount = 0; - Set<String> defLabels = new HashSet<>(); - for (Map<String, String> rule : rules) { - if ("true".equals(rule.get(EdgeField.DEFAULT.toString()))) { - defaultCount++; - defLabels.add(rule.get(EdgeField.LABEL.toString())); - } - } - - StringBuilder errorBase = new StringBuilder().append("Pair ").append(nodeTypePair).append(" must have exactly one cousin rule set as default. "); - if (defaultCount == 1) { - return ""; - } else if (defaultCount == 0){ - errorBase.append("None set."); - return errorBase.toString(); - } else { - errorBase.append("Multiple set, see labels: "); - for (String label : defLabels) { - errorBase.append(label).append(" "); - } - return errorBase.toString(); - } - } + /** + * Validates that in the collection of cousin rules between a given node type pair, + * there is exactly 1 set default=true. + * + * @param String nodeTypePair - pair of A&AI node types in the form "typeA|typeB" + * @param List<DocumentContext> ctxs - the ingested json schema to validate + * @return empty string if ok, appropriate error message otherwise + */ + public String validate(String nodeTypePair, List<DocumentContext> ctxs) { + String[] types = nodeTypePair.split("\\|"); + EdgeRuleQuery lookup = new Builder(types[0], types[1]).edgeType(EdgeType.COUSIN).build(); + List<Map<String, String>> rules = new ArrayList<>(); + for (DocumentContext ctx : ctxs) { + rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); + } + + if (rules.isEmpty()) { + return ""; // bc irrelevant check + } + + int defaultCount = 0; + Set<String> defLabels = new HashSet<>(); + for (Map<String, String> rule : rules) { + if ("true".equals(rule.get(EdgeField.DEFAULT.toString()))) { + defaultCount++; + defLabels.add(rule.get(EdgeField.LABEL.toString())); + } + } + + StringBuilder errorBase = new StringBuilder().append("Pair ").append(nodeTypePair) + .append(" must have exactly one cousin rule set as default. "); + if (defaultCount == 1) { + return ""; + } else if (defaultCount == 0) { + errorBase.append("None set."); + return errorBase.toString(); + } else { + errorBase.append("Multiple set, see labels: "); + for (String label : defLabels) { + errorBase.append(label).append(" "); + } + return errorBase.toString(); + } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModule.java index 9a7288b0..1229cf49 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModule.java @@ -21,14 +21,15 @@ /** * */ -package org.onap.aai.validation.edges; -import org.onap.aai.edges.enums.EdgeField; +package org.onap.aai.validation.edges; import java.util.EnumSet; import java.util.Map; import java.util.Map.Entry; +import org.onap.aai.edges.enums.EdgeField; + /** * Default core A&AI edge field validation * All fields in EdgeField enum are required EXCEPT description @@ -36,37 +37,41 @@ import java.util.Map.Entry; */ public class DefaultEdgeFieldsValidationModule implements EdgeFieldsValidationModule { - /* (non-Javadoc) - * @see org.onap.aai.edges.EdgeFieldsValidator#verifyFields(java.util.Map) - */ - @Override - public String verifyFields(Map<String, String> rule) { - EnumSet<EdgeField> missingFields = EnumSet.complementOf(EnumSet.allOf(EdgeField.class)); - - for (EdgeField f : EdgeField.values()) { - if (!rule.containsKey(f.toString()) && (f != EdgeField.DESCRIPTION) && (f != EdgeField.PRIVATE)) { //description is optional - missingFields.add(f); - } - } - - StringBuilder errorMsg = new StringBuilder(); - if (!missingFields.isEmpty()) { - errorMsg.append("Rule ").append(ruleToString(rule)).append(" missing required fields: "); - for (EdgeField mf : missingFields) { - errorMsg.append(mf.toString()).append(" "); - } - } - - return errorMsg.toString(); - } - - private String ruleToString(Map<String, String> rule) { - StringBuilder sb = new StringBuilder(); - for (Entry<String, String> fields : rule.entrySet()) { - sb.append(fields.getKey()).append(":").append(fields.getValue()).append(" "); - } - - return sb.toString(); - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.edges.EdgeFieldsValidator#verifyFields(java.util.Map) + */ + @Override + public String verifyFields(Map<String, String> rule) { + EnumSet<EdgeField> missingFields = EnumSet.complementOf(EnumSet.allOf(EdgeField.class)); + + for (EdgeField f : EdgeField.values()) { + if (!rule.containsKey(f.toString()) && (f != EdgeField.DESCRIPTION) && (f != EdgeField.PRIVATE)) { // description + // is + // optional + missingFields.add(f); + } + } + + StringBuilder errorMsg = new StringBuilder(); + if (!missingFields.isEmpty()) { + errorMsg.append("Rule ").append(ruleToString(rule)).append(" missing required fields: "); + for (EdgeField mf : missingFields) { + errorMsg.append(mf.toString()).append(" "); + } + } + + return errorMsg.toString(); + } + + private String ruleToString(Map<String, String> rule) { + StringBuilder sb = new StringBuilder(); + for (Entry<String, String> fields : rule.entrySet()) { + sb.append(fields.getKey()).append(":").append(fields.getValue()).append(" "); + } + + return sb.toString(); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeFieldsValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeFieldsValidationModule.java index 10ac1892..3bfa8d80 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeFieldsValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeFieldsValidationModule.java @@ -27,28 +27,28 @@ import java.util.Map; * */ public interface EdgeFieldsValidationModule { - - /** - * Verifies the given rule has all required fields. - * Implement to check for what you determine to be required. - * You may also throw an error on unexpected fields if you wish, - * whatever makes sense for your system. - * - * @param rule - Map<String, String> that will look something like this: - * { - * "from": "foo", - * "to": "bar", - * "label": "tosca.relationships.network.BindsTo", - * "direction": "OUT", - * "multiplicity": "ONE2ONE", - * "contains-other-v": "NONE", - * "delete-other-v": "NONE", - * "prevent-delete": "NONE", - * "default": "true", - * "description":"An edge comment" - * } - * @return empty String if no errors found, or String with - * the appropriate error message - */ - public String verifyFields(Map<String, String> rule); + + /** + * Verifies the given rule has all required fields. + * Implement to check for what you determine to be required. + * You may also throw an error on unexpected fields if you wish, + * whatever makes sense for your system. + * + * @param rule - Map<String, String> that will look something like this: + * { + * "from": "foo", + * "to": "bar", + * "label": "tosca.relationships.network.BindsTo", + * "direction": "OUT", + * "multiplicity": "ONE2ONE", + * "contains-other-v": "NONE", + * "delete-other-v": "NONE", + * "prevent-delete": "NONE", + * "default": "true", + * "description":"An edge comment" + * } + * @return empty String if no errors found, or String with + * the appropriate error message + */ + public String verifyFields(Map<String, String> rule); } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeRuleValidator.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeRuleValidator.java index 38dcbb7e..4eedaa07 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeRuleValidator.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/EdgeRuleValidator.java @@ -21,37 +21,37 @@ package org.onap.aai.validation.edges; import com.jayway.jsonpath.DocumentContext; + +import java.util.*; + import org.onap.aai.edges.JsonIngestor; import org.onap.aai.edges.TypeAlphabetizer; import org.onap.aai.edges.enums.EdgeField; - import org.onap.aai.setup.ConfigTranslator; import org.onap.aai.setup.SchemaVersion; import org.onap.aai.validation.SchemaErrorStrategy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.*; - /** * Runs all validations against the ingested schema */ @Component public class EdgeRuleValidator { - private Map<SchemaVersion, List<DocumentContext>> versionJsonFilesMap; - private final SchemaErrorStrategy strat; - protected final EdgeFieldsValidationModule fieldValidator; - protected final UniqueLabelValidationModule labelValidator; - protected final SingleContainmentValidationModule containsValidator; - protected final CousinDefaultingValidationModule defaultsValidator; - protected final NodeTypesValidationModule typeValidator; + private Map<SchemaVersion, List<DocumentContext>> versionJsonFilesMap; + private final SchemaErrorStrategy strat; + protected final EdgeFieldsValidationModule fieldValidator; + protected final UniqueLabelValidationModule labelValidator; + protected final SingleContainmentValidationModule containsValidator; + protected final CousinDefaultingValidationModule defaultsValidator; + protected final NodeTypesValidationModule typeValidator; @Autowired public EdgeRuleValidator(ConfigTranslator config, SchemaErrorStrategy strat, - EdgeFieldsValidationModule fieldValidator, UniqueLabelValidationModule labelValidator, - SingleContainmentValidationModule containsValidator, CousinDefaultingValidationModule defaultsValidator, - NodeTypesValidationModule typeValidator) { - //TODO - Need to change this to use files/schemaservice + EdgeFieldsValidationModule fieldValidator, UniqueLabelValidationModule labelValidator, + SingleContainmentValidationModule containsValidator, CousinDefaultingValidationModule defaultsValidator, + NodeTypesValidationModule typeValidator) { + // TODO - Need to change this to use files/schemaservice this.versionJsonFilesMap = new JsonIngestor().ingest(config.getEdgeFiles()); this.strat = strat; this.fieldValidator = fieldValidator; @@ -61,49 +61,50 @@ public class EdgeRuleValidator { this.typeValidator = typeValidator; } - public boolean validate() { - - for (Map.Entry<SchemaVersion, List<DocumentContext>> verEntry : versionJsonFilesMap.entrySet()) { - SchemaVersion v = verEntry.getKey(); - List<DocumentContext> ctxs = verEntry.getValue(); - List<Map<String, String>> rules = collectRules(ctxs); - Set<String> nodeTypePairs = new HashSet<>(); - TypeAlphabetizer alpher = new TypeAlphabetizer(); - - for (Map<String, String> rule : rules) { - handleResult(fieldValidator.verifyFields(rule)); - nodeTypePairs.add(alpher.buildAlphabetizedKey(rule.get(EdgeField.FROM.toString()), rule.get(EdgeField.TO.toString()))); - } - - for (String nodeTypePair : nodeTypePairs) { - handleResult(labelValidator.validate(nodeTypePair, ctxs)); - handleResult(containsValidator.validate(nodeTypePair, ctxs)); - handleResult(defaultsValidator.validate(nodeTypePair, ctxs)); - } - - handleResult(typeValidator.validate(nodeTypePairs, v)); - } - - return strat.isOK(); - } - - private List<Map<String, String>> collectRules(List<DocumentContext> ctxs) { - List<Map<String, String>> rules = new ArrayList<>(); - - for (DocumentContext ctx : ctxs) { - rules.addAll(ctx.read("$.rules.*")); - } - - return rules; - } - - private void handleResult(String result) { - if (!"".equals(result)) { - strat.notifyOnError(result); - } - } - - public String getErrorMsg() { - return strat.getErrorMsg(); - } + public boolean validate() { + + for (Map.Entry<SchemaVersion, List<DocumentContext>> verEntry : versionJsonFilesMap.entrySet()) { + SchemaVersion v = verEntry.getKey(); + List<DocumentContext> ctxs = verEntry.getValue(); + List<Map<String, String>> rules = collectRules(ctxs); + Set<String> nodeTypePairs = new HashSet<>(); + TypeAlphabetizer alpher = new TypeAlphabetizer(); + + for (Map<String, String> rule : rules) { + handleResult(fieldValidator.verifyFields(rule)); + nodeTypePairs.add(alpher.buildAlphabetizedKey(rule.get(EdgeField.FROM.toString()), + rule.get(EdgeField.TO.toString()))); + } + + for (String nodeTypePair : nodeTypePairs) { + handleResult(labelValidator.validate(nodeTypePair, ctxs)); + handleResult(containsValidator.validate(nodeTypePair, ctxs)); + handleResult(defaultsValidator.validate(nodeTypePair, ctxs)); + } + + handleResult(typeValidator.validate(nodeTypePairs, v)); + } + + return strat.isOK(); + } + + private List<Map<String, String>> collectRules(List<DocumentContext> ctxs) { + List<Map<String, String>> rules = new ArrayList<>(); + + for (DocumentContext ctx : ctxs) { + rules.addAll(ctx.read("$.rules.*")); + } + + return rules; + } + + private void handleResult(String result) { + if (!"".equals(result)) { + strat.notifyOnError(result); + } + } + + public String getErrorMsg() { + return strat.getErrorMsg(); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/NodeTypesValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/NodeTypesValidationModule.java index e8c45063..0de66249 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/NodeTypesValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/NodeTypesValidationModule.java @@ -20,16 +20,15 @@ package org.onap.aai.validation.edges; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; import org.onap.aai.nodes.NodeIngestor; import org.onap.aai.setup.SchemaVersion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - /** * Validates that the node types appearing in the edge rules are valid * against the ingested OXM. @@ -38,52 +37,52 @@ import java.util.Set; */ @Component public class NodeTypesValidationModule { - private NodeIngestor ni; - - @Autowired - public NodeTypesValidationModule(NodeIngestor ni) { - this.ni = ni; - } - - /** - * Validate that every node type in the given set is defined in - * the OXM for the given version - * - * @param nodeTypePairs - all the node types in - * the edge rules for the given version being validated - * @param v - the version being validated - * @return empty string if all types are present in the given version's ingested OXM, else - * appropriate error message - */ - public String validate(Collection<String> nodeTypePairs, SchemaVersion v) { - //setup - Set<String> nodeTypes = new HashSet<>(); - for (String pair : nodeTypePairs) { - String[] types = pair.split("\\|"); - - for (String type : types) { - if (!"".equals(type)) { - nodeTypes.add(type); - } - } - } - - //validation - Set<String> badTypes = new HashSet<>(); - for (String type : nodeTypes) { - if (!ni.hasNodeType(type, v)) { - badTypes.add(type); - } - } - - if (badTypes.isEmpty()) { - return ""; - } else { - StringBuilder errorBase = new StringBuilder().append("Invalid node type(s) found: "); - for (String bt : badTypes) { - errorBase.append(bt).append(" "); - } - return errorBase.toString(); - } - } + private NodeIngestor ni; + + @Autowired + public NodeTypesValidationModule(NodeIngestor ni) { + this.ni = ni; + } + + /** + * Validate that every node type in the given set is defined in + * the OXM for the given version + * + * @param nodeTypePairs - all the node types in + * the edge rules for the given version being validated + * @param v - the version being validated + * @return empty string if all types are present in the given version's ingested OXM, else + * appropriate error message + */ + public String validate(Collection<String> nodeTypePairs, SchemaVersion v) { + // setup + Set<String> nodeTypes = new HashSet<>(); + for (String pair : nodeTypePairs) { + String[] types = pair.split("\\|"); + + for (String type : types) { + if (!"".equals(type)) { + nodeTypes.add(type); + } + } + } + + // validation + Set<String> badTypes = new HashSet<>(); + for (String type : nodeTypes) { + if (!ni.hasNodeType(type, v)) { + badTypes.add(type); + } + } + + if (badTypes.isEmpty()) { + return ""; + } else { + StringBuilder errorBase = new StringBuilder().append("Invalid node type(s) found: "); + for (String bt : badTypes) { + errorBase.append(bt).append(" "); + } + return errorBase.toString(); + } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/SingleContainmentValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/SingleContainmentValidationModule.java index ad2cffeb..5f6a9646 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/SingleContainmentValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/SingleContainmentValidationModule.java @@ -21,40 +21,41 @@ package org.onap.aai.validation.edges; import com.jayway.jsonpath.DocumentContext; -import org.onap.aai.edges.EdgeRuleQuery; -import org.onap.aai.edges.enums.EdgeType; import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.onap.aai.edges.EdgeRuleQuery; +import org.onap.aai.edges.enums.EdgeType; + /** * Validates that the given node type pair has at most one containment relationship * in their edge rules. * */ public class SingleContainmentValidationModule { - - /** - * Validates that the given node type pair has at most one containment relationship - * in their edge rules. - * - * @param String nodeTypePair - pair of A&AI node types in the form "typeA|typeB" - * @param List<DocumentContext> ctxs - the ingested json to validate - * @return empty string if passes, else appropriate error message - */ - public String validate(String nodeTypePair, List<DocumentContext> ctxs) { - String[] types = nodeTypePair.split("\\|"); - EdgeRuleQuery lookup = new EdgeRuleQuery.Builder(types[0], types[1]).edgeType(EdgeType.TREE).build(); - List<Map<String, String>> rules = new ArrayList<>(); - for (DocumentContext ctx : ctxs) { - rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); - } - - if (rules.isEmpty() || rules.size() == 1) { - return ""; - } else { //had more than one containment relationship for the pair - return "Pair " + nodeTypePair + " has multiple containment rules. Only one allowed."; - } - } + + /** + * Validates that the given node type pair has at most one containment relationship + * in their edge rules. + * + * @param String nodeTypePair - pair of A&AI node types in the form "typeA|typeB" + * @param List<DocumentContext> ctxs - the ingested json to validate + * @return empty string if passes, else appropriate error message + */ + public String validate(String nodeTypePair, List<DocumentContext> ctxs) { + String[] types = nodeTypePair.split("\\|"); + EdgeRuleQuery lookup = new EdgeRuleQuery.Builder(types[0], types[1]).edgeType(EdgeType.TREE).build(); + List<Map<String, String>> rules = new ArrayList<>(); + for (DocumentContext ctx : ctxs) { + rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); + } + + if (rules.isEmpty() || rules.size() == 1) { + return ""; + } else { // had more than one containment relationship for the pair + return "Pair " + nodeTypePair + " has multiple containment rules. Only one allowed."; + } + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/UniqueLabelValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/UniqueLabelValidationModule.java index 35d74667..82dc1694 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/UniqueLabelValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/edges/UniqueLabelValidationModule.java @@ -21,46 +21,47 @@ package org.onap.aai.validation.edges; import com.jayway.jsonpath.DocumentContext; + +import java.util.*; + import org.onap.aai.edges.EdgeRuleQuery; import org.onap.aai.edges.EdgeRuleQuery.Builder; import org.onap.aai.edges.enums.EdgeField; -import java.util.*; - /** * Applies label validation rules * */ public class UniqueLabelValidationModule { - - /** - * Validates that the given pair of node types have no duplicate labels in - * their edge rules - * - * @param String nodeTypePair - of the form "typeA|typeB" - * @param List<DocumentContext> ctxs - the edge rule json to pull rules from - * (ie all files for one version) - * @return empty string if no errors, else string error message - */ - public String validate(String nodeTypePair, List<DocumentContext> ctxs) { - String[] types = nodeTypePair.split("\\|"); - EdgeRuleQuery lookup = new Builder(types[0], types[1]).build(); - - List<Map<String, String>> rules = new ArrayList<>(); - for (DocumentContext ctx : ctxs) { - rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); - } - - Set<String> labelsSeen = new HashSet<>(); - for (Map<String, String> rule : rules) { - String label = rule.get(EdgeField.LABEL.toString()); - if (labelsSeen.contains(label)) { - return "Pair " + nodeTypePair + " has multiple rules using the same label: " + label + - ". Every rule between the same node type pair must have a unique label."; - } else { - labelsSeen.add(label); - } - } - return ""; - } + + /** + * Validates that the given pair of node types have no duplicate labels in + * their edge rules + * + * @param String nodeTypePair - of the form "typeA|typeB" + * @param List<DocumentContext> ctxs - the edge rule json to pull rules from + * (ie all files for one version) + * @return empty string if no errors, else string error message + */ + public String validate(String nodeTypePair, List<DocumentContext> ctxs) { + String[] types = nodeTypePair.split("\\|"); + EdgeRuleQuery lookup = new Builder(types[0], types[1]).build(); + + List<Map<String, String>> rules = new ArrayList<>(); + for (DocumentContext ctx : ctxs) { + rules.addAll(ctx.read("$.rules.[?]", lookup.getFilter())); + } + + Set<String> labelsSeen = new HashSet<>(); + for (Map<String, String> rule : rules) { + String label = rule.get(EdgeField.LABEL.toString()); + if (labelsSeen.contains(label)) { + return "Pair " + nodeTypePair + " has multiple rules using the same label: " + label + + ". Every rule between the same node type pair must have a unique label."; + } else { + labelsSeen.add(label); + } + } + return ""; + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DefaultDuplicateNodeDefinitionValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DefaultDuplicateNodeDefinitionValidationModule.java index bbb3388f..024525b9 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DefaultDuplicateNodeDefinitionValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DefaultDuplicateNodeDefinitionValidationModule.java @@ -20,6 +20,9 @@ package org.onap.aai.validation.nodes; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; + import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -36,9 +39,6 @@ import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; - /** * Default duplicate rules for A&AI - * node types may never have a duplicate definition @@ -49,56 +49,59 @@ import com.google.common.collect.Multimap; */ public class DefaultDuplicateNodeDefinitionValidationModule implements DuplicateNodeDefinitionValidationModule { - /* (non-Javadoc) - * @see org.onap.aai.nodes.validation.DuplicateNodeDefinitionValidationModule#findDuplicates(java.util.List) - */ - @Override - public String findDuplicates(List<String> files, SchemaVersion v) { - try { - final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); - docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - final DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); - - Multimap<String, String> types = ArrayListMultimap.create(); - boolean foundDups = false; - for (String file : files) { - InputStream inputStream = new FileInputStream(file); - final Document doc = docBuilder.parse(inputStream); - final NodeList list = doc.getElementsByTagName("java-type"); - - for (int i = 0; i < list.getLength(); i++) { - String type = list.item(i).getAttributes().getNamedItem("name").getNodeValue(); - if (types.containsKey(type)) { - foundDups = true; - } - types.put(type, file); - } - } - - if (foundDups) { - return buildErrorMsg(types, v); - } else { - return ""; - } - } catch (ParserConfigurationException | SAXException | IOException e) { - // TODO something useful with this information - return e.getMessage(); - } - } - - private String buildErrorMsg(Multimap<String, String> types, SchemaVersion v) { - StringBuilder errorMsg = new StringBuilder().append("Duplicates found in version ").append(v.toString()).append(". "); - for (String nodeType : types.keySet()) { - Collection<String> files = types.get(nodeType); - if (files.size() == 1) { - continue; //only record the duplicated ones - } - errorMsg.append(nodeType).append(" has definitions in "); - for (String file : files) { - errorMsg.append(file).append(" "); - } - } - return errorMsg.toString(); - } + /* + * (non-Javadoc) + * + * @see org.onap.aai.nodes.validation.DuplicateNodeDefinitionValidationModule#findDuplicates(java.util.List) + */ + @Override + public String findDuplicates(List<String> files, SchemaVersion v) { + try { + final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + final DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + + Multimap<String, String> types = ArrayListMultimap.create(); + boolean foundDups = false; + for (String file : files) { + InputStream inputStream = new FileInputStream(file); + final Document doc = docBuilder.parse(inputStream); + final NodeList list = doc.getElementsByTagName("java-type"); + + for (int i = 0; i < list.getLength(); i++) { + String type = list.item(i).getAttributes().getNamedItem("name").getNodeValue(); + if (types.containsKey(type)) { + foundDups = true; + } + types.put(type, file); + } + } + + if (foundDups) { + return buildErrorMsg(types, v); + } else { + return ""; + } + } catch (ParserConfigurationException | SAXException | IOException e) { + // TODO something useful with this information + return e.getMessage(); + } + } + + private String buildErrorMsg(Multimap<String, String> types, SchemaVersion v) { + StringBuilder errorMsg = + new StringBuilder().append("Duplicates found in version ").append(v.toString()).append(". "); + for (String nodeType : types.keySet()) { + Collection<String> files = types.get(nodeType); + if (files.size() == 1) { + continue; // only record the duplicated ones + } + errorMsg.append(nodeType).append(" has definitions in "); + for (String file : files) { + errorMsg.append(file).append(" "); + } + } + return errorMsg.toString(); + } } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DuplicateNodeDefinitionValidationModule.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DuplicateNodeDefinitionValidationModule.java index 5484adda..4fbf4198 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DuplicateNodeDefinitionValidationModule.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/DuplicateNodeDefinitionValidationModule.java @@ -35,13 +35,13 @@ import org.onap.aai.setup.SchemaVersion; * etc. */ public interface DuplicateNodeDefinitionValidationModule { - /** - * Finds any duplicates according to the defined rules - * - * @param files - the OXM files to use with full directory - * @return empty String if none found, else a String - * with appropriate information about what node types - * were found - */ - String findDuplicates(List<String> files, SchemaVersion v); + /** + * Finds any duplicates according to the defined rules + * + * @param files - the OXM files to use with full directory + * @return empty String if none found, else a String + * with appropriate information about what node types + * were found + */ + String findDuplicates(List<String> files, SchemaVersion v); } diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/NodeValidator.java b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/NodeValidator.java index 38b3a70c..ac9ecbdd 100644 --- a/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/NodeValidator.java +++ b/aai-schema-ingest/src/main/java/org/onap/aai/validation/nodes/NodeValidator.java @@ -33,28 +33,29 @@ import org.springframework.stereotype.Component; public class NodeValidator { private ConfigTranslator translator; - private SchemaErrorStrategy strat; - private DuplicateNodeDefinitionValidationModule dupChecker; + private SchemaErrorStrategy strat; + private DuplicateNodeDefinitionValidationModule dupChecker; - @Autowired - public NodeValidator( ConfigTranslator translator, SchemaErrorStrategy strategy, DuplicateNodeDefinitionValidationModule dupChecker) { + @Autowired + public NodeValidator(ConfigTranslator translator, SchemaErrorStrategy strategy, + DuplicateNodeDefinitionValidationModule dupChecker) { this.translator = translator; - this.strat = strategy; - this.dupChecker = dupChecker; - } - - public boolean validate() { - - for(Entry<SchemaVersion, List<String>> entry : translator.getNodeFiles().entrySet()) { - String result = dupChecker.findDuplicates(entry.getValue(), entry.getKey()); - if (!"".equals(result)) { - strat.notifyOnError(result); - } - } - return strat.isOK(); - } - - public String getErrorMsg() { - return strat.getErrorMsg(); - } + this.strat = strategy; + this.dupChecker = dupChecker; + } + + public boolean validate() { + + for (Entry<SchemaVersion, List<String>> entry : translator.getNodeFiles().entrySet()) { + String result = dupChecker.findDuplicates(entry.getValue(), entry.getKey()); + if (!"".equals(result)) { + strat.notifyOnError(result); + } + } + return strat.isOK(); + } + + public String getErrorMsg() { + return strat.getErrorMsg(); + } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorLocalTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorLocalTest.java index 3ed7bb79..e3826576 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorLocalTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorLocalTest.java @@ -20,18 +20,23 @@ package org.onap.aai.edges; +import static org.junit.Assert.*; + import com.google.common.collect.Multimap; + +import java.util.Collection; + import org.apache.tinkerpop.gremlin.structure.Direction; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.onap.aai.restclient.MockProvider; import org.onap.aai.config.EdgesConfiguration; import org.onap.aai.edges.enums.AAIDirection; import org.onap.aai.edges.enums.MultiplicityRule; import org.onap.aai.edges.exceptions.AmbiguousRuleChoiceException; import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; +import org.onap.aai.restclient.MockProvider; import org.onap.aai.setup.SchemaLocationsBean; import org.onap.aai.setup.SchemaVersion; import org.onap.aai.testutils.TestUtilConfigTranslator; @@ -42,16 +47,14 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.util.Collection; - -import static org.junit.Assert.*; - @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { EdgesConfiguration.class, TestUtilConfigTranslator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration(classes = {EdgesConfiguration.class, TestUtilConfigTranslator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) -//@TestPropertySource(locations = "/schema-service-rest.properties" ) +// @TestPropertySource(locations = "/schema-service-rest.properties" ) @SpringBootTest public class EdgeIngestorLocalTest { @Autowired @@ -70,7 +73,7 @@ public class EdgeIngestorLocalTest { assertTrue(2 == results.get("bar|foo").size()); boolean seenLabel1 = false; boolean seenLabel2 = false; - for(EdgeRule r : results.get("bar|foo")) { + for (EdgeRule r : results.get("bar|foo")) { if ("eats".equals(r.getLabel())) { seenLabel1 = true; } @@ -107,16 +110,17 @@ public class EdgeIngestorLocalTest { @Test public void getRulesFlippedTypesTest() throws EdgeRuleNotFoundException { - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface", "logical-link").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = + new EdgeRuleQuery.Builder("l-interface", "logical-link").version(new SchemaVersion("v11")).build(); Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); assertTrue(results.size() == 3); for (EdgeRule r : results.get("l-interface|logical-link")) { - if ("org.onap.relationships.inventory.Source".equals(r.getLabel()) || - "org.onap.relationships.inventory.Destination".equals(r.getLabel())) { - //these are defined with from=logical-link, to=l-interface, so they must be flipped + if ("org.onap.relationships.inventory.Source".equals(r.getLabel()) + || "org.onap.relationships.inventory.Destination".equals(r.getLabel())) { + // these are defined with from=logical-link, to=l-interface, so they must be flipped assertTrue(Direction.IN.equals(r.getDirection())); } else if ("tosca.relationships.network.LinksTo".equals(r.getLabel())) { - //this is defined with from=l-interface, to=logical-link, so it shouldn't be flipped + // this is defined with from=l-interface, to=logical-link, so it shouldn't be flipped assertTrue(Direction.OUT.equals(r.getDirection())); } else { fail("how did you get here"); @@ -126,19 +130,19 @@ public class EdgeIngestorLocalTest { @Test public void fromToSameFlipTests() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { - //getRules, setting from and to - EdgeRuleQuery q = new EdgeRuleQuery.Builder("bloop","bloop").version(new SchemaVersion("v11")).build(); + // getRules, setting from and to + EdgeRuleQuery q = new EdgeRuleQuery.Builder("bloop", "bloop").version(new SchemaVersion("v11")).build(); Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); assertTrue(results.size() == 1); for (EdgeRule r : results.get("bloop|bloop")) { assertTrue(Direction.IN.equals(r.getDirection())); } - //getRule, setting just from + // getRule, setting just from EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("bloop").version(new SchemaVersion("v11")).build(); assertTrue(Direction.IN.equals(edgeIngestor.getRule(q2).getDirection())); - //getChildRules + // getChildRules Multimap<String, EdgeRule> child = edgeIngestor.getChildRules("bloop", new SchemaVersion("v11")); assertTrue(child.size() == 1); for (EdgeRule r : child.get("bloop|bloop")) { @@ -186,7 +190,7 @@ public class EdgeIngestorLocalTest { assertTrue("parent".equals(result.getFrom())); assertTrue("notation".equals(result.getTo())); assertTrue("has".equals(result.getLabel())); - //direction flipped to match input order per old EdgeRules.java API + // direction flipped to match input order per old EdgeRules.java API assertTrue(Direction.IN.equals(result.getDirection())); assertTrue(MultiplicityRule.MANY2MANY.equals(result.getMultiplicityRule())); assertTrue(AAIDirection.OUT.toString().equals(result.getContains())); @@ -195,44 +199,47 @@ public class EdgeIngestorLocalTest { assertTrue("parent contains notation".equals(result.getDescription())); } -// @Test -// public void getRuleWithDefaultTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { -// -// EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","logical-link").version(new SchemaVersion("v11")).build(); -// EdgeRule res = edgeIngestor.getRule(q); -// assertTrue(res.isDefault()); -// assertTrue("tosca.relationships.network.LinksTo".equals(res.getLabel())); -// } -// -// @Test -// public void getRuleWithNonDefault() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { -// EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","logical-link").label("org.onap.relationships.inventory.Source").version(new SchemaVersion("v11")).build(); -// EdgeRule res = edgeIngestor.getRule(q); -// assertFalse(res.isDefault()); -// assertTrue("org.onap.relationships.inventory.Source".equals(res.getLabel())); -// } + // @Test + // public void getRuleWithDefaultTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { + // + // EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","logical-link").version(new + // SchemaVersion("v11")).build(); + // EdgeRule res = edgeIngestor.getRule(q); + // assertTrue(res.isDefault()); + // assertTrue("tosca.relationships.network.LinksTo".equals(res.getLabel())); + // } + // + // @Test + // public void getRuleWithNonDefault() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { + // EdgeRuleQuery q = new + // EdgeRuleQuery.Builder("l-interface","logical-link").label("org.onap.relationships.inventory.Source").version(new + // SchemaVersion("v11")).build(); + // EdgeRule res = edgeIngestor.getRule(q); + // assertFalse(res.isDefault()); + // assertTrue("org.onap.relationships.inventory.Source".equals(res.getLabel())); + // } @Test public void getRuleNoneFoundTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { thrown.expect(EdgeRuleNotFoundException.class); thrown.expectMessage("No rule found for"); - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","nonexistent").build(); + EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface", "nonexistent").build(); edgeIngestor.getRule(q); } -// @Test -// public void getRuleTooManyPairsTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { -// thrown.expect(AmbiguousRuleChoiceException.class); -// thrown.expectMessage("No way to select single rule from these pairs:"); -// EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").build(); -// edgeIngestor.getRule(q); -// } + // @Test + // public void getRuleTooManyPairsTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { + // thrown.expect(AmbiguousRuleChoiceException.class); + // thrown.expectMessage("No way to select single rule from these pairs:"); + // EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").build(); + // edgeIngestor.getRule(q); + // } @Test public void getRuleAmbiguousDefaultTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { thrown.expect(AmbiguousRuleChoiceException.class); thrown.expectMessage("Multiple defaults found."); - EdgeRuleQuery q = new EdgeRuleQuery.Builder("seed","plant").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = new EdgeRuleQuery.Builder("seed", "plant").version(new SchemaVersion("v11")).build(); edgeIngestor.getRule(q); } @@ -244,19 +251,20 @@ public class EdgeIngestorLocalTest { edgeIngestor.getRule(q); } -// @Test -// public void hasRuleTest() { -// assertTrue(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").version(new SchemaVersion("v11")).build())); -// assertFalse(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").build())); -// } -// -// @Test -// public void getCousinRulesTest() { -// Multimap<String, EdgeRule> results = edgeIngestor.getCousinRules("dog"); -// assertTrue(results.size() == 2); -// assertTrue(results.containsKey("dog|puppy")); -// assertTrue(results.containsKey("dog|foo")); -// } + // @Test + // public void hasRuleTest() { + // assertTrue(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").version(new + // SchemaVersion("v11")).build())); + // assertFalse(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").build())); + // } + // + // @Test + // public void getCousinRulesTest() { + // Multimap<String, EdgeRule> results = edgeIngestor.getCousinRules("dog"); + // assertTrue(results.size() == 2); + // assertTrue(results.containsKey("dog|puppy")); + // assertTrue(results.containsKey("dog|foo")); + // } @Test public void getCousinRulesWithVersionTest() { @@ -272,13 +280,13 @@ public class EdgeIngestorLocalTest { assertTrue(results.isEmpty()); } -// @Test -// public void hasCousinTest() { -// assertTrue(edgeIngestor.hasCousinRule("foo")); -// assertTrue(edgeIngestor.hasCousinRule("foo", new SchemaVersion("v10"))); -// assertFalse(edgeIngestor.hasCousinRule("parent")); -// assertFalse(edgeIngestor.hasCousinRule("foo", new SchemaVersion("v11"))); -// } + // @Test + // public void hasCousinTest() { + // assertTrue(edgeIngestor.hasCousinRule("foo")); + // assertTrue(edgeIngestor.hasCousinRule("foo", new SchemaVersion("v10"))); + // assertFalse(edgeIngestor.hasCousinRule("parent")); + // assertFalse(edgeIngestor.hasCousinRule("foo", new SchemaVersion("v11"))); + // } @Test public void getChildRulesTest() { @@ -306,13 +314,13 @@ public class EdgeIngestorLocalTest { assertTrue(results.isEmpty()); } -// @Test -// public void hasChildTest() { -// assertTrue(edgeIngestor.hasChildRule("foo")); -// assertTrue(edgeIngestor.hasChildRule("foo", new SchemaVersion("v10"))); -// assertFalse(edgeIngestor.hasChildRule("puppy")); -// assertFalse(edgeIngestor.hasChildRule("foo", new SchemaVersion("v11"))); -// } + // @Test + // public void hasChildTest() { + // assertTrue(edgeIngestor.hasChildRule("foo")); + // assertTrue(edgeIngestor.hasChildRule("foo", new SchemaVersion("v10"))); + // assertFalse(edgeIngestor.hasChildRule("puppy")); + // assertFalse(edgeIngestor.hasChildRule("foo", new SchemaVersion("v11"))); + // } @Test public void getParentRulesTest() { @@ -347,11 +355,11 @@ public class EdgeIngestorLocalTest { assertFalse(edgeIngestor.hasParentRule("foo", new SchemaVersion("v11"))); } -// @Test -// public void getAllCurrentRulesTest() throws EdgeRuleNotFoundException { -// Multimap<String, EdgeRule> res = edgeIngestor.getAllCurrentRules(); -// assertTrue(res.size() == 18); -// } + // @Test + // public void getAllCurrentRulesTest() throws EdgeRuleNotFoundException { + // Multimap<String, EdgeRule> res = edgeIngestor.getAllCurrentRules(); + // assertTrue(res.size() == 18); + // } @Test public void getAllRulesTest() throws EdgeRuleNotFoundException { diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorTest.java index ab83e196..8fdce62b 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorTest.java @@ -22,6 +22,8 @@ package org.onap.aai.edges; import static org.junit.Assert.*; +import com.google.common.collect.Multimap; + import java.util.Collection; import org.apache.tinkerpop.gremlin.structure.Direction; @@ -30,13 +32,13 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.onap.aai.restclient.MockProvider; -import org.onap.aai.restclient.MockRestClient; import org.onap.aai.config.EdgesConfiguration; import org.onap.aai.edges.enums.AAIDirection; import org.onap.aai.edges.enums.MultiplicityRule; import org.onap.aai.edges.exceptions.AmbiguousRuleChoiceException; import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; +import org.onap.aai.restclient.MockProvider; +import org.onap.aai.restclient.MockRestClient; import org.onap.aai.setup.SchemaVersion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -45,11 +47,10 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.google.common.collect.Multimap; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {MockProvider.class, EdgesConfiguration.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test.properties" }) +@TestPropertySource( + properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test.properties"}) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) @SpringBootTest @@ -74,7 +75,7 @@ public class EdgeIngestorTest { assertTrue(2 == results.get("bar|foo").size()); boolean seenLabel1 = false; boolean seenLabel2 = false; - for(EdgeRule r : results.get("bar|foo")) { + for (EdgeRule r : results.get("bar|foo")) { if ("eats".equals(r.getLabel())) { seenLabel1 = true; } @@ -111,16 +112,17 @@ public class EdgeIngestorTest { @Test public void getRulesFlippedTypesTest() throws EdgeRuleNotFoundException { - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface", "logical-link").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = + new EdgeRuleQuery.Builder("l-interface", "logical-link").version(new SchemaVersion("v11")).build(); Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); assertTrue(results.size() == 3); for (EdgeRule r : results.get("l-interface|logical-link")) { - if ("org.onap.relationships.inventory.Source".equals(r.getLabel()) || - "org.onap.relationships.inventory.Destination".equals(r.getLabel())) { - //these are defined with from=logical-link, to=l-interface, so they must be flipped + if ("org.onap.relationships.inventory.Source".equals(r.getLabel()) + || "org.onap.relationships.inventory.Destination".equals(r.getLabel())) { + // these are defined with from=logical-link, to=l-interface, so they must be flipped assertTrue(Direction.IN.equals(r.getDirection())); } else if ("tosca.relationships.network.LinksTo".equals(r.getLabel())) { - //this is defined with from=l-interface, to=logical-link, so it shouldn't be flipped + // this is defined with from=l-interface, to=logical-link, so it shouldn't be flipped assertTrue(Direction.OUT.equals(r.getDirection())); } else { fail("how did you get here"); @@ -130,19 +132,19 @@ public class EdgeIngestorTest { @Test public void fromToSameFlipTests() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { - //getRules, setting from and to - EdgeRuleQuery q = new EdgeRuleQuery.Builder("bloop","bloop").version(new SchemaVersion("v11")).build(); + // getRules, setting from and to + EdgeRuleQuery q = new EdgeRuleQuery.Builder("bloop", "bloop").version(new SchemaVersion("v11")).build(); Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); assertTrue(results.size() == 1); for (EdgeRule r : results.get("bloop|bloop")) { assertTrue(Direction.IN.equals(r.getDirection())); } - //getRule, setting just from + // getRule, setting just from EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("bloop").version(new SchemaVersion("v11")).build(); assertTrue(Direction.IN.equals(edgeIngestor.getRule(q2).getDirection())); - //getChildRules + // getChildRules Multimap<String, EdgeRule> child = edgeIngestor.getChildRules("bloop", new SchemaVersion("v11")); assertTrue(child.size() == 1); for (EdgeRule r : child.get("bloop|bloop")) { @@ -182,25 +184,24 @@ public class EdgeIngestorTest { assertTrue(AAIDirection.NONE.toString().equals(result.getPreventDelete())); assertTrue("parent contains notation".equals(result.getDescription())); } -// @Test -// public void getRuleSimpleTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { -// EdgeRuleQuery q = new EdgeRuleQuery.Builder("parent", "notation").build(); -// Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); -// assertTrue(results.size() == 1); -// // EdgeRule result = edgeIngestor.getRule(q); -// for (EdgeRule result : results.get("parent|notation")) { -// assertTrue("parent".equals(result.getFrom())); -// assertTrue("notation".equals(result.getTo())); -// assertTrue("has".equals(result.getLabel())); -// assertTrue(Direction.OUT.equals(result.getDirection())); -// assertTrue(MultiplicityRule.MANY2MANY.equals(result.getMultiplicityRule())); -// assertTrue(AAIDirection.OUT.toString().equals(result.getContains())); -// assertTrue(AAIDirection.NONE.toString().equals(result.getDeleteOtherV())); -// assertTrue(AAIDirection.NONE.toString().equals(result.getPreventDelete())); -// assertTrue("parent contains notation".equals(result.getDescription())); -// } -// } - + // @Test + // public void getRuleSimpleTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { + // EdgeRuleQuery q = new EdgeRuleQuery.Builder("parent", "notation").build(); + // Multimap<String, EdgeRule> results = edgeIngestor.getRules(q); + // assertTrue(results.size() == 1); + // // EdgeRule result = edgeIngestor.getRule(q); + // for (EdgeRule result : results.get("parent|notation")) { + // assertTrue("parent".equals(result.getFrom())); + // assertTrue("notation".equals(result.getTo())); + // assertTrue("has".equals(result.getLabel())); + // assertTrue(Direction.OUT.equals(result.getDirection())); + // assertTrue(MultiplicityRule.MANY2MANY.equals(result.getMultiplicityRule())); + // assertTrue(AAIDirection.OUT.toString().equals(result.getContains())); + // assertTrue(AAIDirection.NONE.toString().equals(result.getDeleteOtherV())); + // assertTrue(AAIDirection.NONE.toString().equals(result.getPreventDelete())); + // assertTrue("parent contains notation".equals(result.getDescription())); + // } + // } @Test public void getRuleFlippedTypesTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { @@ -209,7 +210,7 @@ public class EdgeIngestorTest { assertTrue("parent".equals(result.getFrom())); assertTrue("notation".equals(result.getTo())); assertTrue("has".equals(result.getLabel())); - //direction flipped to match input order per old EdgeRules.java API + // direction flipped to match input order per old EdgeRules.java API assertTrue(Direction.IN.equals(result.getDirection())); assertTrue(MultiplicityRule.MANY2MANY.equals(result.getMultiplicityRule())); assertTrue(AAIDirection.OUT.toString().equals(result.getContains())); @@ -221,7 +222,8 @@ public class EdgeIngestorTest { @Test public void getRuleWithDefaultTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","logical-link").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = + new EdgeRuleQuery.Builder("l-interface", "logical-link").version(new SchemaVersion("v11")).build(); EdgeRule res = edgeIngestor.getRule(q); assertTrue(res.isDefault()); assertTrue("tosca.relationships.network.LinksTo".equals(res.getLabel())); @@ -229,7 +231,8 @@ public class EdgeIngestorTest { @Test public void getRuleWithNonDefault() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","logical-link").label("org.onap.relationships.inventory.Source").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface", "logical-link") + .label("org.onap.relationships.inventory.Source").version(new SchemaVersion("v11")).build(); EdgeRule res = edgeIngestor.getRule(q); assertFalse(res.isDefault()); assertTrue("org.onap.relationships.inventory.Source".equals(res.getLabel())); @@ -239,7 +242,7 @@ public class EdgeIngestorTest { public void getRuleNoneFoundTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { thrown.expect(EdgeRuleNotFoundException.class); thrown.expectMessage("No rule found for"); - EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface","nonexistent").build(); + EdgeRuleQuery q = new EdgeRuleQuery.Builder("l-interface", "nonexistent").build(); edgeIngestor.getRule(q); } @@ -255,7 +258,7 @@ public class EdgeIngestorTest { public void getRuleAmbiguousDefaultTest() throws EdgeRuleNotFoundException, AmbiguousRuleChoiceException { thrown.expect(AmbiguousRuleChoiceException.class); thrown.expectMessage("Multiple defaults found."); - EdgeRuleQuery q = new EdgeRuleQuery.Builder("seed","plant").version(new SchemaVersion("v11")).build(); + EdgeRuleQuery q = new EdgeRuleQuery.Builder("seed", "plant").version(new SchemaVersion("v11")).build(); edgeIngestor.getRule(q); } @@ -269,10 +272,12 @@ public class EdgeIngestorTest { @Test public void hasRuleTest() { - assertTrue(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").version(new SchemaVersion("v11")).build())); - assertFalse(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").version(new SchemaVersion("v10")).build())); + assertTrue(edgeIngestor + .hasRule(new EdgeRuleQuery.Builder("l-interface").version(new SchemaVersion("v11")).build())); + assertFalse(edgeIngestor + .hasRule(new EdgeRuleQuery.Builder("l-interface").version(new SchemaVersion("v10")).build())); assertTrue(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").build())); -// assertFalse(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").build())); + // assertFalse(edgeIngestor.hasRule(new EdgeRuleQuery.Builder("l-interface").build())); } @Test diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorWiringTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorWiringTest.java index 395c9cc7..0a6a3f07 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorWiringTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeIngestorWiringTest.java @@ -22,6 +22,8 @@ package org.onap.aai.edges; import static org.junit.Assert.*; +import com.google.common.collect.Multimap; + import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -29,7 +31,6 @@ import org.onap.aai.config.EdgesConfiguration; import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; import org.onap.aai.setup.SchemaVersion; import org.onap.aai.setup.SchemaVersionsBean; - import org.onap.aai.testutils.ConfigTranslatorForWiringTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,20 +38,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.google.common.collect.Multimap; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {EdgesConfiguration.class, ConfigTranslatorForWiringTest.class}) -@TestPropertySource(properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class EdgeIngestorWiringTest { @Autowired EdgeIngestor ei; - + @Test public void test() throws EdgeRuleNotFoundException { assertNotNull(ei); - EdgeRuleQuery q = new EdgeRuleQuery.Builder("quux", "foo").label("dancesWith").version(new SchemaVersion("v10")).build(); + EdgeRuleQuery q = + new EdgeRuleQuery.Builder("quux", "foo").label("dancesWith").version(new SchemaVersion("v10")).build(); Multimap<String, EdgeRule> results = ei.getRules(q); assertTrue(results.size() == 1); assertTrue(results.containsKey("foo|quux")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleQueryTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleQueryTest.java index 27c8d6e1..c1894f00 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleQueryTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleQueryTest.java @@ -22,6 +22,9 @@ package org.onap.aai.edges; import static org.junit.Assert.*; +import com.jayway.jsonpath.DocumentContext; +import com.jayway.jsonpath.JsonPath; + import java.io.InputStream; import java.util.List; import java.util.Scanner; @@ -30,14 +33,10 @@ import org.junit.Before; import org.junit.Test; import org.onap.aai.edges.enums.EdgeType; -import com.jayway.jsonpath.DocumentContext; -import com.jayway.jsonpath.JsonPath; - - public class EdgeRuleQueryTest { private DocumentContext testRules; private String readStart = "$.rules.[?]"; - + /* **** DATA SETUP **** */ @Before public void setup() { @@ -46,85 +45,85 @@ public class EdgeRuleQueryTest { Scanner scanner = new Scanner(is); String json = scanner.useDelimiter("\\Z").next(); scanner.close(); - + this.testRules = JsonPath.parse(json); } /* **** TESTS **** */ @Test public void testFromToSingle() { - //rule defined from quux to foo + // rule defined from quux to foo EdgeRuleQuery q = new EdgeRuleQuery.Builder("quux", "foo").build(); List<Object> results = testRules.read(readStart, q.getFilter()); - + assertTrue(results.size() == 1); } @Test public void testToFromSingle() { - //rule defined from quux to foo, this is flipped + // rule defined from quux to foo, this is flipped EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo", "quux").build(); List<Object> results = testRules.read(readStart, q.getFilter()); - + assertTrue(results.size() == 1); } - + @Test public void testFromToMultiple() { - //rules have two from foo to bar + // rules have two from foo to bar EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo", "bar").build(); List<Object> results = testRules.read(readStart, q.getFilter()); assertTrue(results.size() == 2); } - + @Test public void testToFromMultiple() { - //rules have two from foo to bar + // rules have two from foo to bar EdgeRuleQuery q = new EdgeRuleQuery.Builder("bar", "foo").build(); List<Object> results = testRules.read(readStart, q.getFilter()); - + assertTrue(results.size() == 2); assertTrue(!(results.get(0).toString().equals(results.get(1).toString()))); } - + @Test public void testJustFrom() { - //there are 4 foo rules (foo>bar, foo>bar, foo>baz, quux>foo) + // there are 4 foo rules (foo>bar, foo>bar, foo>baz, quux>foo) EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").build(); List<Object> results = testRules.read(readStart, q.getFilter()); assertTrue(results.size() == 4); - - //there are 2 bar rules + + // there are 2 bar rules EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("bar").build(); List<Object> results2 = testRules.read(readStart, q2.getFilter()); assertTrue(results2.size() == 2); } - + @Test public void testWithLabel() { - //there are foo >eats> bar and foo >eatz> bar - EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo","bar").label("eatz").build(); + // there are foo >eats> bar and foo >eatz> bar + EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo", "bar").label("eatz").build(); List<Object> results = testRules.read(readStart, q.getFilter()); assertTrue(results.size() == 1); assertTrue(results.get(0).toString().contains("eatz")); } - + @Test public void testCousin() { EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").edgeType(EdgeType.COUSIN).build(); List<Object> results = testRules.read(readStart, q.getFilter()); assertTrue(results.size() == 2); - + EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("foo", "bar").edgeType(EdgeType.COUSIN).label("eats").build(); List<Object> results2 = testRules.read(readStart, q2.getFilter()); assertTrue(results2.size() == 1); assertTrue(results2.get(0).toString().contains("eats")); - - EdgeRuleQuery q3 = new EdgeRuleQuery.Builder("foo","quux").edgeType(EdgeType.COUSIN).build(); + + EdgeRuleQuery q3 = new EdgeRuleQuery.Builder("foo", "quux").edgeType(EdgeType.COUSIN).build(); List<Object> results3 = testRules.read(readStart, q3.getFilter()); assertTrue(results3.isEmpty()); } - + @Test public void testTree() { EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").edgeType(EdgeType.TREE).build(); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleTest.java index 5abae6b7..3fdabfd1 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/EdgeRuleTest.java @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.edges; import static org.junit.Assert.*; @@ -44,12 +45,12 @@ public class EdgeRuleTest { rule.put("private", "true"); EdgeRule r = new EdgeRule(rule); - + r.flipDirection(); assertTrue(Direction.IN.equals(r.getDirection())); r.flipDirection(); assertTrue(Direction.OUT.equals(r.getDirection())); - + rule.put("direction", "BOTH"); EdgeRule r2 = new EdgeRule(rule); r2.flipDirection(); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/JsonIngestorTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/JsonIngestorTest.java index 4475b3f2..c67be641 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/JsonIngestorTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/JsonIngestorTest.java @@ -20,17 +20,18 @@ package org.onap.aai.edges; +import static com.jayway.jsonpath.Criteria.where; +import static com.jayway.jsonpath.Filter.filter; import static org.junit.Assert.*; +import com.jayway.jsonpath.DocumentContext; +import com.jayway.jsonpath.Filter; + import java.util.*; + import org.junit.Test; import org.onap.aai.setup.SchemaVersion; -import com.jayway.jsonpath.DocumentContext; -import com.jayway.jsonpath.Filter; -import static com.jayway.jsonpath.Criteria.where; -import static com.jayway.jsonpath.Filter.filter; - public class JsonIngestorTest { private SchemaVersion LATEST = new SchemaVersion("v14"); @@ -39,34 +40,34 @@ public class JsonIngestorTest { @Test public void test() { - //setup + // setup List<String> files = new ArrayList<>(); files.add("src/test/resources/edgeRules/test.json"); files.add("src/test/resources/edgeRules/test2.json"); files.add("src/test/resources/edgeRules/otherTestRules.json"); Map<SchemaVersion, List<String>> input = new TreeMap<>(); input.put(LATEST, files); - + List<String> files2 = new ArrayList<>(); files2.add("src/test/resources/edgeRules/test.json"); input.put(V10, files2); - + List<String> files3 = new ArrayList<>(); files3.add("src/test/resources/edgeRules/test3.json"); files3.add("src/test/resources/edgeRules/defaultEdgesTest.json"); input.put(V11, files3); - - //test + + // test JsonIngestor ji = new JsonIngestor(); Map<SchemaVersion, List<DocumentContext>> results = ji.ingest(input); - + assertTrue(results.entrySet().size() == 3); assertTrue(results.get(LATEST).size() == 3); assertTrue(results.get(V11).size() == 2); assertTrue(results.get(V10).size() == 1); - + Filter f = filter(where("from").is("foo").and("contains-other-v").is("NONE")); - List<Map<String, String>> filterRes = results.get(V10).get(0).read("$.rules.[?]",f); + List<Map<String, String>> filterRes = results.get(V10).get(0).read("$.rules.[?]", f); assertTrue(filterRes.size() == 2); } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/edges/TypeAlphabetizerTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/edges/TypeAlphabetizerTest.java index 3f49428f..4e3d61dd 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/edges/TypeAlphabetizerTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/edges/TypeAlphabetizerTest.java @@ -21,6 +21,7 @@ package org.onap.aai.edges; import static org.junit.Assert.*; + import org.junit.Test; public class TypeAlphabetizerTest { diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorLocalTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorLocalTest.java index cec3f9d8..dca21f2d 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorLocalTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorLocalTest.java @@ -20,14 +20,26 @@ package org.onap.aai.nodes; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javax.xml.bind.SchemaOutputResolver; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + import org.eclipse.persistence.dynamic.DynamicEntity; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.onap.aai.restclient.MockProvider; import org.onap.aai.config.NodesConfiguration; +import org.onap.aai.restclient.MockProvider; import org.onap.aai.setup.SchemaVersion; import org.onap.aai.testutils.TestUtilConfigTranslator; import org.springframework.beans.factory.annotation.Autowired; @@ -39,19 +51,10 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringRunner; import org.w3c.dom.Document; -import javax.xml.bind.SchemaOutputResolver; -import javax.xml.transform.*; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.*; - @RunWith(SpringRunner.class) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local-node.properties" }) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local-node.properties"}) @ContextConfiguration(classes = {TestUtilConfigTranslator.class, NodesConfiguration.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) @@ -59,8 +62,8 @@ import static org.junit.Assert.*; @SpringBootTest public class NodeIngestorLocalTest { - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown + // set thrown.expect to whatever a specific test needs + // this establishes a default of expecting no exceptions to be thrown @Rule public ExpectedException thrown = ExpectedException.none(); @Autowired @@ -75,21 +78,20 @@ public class NodeIngestorLocalTest { transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); - transformer.transform(new DOMSource(doc), - new StreamResult(new OutputStreamWriter(out, "UTF-8"))); + transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8"))); } @Test public void testGetContextForVersion11() { DynamicJAXBContext ctx10 = nodeIngestor.getContextForVersion(new SchemaVersion("v10")); - //should work bc Foo is valid in test_network_v10 schema + // should work bc Foo is valid in test_network_v10 schema DynamicEntity foo10 = ctx10.newDynamicEntity("Foo"); foo10.set("fooId", "bar"); assertTrue("bar".equals(foo10.get("fooId"))); - //should work bc Bar is valid in test_business_v10 schema + // should work bc Bar is valid in test_business_v10 schema DynamicEntity bar10 = ctx10.newDynamicEntity("Bar"); bar10.set("barId", "bar2"); assertTrue("bar2".equals(bar10.get("barId"))); @@ -98,7 +100,7 @@ public class NodeIngestorLocalTest { DynamicJAXBContext ctx11 = nodeIngestor.getContextForVersion(new SchemaVersion("v11")); - //should work bc Foo.quantity is valid in test_network_v11 schema + // should work bc Foo.quantity is valid in test_network_v11 schema DynamicEntity foo11 = ctx11.newDynamicEntity("Foo"); foo11.set("quantity", "12"); assertTrue("12".equals(foo11.get("quantity"))); @@ -109,9 +111,8 @@ public class NodeIngestorLocalTest { XSDOutputResolver outputResolver11 = new XSDOutputResolver(); ctx11.generateSchema(outputResolver11); - thrown.expect(IllegalArgumentException.class); - //should fail bc Quux not in v10 test schema + // should fail bc Quux not in v10 test schema ctx10.newDynamicEntity("Quux"); } @@ -157,8 +158,7 @@ public class NodeIngestorLocalTest { private class XSDOutputResolver extends SchemaOutputResolver { @Override - public Result createOutput(String namespaceUri, String suggestedFileName) - throws IOException { + public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException { // create new file // create stream result diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorTest.java index ec529f9d..7035affd 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorTest.java @@ -20,14 +20,26 @@ package org.onap.aai.nodes; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javax.xml.bind.SchemaOutputResolver; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + import org.eclipse.persistence.dynamic.DynamicEntity; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.onap.aai.restclient.MockProvider; import org.onap.aai.config.NodesConfiguration; +import org.onap.aai.restclient.MockProvider; import org.onap.aai.setup.SchemaVersion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,72 +49,60 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.w3c.dom.Document; -import javax.xml.bind.SchemaOutputResolver; -import javax.xml.transform.*; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.*; - - @RunWith(SpringJUnit4ClassRunner.class) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties" }) +@TestPropertySource( + properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties"}) -@ContextConfiguration(classes = { MockProvider.class, NodesConfiguration.class}) +@ContextConfiguration(classes = {MockProvider.class, NodesConfiguration.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) @SpringBootTest public class NodeIngestorTest { @Autowired NodeIngestor nodeIngestor; - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown + // set thrown.expect to whatever a specific test needs + // this establishes a default of expecting no exceptions to be thrown @Rule public ExpectedException thrown = ExpectedException.none(); - + @Test public void testGetContextForVersion() { DynamicJAXBContext ctx10 = nodeIngestor.getContextForVersion(new SchemaVersion("v10")); - - //should work bc Foo is valid in test_network_v10 schema + + // should work bc Foo is valid in test_network_v10 schema DynamicEntity foo10 = ctx10.newDynamicEntity("Foo"); - foo10.set("fooId","bar"); + foo10.set("fooId", "bar"); assertTrue("bar".equals(foo10.get("fooId"))); - - //should work bc Bar is valid in test_business_v10 schema + + // should work bc Bar is valid in test_business_v10 schema DynamicEntity bar10 = ctx10.newDynamicEntity("Bar"); - bar10.set("barId","bar2"); + bar10.set("barId", "bar2"); assertTrue("bar2".equals(bar10.get("barId"))); XSDOutputResolver outputResolver10 = new XSDOutputResolver(); ctx10.generateSchema(outputResolver10); - + DynamicJAXBContext ctx11 = nodeIngestor.getContextForVersion(new SchemaVersion("v11")); - - //should work bc Foo.quantity is valid in test_network_v11 schema + + // should work bc Foo.quantity is valid in test_network_v11 schema DynamicEntity foo11 = ctx11.newDynamicEntity("Foo"); - foo11.set("quantity","12"); + foo11.set("quantity", "12"); assertTrue("12".equals(foo11.get("quantity"))); - + DynamicEntity quux11 = ctx11.newDynamicEntity("Quux"); - quux11.set("qManagerName","some guy"); + quux11.set("qManagerName", "some guy"); assertTrue("some guy".equals(quux11.get("qManagerName"))); XSDOutputResolver outputResolver11 = new XSDOutputResolver(); ctx11.generateSchema(outputResolver11); - thrown.expect(IllegalArgumentException.class); - //should fail bc Quux not in v10 test schema + // should fail bc Quux not in v10 test schema ctx10.newDynamicEntity("Quux"); } @Test public void testHasNodeType() { - //TODO remove for integration tests + // TODO remove for integration tests assertTrue(nodeIngestor.hasNodeType("foo", new SchemaVersion("v11"))); assertTrue(nodeIngestor.hasNodeType("quux", new SchemaVersion("v11"))); assertFalse(nodeIngestor.hasNodeType("quux", new SchemaVersion("v10"))); @@ -110,7 +110,7 @@ public class NodeIngestorTest { @Test public void testGetVersionFromClassName() { - assertEquals(nodeIngestor.getVersionFromClassName("inventory.aai.onap.org.v13.Evc"),new SchemaVersion("v13")); + assertEquals(nodeIngestor.getVersionFromClassName("inventory.aai.onap.org.v13.Evc"), new SchemaVersion("v13")); } @@ -123,24 +123,23 @@ public class NodeIngestorTest { @Test public void testGetObjectsInVersion() { assertEquals(nodeIngestor.getObjectsInVersion(new SchemaVersion("v13")).size(), 148); - //comment for IntegrationTest - //assertEquals(nodeIngestor.getObjectsInVersion(new SchemaVersion("v13")).size(), 229); + // comment for IntegrationTest + // assertEquals(nodeIngestor.getObjectsInVersion(new SchemaVersion("v13")).size(), 229); } - + @Test public void testCombinedSchema() throws TransformerException, IOException { DynamicJAXBContext ctx13 = nodeIngestor.getContextForVersion(new SchemaVersion("v13")); XSDOutputResolver outputResolver13 = new XSDOutputResolver(); ctx13.generateSchema(outputResolver13); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - printDocument(nodeIngestor.getSchema(new SchemaVersion("v13")),buffer); + printDocument(nodeIngestor.getSchema(new SchemaVersion("v13")), buffer); String content = new String(Files.readAllBytes(Paths.get("src/test/resources/forWiringTests/aai_oxm_v13.xml"))); content = content.replaceAll("\\s+", ""); String expected = buffer.toString().replaceAll("\\s+", ""); - - assertThat("OXM:\n"+expected,expected, is(content)); + assertThat("OXM:\n" + expected, expected, is(content)); } public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException { @@ -152,30 +151,26 @@ public class NodeIngestorTest { transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); - transformer.transform(new DOMSource(doc), - new StreamResult(new OutputStreamWriter(out, "UTF-8"))); + transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8"))); } - + private class XSDOutputResolver extends SchemaOutputResolver { - @Override - public Result createOutput(String namespaceUri, String suggestedFileName) - throws IOException { - - // create new file - // create stream result - File temp = File.createTempFile("schema", ".xsd"); - StreamResult result = new StreamResult(temp); - System.out.println("Schema file: "+temp.getAbsolutePath()); - - // set system id - result.setSystemId(temp.toURI().toURL().toString()); - - // return result - return result; - } - } + @Override + public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException { -} + // create new file + // create stream result + File temp = File.createTempFile("schema", ".xsd"); + StreamResult result = new StreamResult(temp); + System.out.println("Schema file: " + temp.getAbsolutePath()); + // set system id + result.setSystemId(temp.toURI().toURL().toString()); + // return result + return result; + } + } + +} diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorWiringTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorWiringTest.java index 0aaa8802..d2412c08 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorWiringTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/nodes/NodeIngestorWiringTest.java @@ -30,29 +30,30 @@ import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.setup.SchemaVersion; import org.onap.aai.setup.SchemaVersionsBean; - import org.onap.aai.testutils.ConfigTranslatorForWiringTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ConfigTranslatorForWiringTest.class, NodesConfiguration.class}) -@TestPropertySource(properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local-node.properties"}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local-node.properties"}) @SpringBootTest public class NodeIngestorWiringTest { @Autowired NodeIngestor ni; - + @Test public void test() { DynamicJAXBContext ctx10 = ni.getContextForVersion(new SchemaVersion("v10")); - - //should work bc Bar is valid in test_business_v10 schema + + // should work bc Bar is valid in test_business_v10 schema DynamicEntity bar10 = ctx10.newDynamicEntity("Bar"); - bar10.set("barId","bar2"); + bar10.set("barId", "bar2"); assertTrue("bar2".equals(bar10.get("barId"))); } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockProvider.java b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockProvider.java index 6f8b7367..f0fed324 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockProvider.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockProvider.java @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; import org.springframework.beans.factory.annotation.Autowired; @@ -27,8 +28,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration -@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound=true) -@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound=true) +@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true) +@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true) public class MockProvider { @Value("${mock.filename}") @@ -49,10 +50,9 @@ public class MockProvider { }; } - @Bean(name="restClient") + @Bean(name = "restClient") @ConditionalOnProperty(name = "schema.service.client", havingValue = "mock-no-auth") public RestClient getSchemaServiceNoAuthClient() { return new MockRestClient(fileName); } } - diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockRestClient.java b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockRestClient.java index 87e4bfe8..52e6364b 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockRestClient.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/MockRestClient.java @@ -17,20 +17,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; +import static org.junit.Assert.assertNotNull; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; + import com.att.eelf.configuration.EELFLogger; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import org.apache.commons.io.IOUtils; -import org.springframework.core.io.Resource; -import org.springframework.http.*; -import org.springframework.stereotype.Component; -import org.springframework.test.web.client.ExpectedCount; -import org.springframework.test.web.client.MockRestServiceServer; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; import java.io.IOException; import java.io.InputStream; @@ -40,33 +37,40 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import static org.junit.Assert.assertNotNull; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; -import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; +import org.apache.commons.io.IOUtils; +import org.springframework.core.io.Resource; +import org.springframework.http.*; +import org.springframework.stereotype.Component; +import org.springframework.test.web.client.ExpectedCount; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; @Component public class MockRestClient extends RestClient { -private RestTemplate restTemplate; - private MockRestServiceServer mockRestServiceServer; + private RestTemplate restTemplate; + private MockRestServiceServer mockRestServiceServer; String fileName = "mockrequests"; public MockRestClient(String fileName) { /* - List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>(aaiRequests.size()); + * List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>(aaiRequests.size()); */ List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>(); restTemplate = new RestTemplate(); - /* MockRestServiceServer server = MockRestServiceServer - .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) - .build(); - server.expect(MockRestRequestMatchers.requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ + /* + * MockRestServiceServer server = MockRestServiceServer + * .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) + * .build(); + * server.expect(MockRestRequestMatchers.requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class); - //when(mockBuilder.build()).thenReturn(restTemplate); + // when(mockBuilder.build()).thenReturn(restTemplate); JsonObject payload = null; try { @@ -77,23 +81,20 @@ private RestTemplate restTemplate; JsonArray mockUris = payload.getAsJsonArray("mock-uri"); - mockRestServiceServer = MockRestServiceServer.createServer(restTemplate); String url = "https://localhost:8447/aai/v14"; - /*mockRestServiceServer.expect(requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ - + /* + * mockRestServiceServer.expect(requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ for (int i = 0; i < mockUris.size(); i++) { String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString(); String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString(); - String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString(); - InputStream inputStream = getClass() - .getClassLoader() - .getResourceAsStream(responseFile); + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(responseFile); String responseBody = null; try { responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8); @@ -101,57 +102,51 @@ private RestTemplate restTemplate; e.printStackTrace(); } - mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri)) - .andExpect(method(HttpMethod.GET)) - .andExpect(content().contentType(contentTypeValue)) - .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue))); - + .andExpect(method(HttpMethod.GET)).andExpect(content().contentType(contentTypeValue)) + .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()) + .contentType(MediaType.valueOf(contentTypeValue))); } } - public MockRestClient() { + public MockRestClient() { - restTemplate = new RestTemplate(); - /* MockRestServiceServer server = MockRestServiceServer - .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) - .build(); - server.expect(MockRestRequestMatchers.requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ + restTemplate = new RestTemplate(); + /* + * MockRestServiceServer server = MockRestServiceServer + * .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) + * .build(); + * server.expect(MockRestRequestMatchers.requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class); - //when(mockBuilder.build()).thenReturn(restTemplate); + // when(mockBuilder.build()).thenReturn(restTemplate); JsonObject payload = null; try { - payload = getPayload( fileName + ".json"); + payload = getPayload(fileName + ".json"); } catch (IOException e) { e.printStackTrace(); } JsonArray mockUris = payload.getAsJsonArray("mock-uri"); - - - mockRestServiceServer = MockRestServiceServer.createServer(restTemplate); - String url="https://localhost:8447/aai/v14"; - /*mockRestServiceServer.expect(requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ - - - + mockRestServiceServer = MockRestServiceServer.createServer(restTemplate); + String url = "https://localhost:8447/aai/v14"; + /* + * mockRestServiceServer.expect(requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ for (int i = 0; i < mockUris.size(); i++) { String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString(); String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString(); - String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString(); - InputStream inputStream = getClass() - .getClassLoader() - .getResourceAsStream(responseFile); + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(responseFile); String responseBody = null; try { responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8); @@ -159,31 +154,26 @@ private RestTemplate restTemplate; e.printStackTrace(); } - mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri)) - .andExpect(method(HttpMethod.GET)) - .andExpect(content().contentType(contentTypeValue)) - .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue))); - + .andExpect(method(HttpMethod.GET)).andExpect(content().contentType(contentTypeValue)) + .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()) + .contentType(MediaType.valueOf(contentTypeValue))); } - } - public JsonObject getTestDetails(String fileName) throws IOException { + public JsonObject getTestDetails(String fileName) throws IOException { - JsonObject payload = getPayload(fileName ); + JsonObject payload = getPayload(fileName); return payload; } public JsonObject getPayload(String filename) throws IOException { - InputStream inputStream = getClass() - .getClassLoader() - .getResourceAsStream(filename); + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(filename); - //InputStream inputStream = new FileInputStream(filename); + // InputStream inputStream = new FileInputStream(filename); String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); String message = String.format("Unable to find the %s in src/test/resources", filename); @@ -195,28 +185,33 @@ private RestTemplate restTemplate; } @Override - public ResponseEntity execute(String uri, HttpMethod method, Map<String,String> headers, String body) { + public ResponseEntity execute(String uri, HttpMethod method, Map<String, String> headers, String body) { - String url="https://localhost:8447/aai/v14/"+ uri; + String url = "https://localhost:8447/aai/v14/" + uri; - /* MockRestServiceServer server = MockRestServiceServer - .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) - .build(); - server.expect(MockRestRequestMatchers.requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ - - // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class); - //when(mockBuilder.build()).thenReturn(restTemplate); + /* + * MockRestServiceServer server = MockRestServiceServer + * .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) + * .build(); + * server.expect(MockRestRequestMatchers.requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ - /*MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate); - server.expect(requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); - return new ResponseEntity("blah", HttpStatus.OK); - server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText()))) - .andExpect(method(HttpMethod.GET)) - .andExpect(content().contentType(MediaType.APPLICATION_JSON)) - .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/ + // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class); + // when(mockBuilder.build()).thenReturn(restTemplate); + /* + * MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate); + * server.expect(requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + * return new ResponseEntity("blah", HttpStatus.OK); + * server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + + * aaiRequests.get(i).get("aai-uri").asText()))) + * .andExpect(method(HttpMethod.GET)) + * .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + * .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType. + * APPLICATION_JSON)); + */ HttpHeaders headersMap = new HttpHeaders(); @@ -228,35 +223,40 @@ private RestTemplate restTemplate; HttpEntity httpEntity = new HttpEntity(headers); - ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, String.class); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class); - // mockRestServiceServer.verify(); - return responseEntity; + // mockRestServiceServer.verify(); + return responseEntity; } @Override - public ResponseEntity executeResource(String uri, HttpMethod method, Map<String,String> headers, String body) { + public ResponseEntity executeResource(String uri, HttpMethod method, Map<String, String> headers, String body) { - String url="https://localhost:8447/aai/v14/"+ uri; + String url = "https://localhost:8447/aai/v14/" + uri; - /* MockRestServiceServer server = MockRestServiceServer - .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) - .build(); - server.expect(MockRestRequestMatchers.requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/ + /* + * MockRestServiceServer server = MockRestServiceServer + * .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate()) + * .build(); + * server.expect(MockRestRequestMatchers.requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + */ // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class); - //when(mockBuilder.build()).thenReturn(restTemplate); - - /*MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate); - server.expect(requestTo(url)) - .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); - return new ResponseEntity("blah", HttpStatus.OK); - server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText()))) - .andExpect(method(HttpMethod.GET)) - .andExpect(content().contentType(MediaType.APPLICATION_JSON)) - .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/ + // when(mockBuilder.build()).thenReturn(restTemplate); + /* + * MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate); + * server.expect(requestTo(url)) + * .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON)); + * return new ResponseEntity("blah", HttpStatus.OK); + * server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + + * aaiRequests.get(i).get("aai-uri").asText()))) + * .andExpect(method(HttpMethod.GET)) + * .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + * .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType. + * APPLICATION_JSON)); + */ HttpHeaders headersMap = new HttpHeaders(); @@ -268,7 +268,7 @@ private RestTemplate restTemplate; HttpEntity httpEntity = new HttpEntity(headers); - ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, Resource.class); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Resource.class); // mockRestServiceServer.verify(); return responseEntity; @@ -280,16 +280,16 @@ private RestTemplate restTemplate; return restTemplate; } - public String getBaseUrl(){ - return ""; + public String getBaseUrl() { + return ""; } - protected MultiValueMap<String,String> getHeaders(Map<String,String> headers){ - return null; + protected MultiValueMap<String, String> getHeaders(Map<String, String> headers) { + return null; } - protected EELFLogger getLogger(){ - return null; + protected EELFLogger getLogger() { + return null; } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/RestClientTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/RestClientTest.java index 4c3b0fcf..36b8fb3e 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/RestClientTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/RestClientTest.java @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; public class RestClientTest { diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java index cd161dea..53134075 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/restclient/SchemaRestClientTest.java @@ -17,8 +17,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.restclient; +import java.util.HashMap; +import java.util.Map; + import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,13 +35,12 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.util.HashMap; -import java.util.Map; - @Ignore @RunWith(SpringJUnit4ClassRunner.class) -@TestPropertySource(locations = "/schemaService/schema-service-rest.properties" ) -@ContextConfiguration(classes = {RestClientFactoryConfiguration.class, SchemaServiceRestClient.class, RestClientFactory.class, PropertyPasswordConfiguration.class}) +@TestPropertySource(locations = "/schemaService/schema-service-rest.properties") +@ContextConfiguration( + classes = {RestClientFactoryConfiguration.class, SchemaServiceRestClient.class, RestClientFactory.class, + PropertyPasswordConfiguration.class}) @SpringBootTest public class SchemaRestClientTest { @@ -47,21 +50,16 @@ public class SchemaRestClientTest { private RestClientFactory restClientFactory; @Test - public void testGetRequestToSchemaService() { + public void testGetRequestToSchemaService() { ResponseEntity aaiResponse; RestClient restClient = null; - restClient = restClientFactory - .getRestClient(SCHEMA_SERVICE); + restClient = restClientFactory.getRestClient(SCHEMA_SERVICE); String uri = ""; Map<String, String> headersMap = new HashMap<>(); String content = ""; - aaiResponse = restClient.execute( - uri, - HttpMethod.GET, - headersMap, - content); - System.out.println("Helo"+aaiResponse.getStatusCode()); + aaiResponse = restClient.execute(uri, HttpMethod.GET, headersMap, content); + System.out.println("Helo" + aaiResponse.getStatusCode()); } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/ConfigTranslatorWiringTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/ConfigTranslatorWiringTest.java index aca50416..8136ac0b 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/ConfigTranslatorWiringTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/ConfigTranslatorWiringTest.java @@ -20,6 +20,12 @@ package org.onap.aai.setup; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; +import java.util.Map; + import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.testutils.ConfigTranslatorForWiringTest; @@ -29,20 +35,17 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {SchemaLocationsBean.class, SchemaConfigVersions.class, ConfigTranslatorForWiringTest.class}) -@TestPropertySource(properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) +@ContextConfiguration( + classes = {SchemaLocationsBean.class, SchemaConfigVersions.class, ConfigTranslatorForWiringTest.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class ConfigTranslatorWiringTest { @Autowired ConfigTranslator ct; - + @Test public void test() { assertNotNull(ct); @@ -50,7 +53,7 @@ public class ConfigTranslatorWiringTest { assertTrue(nodes.containsKey(new SchemaVersion("v10"))); assertTrue(1 == nodes.get(new SchemaVersion("v10")).size()); assertTrue("src/test/resources/oxm/test_business_v10.xml".equals(nodes.get(new SchemaVersion("v10")).get(0))); - + Map<SchemaVersion, List<String>> edges = ct.getEdgeFiles(); assertTrue(edges.containsKey(new SchemaVersion("v10"))); assertTrue(1 == edges.get(new SchemaVersion("v10")).size()); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanDefaultInjectionTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanDefaultInjectionTest.java index 45ed88fa..4d7bf692 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanDefaultInjectionTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanDefaultInjectionTest.java @@ -20,15 +20,15 @@ package org.onap.aai.setup; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SchemaLocationsBean.class}) public class SchemaLocationsBeanDefaultInjectionTest { diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanEnvVarInjectionTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanEnvVarInjectionTest.java index 886dfe02..bfaa917e 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanEnvVarInjectionTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanEnvVarInjectionTest.java @@ -20,6 +20,9 @@ package org.onap.aai.setup; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,16 +30,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SchemaLocationsBean.class}) @TestPropertySource(properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest2.properties"}) public class SchemaLocationsBeanEnvVarInjectionTest { @Autowired SchemaLocationsBean bean; - + @Test public void test() { assertNotNull(bean); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterTest.java index 105cb1de..78df3891 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterTest.java @@ -20,17 +20,17 @@ package org.onap.aai.setup; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { "classpath:forWiringTests/testContext.xml"}) +@ContextConfiguration(locations = {"classpath:forWiringTests/testContext.xml"}) public class SchemaLocationsBeanXMLSetterTest { @Autowired SchemaLocationsBean bean; diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterWithPropFileTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterWithPropFileTest.java index a9b5d0c5..af94765f 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterWithPropFileTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaLocationsBeanXMLSetterWithPropFileTest.java @@ -20,17 +20,17 @@ package org.onap.aai.setup; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { "classpath:forWiringTests/testUsingPropFileContext.xml"}) +@ContextConfiguration(locations = {"classpath:forWiringTests/testUsingPropFileContext.xml"}) public class SchemaLocationsBeanXMLSetterWithPropFileTest { @Autowired SchemaLocationsBean bean; diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanOverrideTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanOverrideTest.java index 72409bc7..ecc188f7 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanOverrideTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanOverrideTest.java @@ -17,8 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.IOException; +import java.util.List; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -30,20 +37,16 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.io.IOException; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - @RunWith(SpringJUnit4ClassRunner.class) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-override-test.properties" }) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-override-test.properties"}) @ContextConfiguration(classes = {MockProvider.class, SchemaVersionsBean.class, SchemaConfigVersions.class}) @SpringBootTest public class SchemaVersionsBeanOverrideTest { - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown + // set thrown.expect to whatever a specific test needs + // this establishes a default of expecting no exceptions to be thrown @Rule public ExpectedException thrown = ExpectedException.none(); @Autowired diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanTest.java index b1208d62..981be806 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/setup/SchemaVersionsBeanTest.java @@ -17,8 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.setup; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.IOException; +import java.util.List; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -30,20 +37,15 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.io.IOException; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - @RunWith(SpringJUnit4ClassRunner.class) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties" }) +@TestPropertySource( + properties = {"schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-ss-wiring-test.properties"}) @ContextConfiguration(classes = {MockProvider.class, SchemaVersionsBean.class}) @SpringBootTest public class SchemaVersionsBeanTest { - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown + // set thrown.expect to whatever a specific test needs + // this establishes a default of expecting no exceptions to be thrown @Rule public ExpectedException thrown = ExpectedException.none(); @Autowired @@ -69,12 +71,14 @@ public class SchemaVersionsBeanTest { List<SchemaVersion> versionsList = SchemaVersionsBean.getVersions(); assertNotNull(versionsList); SchemaVersions versions = SchemaVersionsBean.getSchemaVersions(); - /*//assertEquals(versions.getAppRootVersion(), new SchemaVersion("v15")); - assertEquals(versions.getAppRootVersion(), new SchemaVersion("v11")); - assertEquals(versions.getDepthVersion(), new SchemaVersion("v10")); - assertEquals(versions.getEdgeLabelVersion(), new SchemaVersion("v12")); - assertEquals(versions.getNamespaceChangeVersion(), new SchemaVersion("v11")); - assertEquals(versions.getRelatedLinkVersion(), new SchemaVersion("v10"));*/ + /* + * //assertEquals(versions.getAppRootVersion(), new SchemaVersion("v15")); + * assertEquals(versions.getAppRootVersion(), new SchemaVersion("v11")); + * assertEquals(versions.getDepthVersion(), new SchemaVersion("v10")); + * assertEquals(versions.getEdgeLabelVersion(), new SchemaVersion("v12")); + * assertEquals(versions.getNamespaceChangeVersion(), new SchemaVersion("v11")); + * assertEquals(versions.getRelatedLinkVersion(), new SchemaVersion("v10")); + */ assertEquals(versions.getAppRootVersion(), new SchemaVersion("v15")); assertEquals(versions.getDepthVersion(), new SchemaVersion("v15")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadEdgeConfigForValidationTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadEdgeConfigForValidationTest.java index dd1c0b7c..2f5f15e8 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadEdgeConfigForValidationTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadEdgeConfigForValidationTest.java @@ -20,11 +20,12 @@ package org.onap.aai.testutils; +import java.util.*; + import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; import org.onap.aai.setup.SchemaLocationsBean; import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; -import java.util.*; /** * Good oxm, bad edge rules for rainy day edge rule validation testing diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadNodeConfigForValidationTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadNodeConfigForValidationTest.java index 90afdcce..b91007be 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadNodeConfigForValidationTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/BadNodeConfigForValidationTest.java @@ -20,15 +20,16 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; + /** * All schema files here are valid for sunny day validator testing */ @@ -59,5 +60,4 @@ public class BadNodeConfigForValidationTest extends ConfigTranslator { return input; } - } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/ConfigTranslatorForWiringTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/ConfigTranslatorForWiringTest.java index e8d10e8c..1d8e4bcb 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/ConfigTranslatorForWiringTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/ConfigTranslatorForWiringTest.java @@ -20,15 +20,16 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; + public class ConfigTranslatorForWiringTest extends ConfigTranslator { public ConfigTranslatorForWiringTest(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) { diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/GoodConfigForValidationTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/GoodConfigForValidationTest.java index 631ce91f..8f1f1761 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/GoodConfigForValidationTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/GoodConfigForValidationTest.java @@ -20,16 +20,17 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; -import org.onap.aai.setup.SchemaVersions; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; +import org.onap.aai.setup.SchemaVersions; + /** * All schema files here are valid for sunny day validator testing */ @@ -47,7 +48,7 @@ public class GoodConfigForValidationTest extends ConfigTranslator { List<String> files = new ArrayList<>(); files.add("src/test/resources/oxm/goodConfigForValidationTest_oxm.xml"); Map<SchemaVersion, List<String>> input = new TreeMap<>(); - //input.put(SchemaVersion.getLatest(), files); + // input.put(SchemaVersion.getLatest(), files); for (SchemaVersion v : schemaVersions.getVersions()) { input.put(v, files); } @@ -59,12 +60,11 @@ public class GoodConfigForValidationTest extends ConfigTranslator { Map<SchemaVersion, List<String>> input = new TreeMap<>(); List<String> files = new ArrayList<>(); files.add("src/test/resources/edgeRules/test3.json"); - //input.put(SchemaVersion.getLatest(), files); + // input.put(SchemaVersion.getLatest(), files); for (SchemaVersion v : schemaVersions.getVersions()) { input.put(v, files); } return input; } - } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/SchemaIncompleteTranslator.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/SchemaIncompleteTranslator.java index ba3e4ac0..28dfd60c 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/SchemaIncompleteTranslator.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/SchemaIncompleteTranslator.java @@ -20,17 +20,18 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; + public class SchemaIncompleteTranslator extends ConfigTranslator { - + public SchemaIncompleteTranslator(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) { super(bean, schemaVersions); } @@ -40,17 +41,16 @@ public class SchemaIncompleteTranslator extends ConfigTranslator { List<String> files10 = new ArrayList<>(); files10.add("src/test/resources/oxm/test_network_v10.xml"); files10.add("src/test/resources/oxm/test_business_v10.xml"); - + List<String> files11 = new ArrayList<>(); files11.add("src/test/resources/oxm/test_network_v11.xml"); files11.add("src/test/resources/oxm/test_business_v11.xml"); List<String> files12 = new ArrayList<>(); files12.add("src/test/resources/oxm/business_oxm_v12.xml"); - + Map<SchemaVersion, List<String>> input = new TreeMap<>(); - - + input.put(new SchemaVersion("v10"), files10); input.put(new SchemaVersion("v11"), files11); input.put(new SchemaVersion("v12"), files12); @@ -65,16 +65,16 @@ public class SchemaIncompleteTranslator extends ConfigTranslator { files.add("src/test/resources/edgeRules/otherTestRules.json"); Map<SchemaVersion, List<String>> input = new TreeMap<>(); input.put(schemaVersions.getDefaultVersion(), files); - + List<String> files2 = new ArrayList<>(); files2.add("src/test/resources/edgeRules/test.json"); input.put(new SchemaVersion("v10"), files2); - + List<String> files3 = new ArrayList<>(); files3.add("src/test/resources/edgeRules/test3.json"); files3.add("src/test/resources/edgeRules/defaultEdgesTest.json"); input.put(new SchemaVersion("v11"), files3); - + return input; } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslator.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslator.java index 8988a1ca..74ea5135 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslator.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslator.java @@ -20,21 +20,24 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; -import org.springframework.context.annotation.PropertySource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; + +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; +import org.springframework.context.annotation.PropertySource; + @PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true) @PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true) public class TestUtilConfigTranslator extends ConfigTranslator { public static final SchemaVersion LATEST = new SchemaVersion("v15"); + public TestUtilConfigTranslator(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) { super(bean, schemaVersions); } @@ -44,11 +47,11 @@ public class TestUtilConfigTranslator extends ConfigTranslator { List<String> files10 = new ArrayList<>(); files10.add("src/test/resources/oxm/test_network_v10.xml"); files10.add("src/test/resources/oxm/test_business_v10.xml"); - + List<String> files11 = new ArrayList<>(); files11.add("src/test/resources/oxm/test_network_v11.xml"); files11.add("src/test/resources/oxm/test_business_v11.xml"); - + Map<SchemaVersion, List<String>> input = new TreeMap<>(); input.put(new SchemaVersion("v10"), files10); input.put(new SchemaVersion("v11"), files11); @@ -58,8 +61,8 @@ public class TestUtilConfigTranslator extends ConfigTranslator { files13.add("src/test/resources/oxm/common_oxm_v13.xml"); files13.add("src/test/resources/oxm/serviceDesign_oxm_v13.xml"); files13.add("src/test/resources/oxm/network_oxm_v13.xml"); - - input.put(new SchemaVersion("v10"), files10); + + input.put(new SchemaVersion("v10"), files10); input.put(new SchemaVersion("v11"), files11); input.put(new SchemaVersion("v13"), files13); return input; @@ -73,11 +76,11 @@ public class TestUtilConfigTranslator extends ConfigTranslator { files.add("src/test/resources/edgeRules/otherTestRules.json"); Map<SchemaVersion, List<String>> input = new TreeMap<>(); input.put(LATEST, files); - + List<String> files2 = new ArrayList<>(); files2.add("src/test/resources/edgeRules/test.json"); input.put(new SchemaVersion("v10"), files2); - + List<String> files3 = new ArrayList<>(); files3.add("src/test/resources/edgeRules/test3.json"); files3.add("src/test/resources/edgeRules/defaultEdgesTest.json"); @@ -85,5 +88,3 @@ public class TestUtilConfigTranslator extends ConfigTranslator { return input; } } - - diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforBusiness.java b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforBusiness.java index 28b0e2da..1c572ac8 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforBusiness.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforBusiness.java @@ -20,17 +20,18 @@ package org.onap.aai.testutils; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.SchemaVersion; -import org.onap.aai.setup.SchemaConfigVersions; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; +import org.onap.aai.setup.ConfigTranslator; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; + public class TestUtilConfigTranslatorforBusiness extends ConfigTranslator { - + public TestUtilConfigTranslatorforBusiness(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) { super(bean, schemaVersions); } @@ -38,21 +39,21 @@ public class TestUtilConfigTranslatorforBusiness extends ConfigTranslator { @Override public Map<SchemaVersion, List<String>> getNodeFiles() { List<String> files10 = new ArrayList<>(); -// files10.add("src/test/resources/oxm/test_network_v10.xml"); -// files10.add("src/test/resources/oxm/test_business_v10.xml"); - + // files10.add("src/test/resources/oxm/test_network_v10.xml"); + // files10.add("src/test/resources/oxm/test_business_v10.xml"); + List<String> files11 = new ArrayList<>(); -// files11.add("src/test/resources/oxm/test_network_v11.xml"); + // files11.add("src/test/resources/oxm/test_network_v11.xml"); files11.add("src/test/resources/oxm/business_v11.xml"); - + List<String> files13 = new ArrayList<>(); files13.add("src/test/resources/oxm/business_oxm_v13.xml"); files13.add("src/test/resources/oxm/common_oxm_v13.xml"); files13.add("src/test/resources/oxm/serviceDesign_oxm_v13.xml"); files13.add("src/test/resources/oxm/network_oxm_v13.xml"); - + Map<SchemaVersion, List<String>> input = new TreeMap<>(); -// input.put(Version.V10, files10); + // input.put(Version.V10, files10); input.put(new SchemaVersion("v11"), files11); input.put(schemaVersions.getDefaultVersion(), files13); return input; @@ -64,15 +65,15 @@ public class TestUtilConfigTranslatorforBusiness extends ConfigTranslator { files.add("src/test/resources/dbedgerules/DbEdgeBusinessRules_test.json"); Map<SchemaVersion, List<String>> input = new TreeMap<>(); input.put(schemaVersions.getDefaultVersion(), files); - + List<String> files2 = new ArrayList<>(); files2.add("src/test/resources/dbedgerules/test.json"); -// input.put(Version.V10, files2); - + // input.put(Version.V10, files2); + List<String> files3 = new ArrayList<>(); files3.add("src/test/resources/dbedgerules/DbEdgeBusinessRules_test.json"); input.put(new SchemaVersion("v11"), files3); - + return input; } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/CheckEverythingStrategyTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/CheckEverythingStrategyTest.java index f43ea7dc..d2852925 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/CheckEverythingStrategyTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/CheckEverythingStrategyTest.java @@ -30,17 +30,17 @@ public class CheckEverythingStrategyTest { @Test public void test() { CheckEverythingStrategy strat = new CheckEverythingStrategy(); - //no issues so nothing notified, should be fine + // no issues so nothing notified, should be fine assertTrue(strat.isOK()); assertTrue("No errors found.".equals(strat.getErrorMsg())); - - //simulate post one error + + // simulate post one error String testError1 = "oh noes a problem with the gooble-gobble edge rule!"; strat.notifyOnError(testError1); assertFalse(strat.isOK()); assertTrue(testError1.equals(strat.getErrorMsg())); - - //simulate multiple found + + // simulate multiple found String testError2 = "error 2"; String testError3 = "duplicate labels not everything is a fork"; strat.notifyOnError(testError2); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/FailFastStrategyTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/FailFastStrategyTest.java index 0d9ded01..ceced416 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/FailFastStrategyTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/FailFastStrategyTest.java @@ -31,16 +31,16 @@ import org.onap.aai.validation.FailFastStrategy; public class FailFastStrategyTest { @Rule public ExpectedException thrown = ExpectedException.none(); - + @Test public void test() { FailFastStrategy strat = new FailFastStrategy(); - - //simulate no issues found + + // simulate no issues found assertTrue(strat.isOK()); assertTrue("No errors found.".equals(strat.getErrorMsg())); - - //simulate an issue found + + // simulate an issue found String testError = "hi i'm a problem"; thrown.expect(AAISchemaValidationException.class); thrown.expectMessage(testError); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorRainyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorRainyDayTest.java index 667a76ab..4bab99a1 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorRainyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorRainyDayTest.java @@ -37,9 +37,12 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {NodesConfiguration.class, BadNodeConfigForValidationTest.class, - CheckEverythingStrategy.class, DefaultVersionValidationModule.class, VersionValidator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, BadNodeConfigForValidationTest.class, CheckEverythingStrategy.class, + DefaultVersionValidationModule.class, VersionValidator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class VersionValidatorRainyDayTest { @Autowired diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorSunnyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorSunnyDayTest.java index 2be68558..2598928e 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorSunnyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/VersionValidatorSunnyDayTest.java @@ -27,7 +27,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.nodes.NodeIngestor; - import org.onap.aai.setup.SchemaVersionsBean; import org.onap.aai.testutils.GoodConfigForValidationTest; import org.springframework.beans.factory.annotation.Autowired; @@ -37,14 +36,12 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { - NodesConfiguration.class, - GoodConfigForValidationTest.class, - CheckEverythingStrategy.class, - DefaultVersionValidationModule.class, - VersionValidator.class -}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, GoodConfigForValidationTest.class, CheckEverythingStrategy.class, + DefaultVersionValidationModule.class, VersionValidator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class VersionValidatorSunnyDayTest { @Autowired diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/CousinDefaultingValidationModuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/CousinDefaultingValidationModuleTest.java index 75ab0d52..58940af5 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/CousinDefaultingValidationModuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/CousinDefaultingValidationModuleTest.java @@ -22,6 +22,8 @@ package org.onap.aai.validation.edges; import static org.junit.Assert.*; +import com.jayway.jsonpath.DocumentContext; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -32,8 +34,6 @@ import org.junit.Test; import org.onap.aai.edges.JsonIngestor; import org.onap.aai.setup.SchemaVersion; -import com.jayway.jsonpath.DocumentContext; - public class CousinDefaultingValidationModuleTest { private static List<DocumentContext> ctxs; private static CousinDefaultingValidationModule validator; @@ -46,12 +46,12 @@ public class CousinDefaultingValidationModuleTest { SchemaVersion LATEST_VERSION = new SchemaVersion("v14"); testRules.put(LATEST_VERSION, testFiles); - + JsonIngestor ji = new JsonIngestor(); ctxs = ji.ingest(testRules).get(LATEST_VERSION); validator = new CousinDefaultingValidationModule(); } - + @Test public void testValidCousins() { assertTrue("".equals(validator.validate("boop|beep", ctxs))); @@ -66,12 +66,12 @@ public class CousinDefaultingValidationModuleTest { public void testValidSingleContains() { assertTrue("".equals(validator.validate("family|baby", ctxs))); } - + @Test public void testInvalidTooManyDefaults() { assertTrue(validator.validate("sheep|wool", ctxs).contains("Multiple set")); } - + @Test public void testInvalidNoDefaults() { assertTrue(validator.validate("cloth|thread", ctxs).contains("None set")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModuleTest.java index f92c636b..a4c70b81 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/DefaultEdgeFieldsValidationModuleTest.java @@ -39,7 +39,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; public class DefaultEdgeFieldsValidationModuleTest { @Autowired EdgeFieldsValidationModule validator; - + @Test public void test() { Map<String, String> test = new HashMap<>(); @@ -47,13 +47,13 @@ public class DefaultEdgeFieldsValidationModuleTest { test.put(f.toString(), "test"); } assertTrue("".equals(validator.verifyFields(test))); - + test.remove(EdgeField.DESCRIPTION.toString()); - assertTrue("".equals(validator.verifyFields(test))); //bc description is optional - + assertTrue("".equals(validator.verifyFields(test))); // bc description is optional + test.remove(EdgeField.CONTAINS.toString()); assertTrue(validator.verifyFields(test).contains("missing required fields: contains-other-v")); - + test.remove(EdgeField.FROM.toString()); assertTrue(validator.verifyFields(test).contains("missing required fields: from contains-other-v")); } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorRainyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorRainyDayTest.java index 5f553ed5..75b27716 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorRainyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorRainyDayTest.java @@ -27,7 +27,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.nodes.NodeIngestor; - import org.onap.aai.setup.SchemaVersionsBean; import org.onap.aai.testutils.BadEdgeConfigForValidationTest; import org.onap.aai.validation.CheckEverythingStrategy; @@ -38,11 +37,14 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {NodesConfiguration.class, BadEdgeConfigForValidationTest.class, - CheckEverythingStrategy.class, DefaultEdgeFieldsValidationModule.class, UniqueLabelValidationModule.class, - SingleContainmentValidationModule.class, CousinDefaultingValidationModule.class, NodeTypesValidationModule.class, - EdgeRuleValidator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, BadEdgeConfigForValidationTest.class, CheckEverythingStrategy.class, + DefaultEdgeFieldsValidationModule.class, UniqueLabelValidationModule.class, + SingleContainmentValidationModule.class, CousinDefaultingValidationModule.class, + NodeTypesValidationModule.class, EdgeRuleValidator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class EdgeRuleValidatorRainyDayTest { @Autowired @@ -50,7 +52,7 @@ public class EdgeRuleValidatorRainyDayTest { @Test public void test() { - assertNotNull(validator); //verify spring wiring OK + assertNotNull(validator); // verify spring wiring OK assertFalse(validator.validate()); String errors = validator.getErrorMsg(); assertTrue(errors.contains("missing required fields: delete-other-v")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorSunnyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorSunnyDayTest.java index 6c68027b..ca6b3171 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorSunnyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/EdgeRuleValidatorSunnyDayTest.java @@ -27,7 +27,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.nodes.NodeIngestor; - import org.onap.aai.setup.SchemaVersionsBean; import org.onap.aai.testutils.GoodConfigForValidationTest; import org.onap.aai.validation.CheckEverythingStrategy; @@ -38,11 +37,14 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {NodesConfiguration.class, GoodConfigForValidationTest.class, - CheckEverythingStrategy.class, DefaultEdgeFieldsValidationModule.class, UniqueLabelValidationModule.class, - SingleContainmentValidationModule.class, CousinDefaultingValidationModule.class, NodeTypesValidationModule.class, - EdgeRuleValidator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, GoodConfigForValidationTest.class, CheckEverythingStrategy.class, + DefaultEdgeFieldsValidationModule.class, UniqueLabelValidationModule.class, + SingleContainmentValidationModule.class, CousinDefaultingValidationModule.class, + NodeTypesValidationModule.class, EdgeRuleValidator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class EdgeRuleValidatorSunnyDayTest { @Autowired @@ -50,7 +52,7 @@ public class EdgeRuleValidatorSunnyDayTest { @Test public void test() { - assertNotNull(validator); //verify spring wiring OK + assertNotNull(validator); // verify spring wiring OK assertTrue(validator.validate()); assertTrue("No errors found.".equals(validator.getErrorMsg())); } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/NodeTypesValidationModuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/NodeTypesValidationModuleTest.java index fc854061..cc38915c 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/NodeTypesValidationModuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/NodeTypesValidationModuleTest.java @@ -30,7 +30,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.nodes.NodeIngestor; - import org.onap.aai.setup.SchemaVersion; import org.onap.aai.setup.SchemaVersionsBean; import org.onap.aai.testutils.TestUtilConfigTranslator; @@ -41,8 +40,11 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {NodesConfiguration.class, TestUtilConfigTranslator.class, NodeTypesValidationModule.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, TestUtilConfigTranslator.class, NodeTypesValidationModule.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class NodeTypesValidationModuleTest { @Autowired @@ -55,7 +57,12 @@ public class NodeTypesValidationModuleTest { testPairs.add("foo|foo"); testPairs.add("foo|quux"); assertTrue("".equals(validator.validate(testPairs, new SchemaVersion("v11")))); - assertTrue(validator.validate(testPairs, new SchemaVersion("v10")).contains("Invalid node type(s) found: quux")); //bc no quux in v10 + assertTrue( + validator.validate(testPairs, new SchemaVersion("v10")).contains("Invalid node type(s) found: quux")); // bc + // no + // quux + // in + // v10 } @Test @@ -64,6 +71,6 @@ public class NodeTypesValidationModuleTest { testPairs.add("bar|"); testPairs.add("|foo"); testPairs.add("|"); - assertTrue("".equals(validator.validate(testPairs, new SchemaVersion("v11")))); //bc empty just ignored + assertTrue("".equals(validator.validate(testPairs, new SchemaVersion("v11")))); // bc empty just ignored } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/SingleContainmentValidationModuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/SingleContainmentValidationModuleTest.java index 7acb558a..a704d80b 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/SingleContainmentValidationModuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/SingleContainmentValidationModuleTest.java @@ -22,6 +22,8 @@ package org.onap.aai.validation.edges; import static org.junit.Assert.*; +import com.jayway.jsonpath.DocumentContext; + import java.util.*; import org.junit.BeforeClass; @@ -29,8 +31,6 @@ import org.junit.Test; import org.onap.aai.edges.JsonIngestor; import org.onap.aai.setup.SchemaVersion; -import com.jayway.jsonpath.DocumentContext; - public class SingleContainmentValidationModuleTest { private static List<DocumentContext> ctxs; private static SingleContainmentValidationModule validator; @@ -42,7 +42,7 @@ public class SingleContainmentValidationModuleTest { List<String> testFiles = new ArrayList<>(); testFiles.add("src/test/resources/edgeRules/containsValidationTest.json"); testRules.put(LATEST, testFiles); - + JsonIngestor ji = new JsonIngestor(); ctxs = ji.ingest(testRules).get(LATEST); validator = new SingleContainmentValidationModule(); @@ -57,7 +57,7 @@ public class SingleContainmentValidationModuleTest { public void testValidWithNone() { assertTrue("".equals(validator.validate("bread|cheese", ctxs))); } - + @Test public void testInvalid() { assertTrue(validator.validate("box|cat", ctxs).contains("has multiple containment rules")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/UniqueLabelValidationModuleTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/UniqueLabelValidationModuleTest.java index 233f8b4b..76e52036 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/UniqueLabelValidationModuleTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/edges/UniqueLabelValidationModuleTest.java @@ -22,6 +22,8 @@ package org.onap.aai.validation.edges; import static org.junit.Assert.*; +import com.jayway.jsonpath.DocumentContext; + import java.util.*; import org.junit.BeforeClass; @@ -29,8 +31,6 @@ import org.junit.Test; import org.onap.aai.edges.JsonIngestor; import org.onap.aai.setup.SchemaVersion; -import com.jayway.jsonpath.DocumentContext; - public class UniqueLabelValidationModuleTest { private static List<DocumentContext> ctxs; private static UniqueLabelValidationModule validator; @@ -43,7 +43,7 @@ public class UniqueLabelValidationModuleTest { testFiles.add("src/test/resources/edgeRules/labelValidationTest1.json"); testFiles.add("src/test/resources/edgeRules/labelValidationTest2.json"); testRules.put(LATEST, testFiles); - + JsonIngestor ji = new JsonIngestor(); ctxs = ji.ingest(testRules).get(LATEST); validator = new UniqueLabelValidationModule(); @@ -54,13 +54,13 @@ public class UniqueLabelValidationModuleTest { assertTrue("".equals(validator.validate("human|monster", ctxs))); assertTrue("".equals(validator.validate("monster|human", ctxs))); } - + @Test public void testValidDupLabelButDiffPairs() { assertTrue("".equals(validator.validate("human|strange-and-interesting-plant", ctxs))); assertTrue("".equals(validator.validate("strange-and-interesting-plant|human", ctxs))); } - + @Test public void testValidAcrossFiles() { assertTrue("".equals(validator.validate("human|toaster", ctxs))); @@ -72,19 +72,19 @@ public class UniqueLabelValidationModuleTest { assertTrue(validator.validate("sphinx|monster", ctxs).contains("has multiple rules using the same label")); assertTrue(validator.validate("monster|sphinx", ctxs).contains("has multiple rules using the same label")); } - + @Test public void testInvalidSetOneFileJustCousins() { assertTrue(validator.validate("griffin|hippogriff", ctxs).contains("has multiple rules using the same label")); assertTrue(validator.validate("hippogriff|griffin", ctxs).contains("has multiple rules using the same label")); } - + @Test public void testInvalidSetMultipleFiles() { assertTrue(validator.validate("lava|floor", ctxs).contains("has multiple rules using the same label")); assertTrue(validator.validate("floor|lava", ctxs).contains("has multiple rules using the same label")); } - + @Test public void testInvalidCopyInOtherFile() { assertTrue(validator.validate("badger|mushroom", ctxs).contains("has multiple rules using the same label")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorRainyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorRainyDayTest.java index fc4ddd45..e164df04 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorRainyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorRainyDayTest.java @@ -25,7 +25,6 @@ import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; - import org.onap.aai.testutils.BadNodeConfigForValidationTest; import org.onap.aai.validation.CheckEverythingStrategy; import org.onap.aai.validation.nodes.DefaultDuplicateNodeDefinitionValidationModule; @@ -38,10 +37,13 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {BadNodeConfigForValidationTest.class, NodesConfiguration.class, - CheckEverythingStrategy.class, DefaultDuplicateNodeDefinitionValidationModule.class, NodeValidator.class}) +@ContextConfiguration( + classes = {BadNodeConfigForValidationTest.class, NodesConfiguration.class, CheckEverythingStrategy.class, + DefaultDuplicateNodeDefinitionValidationModule.class, NodeValidator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) @SpringBootTest public class NodeValidatorRainyDayTest { @@ -50,7 +52,7 @@ public class NodeValidatorRainyDayTest { @Test public void test() { - assertNotNull(validator); //check spring wiring ok + assertNotNull(validator); // check spring wiring ok assertFalse(validator.validate()); String result = validator.getErrorMsg(); assertTrue(result.contains("LogicalLink")); diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSchemaIncompleteTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSchemaIncompleteTest.java index 6ab84d40..288913b1 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSchemaIncompleteTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSchemaIncompleteTest.java @@ -20,6 +20,18 @@ package org.onap.aai.validation.nodes; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; + +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -27,9 +39,7 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; import org.onap.aai.nodes.NodeIngestor; - import org.onap.aai.setup.SchemaVersion; - import org.onap.aai.testutils.SchemaIncompleteTranslator; import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; @@ -40,43 +50,33 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.w3c.dom.Document; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; - -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { SchemaIncompleteTranslator.class, NodesConfiguration.class}) +@ContextConfiguration(classes = {SchemaIncompleteTranslator.class, NodesConfiguration.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest @Ignore public class NodeValidatorSchemaIncompleteTest { @Autowired NodeIngestor ni; - - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown + + // set thrown.expect to whatever a specific test needs + // this establishes a default of expecting no exceptions to be thrown @Rule - public ExpectedException thrown = ExpectedException.none(); + public ExpectedException thrown = ExpectedException.none(); - //Throws a NullPointerException because a JavaType is referenced, but not defined + // Throws a NullPointerException because a JavaType is referenced, but not defined @Test public void testIncompleteCombinedSchema() throws TransformerException, IOException, IllegalStateException { thrown.expect(NullPointerException.class); - //TODO Change for Exception + // TODO Change for Exception ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - printDocument(ni.getSchema(new SchemaVersion("v12")),buffer); + printDocument(ni.getSchema(new SchemaVersion("v12")), buffer); } - + public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException { TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); @@ -86,7 +86,6 @@ public class NodeValidatorSchemaIncompleteTest { transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); - transformer.transform(new DOMSource(doc), - new StreamResult(new OutputStreamWriter(out, "UTF-8"))); + transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8"))); } } diff --git a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSunnyDayTest.java b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSunnyDayTest.java index b69182fc..81b69e6e 100644 --- a/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSunnyDayTest.java +++ b/aai-schema-ingest/src/test/java/org/onap/aai/validation/nodes/NodeValidatorSunnyDayTest.java @@ -25,7 +25,6 @@ import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.aai.config.NodesConfiguration; - import org.onap.aai.testutils.GoodConfigForValidationTest; import org.onap.aai.validation.CheckEverythingStrategy; import org.onap.aai.validation.nodes.DefaultDuplicateNodeDefinitionValidationModule; @@ -35,10 +34,14 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { NodesConfiguration.class, GoodConfigForValidationTest.class, - CheckEverythingStrategy.class, DefaultDuplicateNodeDefinitionValidationModule.class, NodeValidator.class}) -@TestPropertySource(properties = { "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties" }) +@ContextConfiguration( + classes = {NodesConfiguration.class, GoodConfigForValidationTest.class, CheckEverythingStrategy.class, + DefaultDuplicateNodeDefinitionValidationModule.class, NodeValidator.class}) +@TestPropertySource( + properties = { + "schema.ingest.file = src/test/resources/forWiringTests/schema-ingest-wiring-test-local.properties"}) @SpringBootTest public class NodeValidatorSunnyDayTest { @@ -47,7 +50,7 @@ public class NodeValidatorSunnyDayTest { @Test public void test() { - assertNotNull(validator); //check spring wiring ok + assertNotNull(validator); // check spring wiring ok assertTrue(validator.validate()); assertTrue("No errors found.".equals(validator.getErrorMsg())); } |