Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / common / validation / WorkflowValidatorRunner.java
index 44fbc6d..6950618 100644 (file)
@@ -27,10 +27,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
 import javax.annotation.PostConstruct;
 import javax.annotation.Priority;
-
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.javatuples.Pair;
 import org.onap.so.client.exception.ExceptionBuilder;
@@ -45,105 +43,30 @@ import org.springframework.stereotype.Component;
 /**
  * Controls running all pre and post validation for workflows.
  * 
- * To define a validation you must make it a spring bean and implement either {@link org.onap.so.bpmn.common.validation.PreWorkflowValidator} or 
- * {@link org.onap.so.bpmn.common.validation.PostWorkflowValidator} your validation will automatically be
- * run by this class.
+ * To define a validation you must make it a spring bean and implement either
+ * {@link org.onap.so.bpmn.common.validation.PreWorkflowValidator} or
+ * {@link org.onap.so.bpmn.common.validation.PostWorkflowValidator} your validation will automatically be run by this
+ * class.
  *
  */
 @Component
-public class WorkflowValidatorRunner {
+public class WorkflowValidatorRunner extends FlowValidatorRunner<PreWorkflowValidator, PostWorkflowValidator> {
+
+    @PostConstruct
+    protected void init() {
+
+        preFlowValidators = new ArrayList<>(Optional.ofNullable(context.getBeansOfType(PreWorkflowValidator.class))
+                .orElse(new HashMap<>()).values());
+        postFlowValidators = new ArrayList<>(Optional.ofNullable(context.getBeansOfType(PostWorkflowValidator.class))
+                .orElse(new HashMap<>()).values());
+    }
 
-       private static Logger logger = LoggerFactory.getLogger(WorkflowValidatorRunner.class);
-       @Autowired
-       private ApplicationContext context;
-       
-       @Autowired
-       private ExceptionBuilder exceptionBuilder;
-       
-       private List<PreWorkflowValidator> preWorkflowValidators;
-       private List<PostWorkflowValidator> postWorkflowValidators;
+    protected List<PreWorkflowValidator> getPreFlowValidators() {
+        return this.preFlowValidators;
+    }
 
-       
-       @PostConstruct
-       protected void init() {
-               
-               preWorkflowValidators = new ArrayList<>(
-                               Optional.ofNullable(context.getBeansOfType(PreWorkflowValidator.class)).orElse(new HashMap<>()).values());
-               postWorkflowValidators = new ArrayList<>(
-                               Optional.ofNullable(context.getBeansOfType(PostWorkflowValidator.class)).orElse(new HashMap<>()).values());
-       }
-       
-       public boolean preValidate(String workflow, DelegateExecution execution) {
-               return validate(preWorkflowValidators, workflow, execution);
-       }
-       
-       
-       public boolean postValidate(String workflow, DelegateExecution execution) {
-               return validate(postWorkflowValidators, workflow, execution);
-       }
-       
-       
-       protected boolean validate(List<? extends WorkflowValidator> validators, String workflow, DelegateExecution execution) {
-               List<Pair<String, Boolean>> results = runValidations(validators, workflow, execution);
-               
-               if (!results.isEmpty()) {
-                       exceptionBuilder.buildAndThrowWorkflowException(execution, 7000,
-                                       "Failed Validations:\n" + results.stream().map(item -> item.getValue0()).collect(Collectors.joining("\n")));
-               }
-               
-               return true;
-               
-       }
-       protected List<Pair<String, Boolean>> runValidations(List<? extends WorkflowValidator> validators, String workflow, DelegateExecution execution) {
-               
-               List<WorkflowValidator> filtered = filterValidators(validators, workflow);
-               
-               List<Pair<String,Boolean>> results = new ArrayList<>();
-               filtered.forEach(item -> results.add(new Pair<>(item.getClass().getName(), item.validate(execution))));
-               
-               return results.stream().filter(item -> item.getValue1().equals(false)).collect(Collectors.toList());
-       }
-       
-       protected List<WorkflowValidator> filterValidators(List<? extends WorkflowValidator> validators, String workflow) {
-               return validators.stream()
-                               .filter(item -> {
-                                       return item.forWorkflowAction().contains(workflow);
-                               })
-                               .sorted(Comparator.comparing(item -> {
-                                       Priority p = Optional.ofNullable(item.getClass().getAnnotation(Priority.class)).orElse(new Priority() {
-                                               public int value() {
-                                                       return 1000;
-                                               }
+    protected List<PostWorkflowValidator> getPostFlowValidators() {
+        return this.postFlowValidators;
+    }
 
-                                               @Override
-                                               public Class<? extends Annotation> annotationType() {
-                                                       return Priority.class;
-                                               }
-                                       });
-                                       return p.value();
-                               })).collect(Collectors.toList());
-       }
-       
-       protected <T> List<T> buildalidatorList(Reflections reflections, Class<T> clazz) {
-               List<T> result = new ArrayList<>();
-               try {
-                       for (Class<? extends T> klass : reflections.getSubTypesOf(clazz)) {
-                               result.add(klass.newInstance());
-                       }
-               } catch (InstantiationException | IllegalAccessException e) {
-                       logger.error("failed to build validator list for " + clazz.getName(), e);
-                       throw new RuntimeException(e);
-               }
-               
-               return result;
-       }
-       
-       protected List<PreWorkflowValidator> getPreWorkflowValidators() {
-               return this.preWorkflowValidators;
-       }
-       
-       protected List<PostWorkflowValidator> getPostWorkflowValidators() {
-               return this.postWorkflowValidators;
-       }
-       
 }