diff options
author | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-01-15 14:35:55 +0000 |
---|---|---|
committer | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-01-16 13:42:36 +0000 |
commit | 3ec58a16f80426968919fe5da42732bf693909e0 (patch) | |
tree | 292f966636e48eeec9cd1f0b0f018cec76973997 /src/main/java | |
parent | 715e009fa1b0b148fc64f8cf1bc2f536e4e2cb23 (diff) |
Refactor - create a ValidationResult Builder class
In anticipation of the Validation Result output adopting the common
event payload, add an interface to provide a greater level of
abstraction between the current implementation and the classes that
create validation results.
Change-Id: Ie81228dff19a124011e77097768b44be5a3844b6
Issue-ID: AAI-2057
Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
Diffstat (limited to 'src/main/java')
7 files changed, 369 insertions, 232 deletions
diff --git a/src/main/java/org/onap/aai/validation/controller/ValidationController.java b/src/main/java/org/onap/aai/validation/controller/ValidationController.java index 15e35b1..bd7c850 100644 --- a/src/main/java/org/onap/aai/validation/controller/ValidationController.java +++ b/src/main/java/org/onap/aai/validation/controller/ValidationController.java @@ -1,12 +1,12 @@ -/* +/** * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs + * Copyright (c) 2018-2019 European Software Marketing Ltd. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -42,6 +42,7 @@ import org.onap.aai.validation.publisher.MessagePublisher; import org.onap.aai.validation.reader.EventReader; import org.onap.aai.validation.reader.data.Entity; import org.onap.aai.validation.result.ValidationResult; +import org.onap.aai.validation.result.ValidationResultBuilder; import org.onap.aai.validation.result.Violation; import org.onap.aai.validation.util.JsonUtil; @@ -105,7 +106,7 @@ public class ValidationController { Entity entity = eventReader.getEntity(event); if (!entity.getIds().isEmpty() && eventReader.getEntityType(event).isPresent() && entity.getResourceVersion().isPresent()) { - ValidationResult validationResult = new ValidationResult(entity); + ValidationResult validationResult = new ValidationResultBuilder(eventReader, event).build(); // @formatter:off validationResult.addViolation(new Violation.Builder(entity) .category(VALIDATION_ERROR_CATEGORY) diff --git a/src/main/java/org/onap/aai/validation/modeldriven/validator/ModelDrivenValidator.java b/src/main/java/org/onap/aai/validation/modeldriven/validator/ModelDrivenValidator.java index 1b8ab00..ef27f40 100644 --- a/src/main/java/org/onap/aai/validation/modeldriven/validator/ModelDrivenValidator.java +++ b/src/main/java/org/onap/aai/validation/modeldriven/validator/ModelDrivenValidator.java @@ -1,12 +1,12 @@ -/* +/** * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs + * Copyright (c) 2018-2019 European Software Marketing Ltd. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -36,14 +36,15 @@ import org.onap.aai.validation.exception.ValidationServiceException; import org.onap.aai.validation.modeldriven.ModelCacheManager; import org.onap.aai.validation.modeldriven.ModelId; import org.onap.aai.validation.modeldriven.configuration.mapping.ModelInstanceMapper; -import org.onap.aai.validation.modeldriven.configuration.mapping.ModelInstanceMappingReader; import org.onap.aai.validation.modeldriven.configuration.mapping.ModelInstanceMapper.MappingType; +import org.onap.aai.validation.modeldriven.configuration.mapping.ModelInstanceMappingReader; import org.onap.aai.validation.reader.EntityReader; import org.onap.aai.validation.reader.EventReader; import org.onap.aai.validation.reader.InstanceEntityReader; import org.onap.aai.validation.reader.data.Entity; import org.onap.aai.validation.reader.data.EntityId; import org.onap.aai.validation.result.ValidationResult; +import org.onap.aai.validation.result.ValidationResultBuilder; import org.onap.aai.validation.result.Violation; import org.onap.aai.validation.result.Violation.Builder; import org.onap.aai.validation.result.Violation.ViolationType; @@ -148,7 +149,7 @@ public class ModelDrivenValidator implements Validator { } } - ValidationResult validationResult = new ValidationResult(instanceEntity); + ValidationResult validationResult = new ValidationResultBuilder(instanceEntity).build(); // This is a shortcut to passing the parent model name all the way down. populateViolationModelNames(violations, instanceEntity); diff --git a/src/main/java/org/onap/aai/validation/result/ValidationResult.java b/src/main/java/org/onap/aai/validation/result/ValidationResult.java index b632a0f..9526c03 100644 --- a/src/main/java/org/onap/aai/validation/result/ValidationResult.java +++ b/src/main/java/org/onap/aai/validation/result/ValidationResult.java @@ -1,12 +1,12 @@ -/* +/** * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs + * Copyright (c) 2018-2019 European Software Marketing Ltd. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -18,227 +18,47 @@ package org.onap.aai.validation.result; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.annotations.Expose; -import java.time.Instant; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; -import java.util.UUID; -import org.apache.commons.lang3.builder.EqualsBuilder; -import org.onap.aai.validation.exception.ValidationServiceException; -import org.onap.aai.validation.reader.data.Entity; -import org.onap.aai.validation.reader.data.EntityId; -import org.onap.aai.validation.util.JsonUtil; - -/** - * The result of an instance validation. This can include zero or more {@link Violation} objects. - */ -public class ValidationResult { - - @Expose - private String validationId; - @Expose - private String validationTimestamp; +public interface ValidationResult { - @Expose - private JsonElement entityId; + List<Violation> getViolations(); - @Expose - private String entityType; + JsonElement getEntityId(); - @Expose - private String entityLink; + String getEntityLink(); - @Expose - private String resourceVersion; - - @Expose - private JsonElement entity; + String getEntityType(); - - @Expose - private List<Violation> violations = new ArrayList<>(); - - /** - * Create the validation payload initialised with an event identifier and a timestamp. - * - * @param entity - * @throws ValidationServiceException - */ - public ValidationResult(Entity entity) throws ValidationServiceException { - this.validationId = UUID.randomUUID().toString(); - this.validationTimestamp = - DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssX").withZone(ZoneOffset.UTC).format(Instant.now()); - this.entityId = new JsonObject(); - for (EntityId id : entity.getIds()) { - this.entityId.getAsJsonObject().addProperty(id.getPrimaryKey(), id.getValue()); - } - this.entityType = entity.getType(); - this.entityLink = entity.getEntityLink(); - this.resourceVersion = entity.getResourceVersion().orElse(null); - this.entity = entity.getJson()!=null ?new JsonParser().parse(entity.getJson()): new JsonObject(); - } - + String getResourceVersion(); /** - * Add a validation violation. + * Add a single validation violation. * * @param violation a single {@link Violation} to add to the validation result */ - public void addViolation(Violation violation) { - this.violations.add(violation); - } + void addViolation(Violation violation); /** * Add a list of validation violations. * * @param violations a List of {@link Violation} objects to add to the validation result */ - public void addViolations(List<Violation> violations) { - this.violations.addAll(violations); - } - - public String getValidationId() { - return validationId; - } - - public void setValidationId(String eventId) { - this.validationId = eventId; - } - - public String getValidationTimestamp() { - return validationTimestamp; - } - - public void setValidationTimestamp(String timestamp) { - this.validationTimestamp = timestamp; - } - - public JsonElement getEntityId() { - return entityId; - } - - public void setEntityId(JsonElement entityId) { - this.entityId = entityId; - } - - public String getEntityType() { - return entityType; - } - - public void setEntityType(String entityType) { - this.entityType = entityType; - } - - public String getEntityLink() { - return entityLink; - } - - public void setEntityLink(String uri) { - this.entityLink = uri; - } - - public String getResourceVersion() { - return resourceVersion; - } - - public void setResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } - - public JsonElement getEntity() { - return entity; - } - - public void setEntity(JsonElement entity) { - this.entity = entity; - } - - public List<Violation> getViolations() { - return violations; - } - - public void setViolations(List<Violation> violations) { - this.violations = violations; - } - - @Override - public int hashCode() { - return Objects.hash(this.entityId, this.entityLink, this.entityType, this.resourceVersion, this.validationId, - this.validationTimestamp, this.violations, this.entity); - } - - /* - * validationId is checked first, as this is meant to be unique - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (!(obj instanceof ValidationResult)) { - return false; - } else if (obj == this) { - return true; - } - ValidationResult rhs = (ValidationResult) obj; - // @formatter:off - return new EqualsBuilder() - .append(entityId, rhs.entityId) - .append(entityLink, rhs.entityLink) - .append(entityType, rhs.entityType) - .append(resourceVersion, rhs.resourceVersion) - .append(validationId, rhs.validationId) - .append(validationTimestamp, rhs.validationTimestamp) - .append(violations, rhs.violations) - .append(entity, rhs.entity) - .isEquals(); - // @formatter:on - } - - @Override - public String toString() { - return JsonUtil.toJson(this); - } + void addViolations(List<Violation> violations); /** * Create a JSON representation of the object, with each violation's validationRule omitted when it has a null value * * @return this object formatted as a JSON string ready for publishing */ - public String toJson() { - return toString(); - } + String toJson(); - /** - * Create a new object from the JSON representation - * - * @param json representation of the Validation Result - * @return a ValidationResult object - */ - public static ValidationResult fromJson(String json) { - ValidationResult validationResult = JsonUtil.toAnnotatedClassfromJson(json, ValidationResult.class); - if (validationResult != null) { - validationResult.initialiseValues(); - } - return validationResult; - } + String getValidationId(); + + String getValidationTimestamp(); + + void setEntityId(JsonElement entityId); + + void setEntityType(String entityType); - /** - * Ensure that any unset fields are properly initialised. This is particularly useful when the object has been - * deserialised from a JSON string, as any missing/undefined values will not be read by the deserialiser and thus - * the corresponding fields will not be set. - */ - private void initialiseValues() { - List<Violation> violationList = getViolations(); - if (violationList != null) { - for (Violation violation : violationList) { - violation.initialiseValues(); - } - } - } } diff --git a/src/main/java/org/onap/aai/validation/result/ValidationResultBuilder.java b/src/main/java/org/onap/aai/validation/result/ValidationResultBuilder.java new file mode 100644 index 0000000..743e08d --- /dev/null +++ b/src/main/java/org/onap/aai/validation/result/ValidationResultBuilder.java @@ -0,0 +1,55 @@ +/** + * ============LICENSE_START=================================================== + * Copyright (c) 2018-2019 European Software Marketing Ltd. + * ============================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END===================================================== + */ +package org.onap.aai.validation.result; + +import org.onap.aai.validation.exception.ValidationServiceException; +import org.onap.aai.validation.reader.EventReader; +import org.onap.aai.validation.reader.data.Entity; + +public class ValidationResultBuilder { + + private final EventReader eventReader; + private final String event; + private Entity entity; + + public ValidationResultBuilder(EventReader eventReader, String event) { + this.eventReader = eventReader; + this.event = event; + } + + public ValidationResultBuilder(Entity entity) { + this.eventReader = null; + this.event = null; + this.entity = entity; + } + + public static ValidationResult fromJson(String json) { + return ValidationResultImpl.fromJson(json); + } + + public ValidationResult build() throws ValidationServiceException { + return new ValidationResultImpl(getEntity()); + } + + private Entity getEntity() throws ValidationServiceException { + if (entity == null) { + entity = eventReader.getEntity(event); + } + return entity; + } +} diff --git a/src/main/java/org/onap/aai/validation/result/ValidationResultImpl.java b/src/main/java/org/onap/aai/validation/result/ValidationResultImpl.java new file mode 100644 index 0000000..376a41c --- /dev/null +++ b/src/main/java/org/onap/aai/validation/result/ValidationResultImpl.java @@ -0,0 +1,255 @@ +/** + * ============LICENSE_START=================================================== + * Copyright (c) 2018-2019 European Software Marketing Ltd. + * ============================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END===================================================== + */ +package org.onap.aai.validation.result; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.annotations.Expose; +import java.time.Instant; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.onap.aai.validation.exception.ValidationServiceException; +import org.onap.aai.validation.reader.data.Entity; +import org.onap.aai.validation.reader.data.EntityId; +import org.onap.aai.validation.util.JsonUtil; + +/** + * The result of an instance validation. This can include zero or more {@link Violation} objects. + */ +public class ValidationResultImpl implements ValidationResult { + + @Expose + private String validationId; + + @Expose + private String validationTimestamp; + + @Expose + private JsonElement entityId; + + @Expose + private String entityType; + + @Expose + private String entityLink; + + @Expose + private String resourceVersion; + + @Expose + private JsonElement entity; + + + @Expose + private List<Violation> violations = new ArrayList<>(); + + /** + * Create the validation payload initialised with an event identifier and a timestamp. + * + * @param entity + * @throws ValidationServiceException + */ + public ValidationResultImpl(Entity entity) throws ValidationServiceException { + this.validationId = UUID.randomUUID().toString(); + this.validationTimestamp = + DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssX").withZone(ZoneOffset.UTC).format(Instant.now()); + this.entityId = new JsonObject(); + for (EntityId id : entity.getIds()) { + this.entityId.getAsJsonObject().addProperty(id.getPrimaryKey(), id.getValue()); + } + this.entityType = entity.getType(); + this.entityLink = entity.getEntityLink(); + this.resourceVersion = entity.getResourceVersion().orElse(null); + this.entity = entity.getJson() != null ? new JsonParser().parse(entity.getJson()) : new JsonObject(); + } + + /** + * Add a validation violation. + * + * @param violation a single {@link Violation} to add to the validation result + */ + @Override + public void addViolation(Violation violation) { + this.violations.add(violation); + } + + /** + * Add a list of validation violations. + * + * @param violations a List of {@link Violation} objects to add to the validation result + */ + @Override + public void addViolations(List<Violation> violations) { + this.violations.addAll(violations); + } + + @Override + public String getValidationId() { + return validationId; + } + + public void setValidationId(String eventId) { + this.validationId = eventId; + } + + @Override + public String getValidationTimestamp() { + return validationTimestamp; + } + + public void setValidationTimestamp(String timestamp) { + this.validationTimestamp = timestamp; + } + + @Override + public JsonElement getEntityId() { + return entityId; + } + + @Override + public void setEntityId(JsonElement entityId) { + this.entityId = entityId; + } + + @Override + public String getEntityType() { + return entityType; + } + + @Override + public void setEntityType(String entityType) { + this.entityType = entityType; + } + + @Override + public String getEntityLink() { + return entityLink; + } + + public void setEntityLink(String uri) { + this.entityLink = uri; + } + + @Override + public String getResourceVersion() { + return resourceVersion; + } + + public void setResourceVersion(String resourceVersion) { + this.resourceVersion = resourceVersion; + } + + public JsonElement getEntity() { + return entity; + } + + public void setEntity(JsonElement entity) { + this.entity = entity; + } + + @Override + public List<Violation> getViolations() { + return violations; + } + + public void setViolations(List<Violation> violations) { + this.violations = violations; + } + + @Override + public int hashCode() { + return Objects.hash(this.entityId, this.entityLink, this.entityType, this.resourceVersion, this.validationId, + this.validationTimestamp, this.violations, this.entity); + } + + /* + * validationId is checked first, as this is meant to be unique + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (!(obj instanceof ValidationResultImpl)) { + return false; + } else if (obj == this) { + return true; + } + ValidationResultImpl rhs = (ValidationResultImpl) obj; + // @formatter:off + return new EqualsBuilder() + .append(entityId, rhs.entityId) + .append(entityLink, rhs.entityLink) + .append(entityType, rhs.entityType) + .append(resourceVersion, rhs.resourceVersion) + .append(validationId, rhs.validationId) + .append(validationTimestamp, rhs.validationTimestamp) + .append(violations, rhs.violations) + .append(entity, rhs.entity) + .isEquals(); + // @formatter:on + } + + @Override + public String toString() { + return JsonUtil.toJson(this); + } + + /** + * Create a JSON representation of the object, with each violation's validationRule omitted when it has a null value + * + * @return this object formatted as a JSON string ready for publishing + */ + @Override + public String toJson() { + return toString(); + } + + /** + * Create a new object from the JSON representation + * + * @param json representation of the Validation Result + * @return a ValidationResult object + */ + public static ValidationResultImpl fromJson(String json) { + ValidationResultImpl validationResult = JsonUtil.toAnnotatedClassfromJson(json, ValidationResultImpl.class); + if (validationResult != null) { + validationResult.initialiseValues(); + } + return validationResult; + } + + /** + * Ensure that any unset fields are properly initialised. This is particularly useful when the object has been + * deserialised from a JSON string, as any missing/undefined values will not be read by the deserialiser and thus + * the corresponding fields will not be set. + */ + private void initialiseValues() { + List<Violation> violationList = getViolations(); + if (violationList != null) { + for (Violation violation : violationList) { + violation.initialiseValues(); + } + } + } +} diff --git a/src/main/java/org/onap/aai/validation/ruledriven/RuleDrivenValidator.java b/src/main/java/org/onap/aai/validation/ruledriven/RuleDrivenValidator.java index 49b251e..cee29f7 100644 --- a/src/main/java/org/onap/aai/validation/ruledriven/RuleDrivenValidator.java +++ b/src/main/java/org/onap/aai/validation/ruledriven/RuleDrivenValidator.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs + * Copyright (c) 2018-2019 European Software Marketing Ltd. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Consumer; import java.util.stream.Stream; +import org.apache.commons.lang.StringUtils; import org.onap.aai.validation.Validator; import org.onap.aai.validation.config.RuleIndexingConfig; import org.onap.aai.validation.exception.ValidationServiceError; @@ -44,6 +45,7 @@ import org.onap.aai.validation.reader.OxmReader; import org.onap.aai.validation.reader.data.AttributeValues; import org.onap.aai.validation.reader.data.Entity; import org.onap.aai.validation.result.ValidationResult; +import org.onap.aai.validation.result.ValidationResultBuilder; import org.onap.aai.validation.result.Violation; import org.onap.aai.validation.result.Violation.ViolationType; import org.onap.aai.validation.ruledriven.configuration.EntitySection; @@ -136,9 +138,9 @@ public class RuleDrivenValidator implements Validator { * * @param entityType * @param eventType - * @return the rules defined for this entityType + * @return the Optional rules defined for this entityType */ - public List<Rule> getRulesForEntity(String entityType, String eventType) { + public Optional<List<Rule>> getRulesForEntity(String entityType, String eventType) { return ruleManagers.get(eventType.toLowerCase(Locale.getDefault())).getRulesForEntity(entityType); } @@ -152,11 +154,10 @@ public class RuleDrivenValidator implements Validator { Entity entity = getEventReader().getEntity(event); Optional<String> eventType = eventReader.getEventType(event); - List<Rule> rules = getRulesToApply(entity, eventType).orElse(null); - if (rules == null) { - throw new ValidationServiceException(ValidationServiceError.RULES_NOT_DEFINED, eventType.orElse(null)); - } - ValidationResult validationResult = new ValidationResult(entity); + List<Rule> rules = getRulesToApply(entity, eventType).orElseThrow( + () -> new ValidationServiceException(ValidationServiceError.RULES_NOT_DEFINED, eventType.orElse(null))); + + ValidationResult validationResult = new ValidationResultBuilder(eventReader, event).build(); Violation.Builder builder = new Violation.Builder(entity); for (Rule rule : rules) { @@ -207,7 +208,7 @@ public class RuleDrivenValidator implements Validator { && ruleIndexingConfig.get().getIndexedEvents().contains(eventType.get())) { rules = getRulesByIndex(entity, eventType.get(), ruleManager.get()); } else { - rules = Optional.of(ruleManager.get().getRulesForEntity(entity.getType())); + rules = ruleManager.get().getRulesForEntity(entity.getType()); } } } @@ -217,18 +218,21 @@ public class RuleDrivenValidator implements Validator { private Optional<List<Rule>> getRulesByIndex(Entity entity, String eventType, RuleManager ruleManager) { String rulesKey = generateKey(entity, eventType); applicationLogger.debug(String.format("Retrieving indexed rules for key '%s'", rulesKey)); - Optional<List<Rule>> rules = Optional.of(ruleManager.getRulesForEntity(rulesKey)); - if (rules.get().isEmpty() && ruleIndexingConfig.isPresent()) { - if (ruleIndexingConfig.get().getDefaultIndexKey() == null - || ruleIndexingConfig.get().getDefaultIndexKey().isEmpty()) { + + final Optional<List<Rule>> entityRules = ruleManager.getRulesForEntity(rulesKey); + final boolean rulesDefined = entityRules.filter(l -> !l.isEmpty()).isPresent(); + + if (!rulesDefined && ruleIndexingConfig.isPresent()) { + final String defaultIndexKey = ruleIndexingConfig.get().getDefaultIndexKey(); + if (StringUtils.isEmpty(defaultIndexKey)) { + return ruleManager.getRulesForEntity(RuleManager.generateKey(new String[] { defaultIndexKey })); + } else { applicationLogger.debug("Default index value not configured, unable to get rules"); applicationLogger.error(ApplicationMsgs.CANNOT_VALIDATE_ERROR, eventType); - return rules; } - String defaultKey = RuleManager.generateKey(new String[] { ruleIndexingConfig.get().getDefaultIndexKey() }); - rules = Optional.of(ruleManager.getRulesForEntity(defaultKey)); } - return rules; + + return entityRules; } private String generateKey(Entity entity, String eventType) { diff --git a/src/main/java/org/onap/aai/validation/ruledriven/RuleManager.java b/src/main/java/org/onap/aai/validation/ruledriven/RuleManager.java index c21ce24..380c99a 100644 --- a/src/main/java/org/onap/aai/validation/ruledriven/RuleManager.java +++ b/src/main/java/org/onap/aai/validation/ruledriven/RuleManager.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs + * Copyright (c) 2018-2019 European Software Marketing Ltd. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.SortedSet; import java.util.TreeSet; import org.onap.aai.validation.ruledriven.configuration.EntitySection; @@ -45,7 +46,8 @@ public class RuleManager { /** * Create the rules for each type of entity based on the supplied configuration * - * @param entities configuration (all entities) + * @param entities + * configuration (all entities) * @throws InstantiationException * @throws IllegalAccessException * @throws GroovyConfigurationException @@ -69,11 +71,10 @@ public class RuleManager { /** * @param entityType - * @return the rules configured for this entity type + * @return the Optional rules configured for this entity type */ - public List<Rule> getRulesForEntity(String entityType) { - List<Rule> rules = rulesMap.get(entityType); - return rules == null ? Collections.emptyList() : rules; + public Optional<List<Rule>> getRulesForEntity(String entityType) { + return Optional.ofNullable(rulesMap.get(entityType)); } public static String generateKey(String[] indices) { |