Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / common / validation / FlowValidatorRunner.java
index 2cc6415..0bdf4e3 100644 (file)
@@ -26,9 +26,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
 import javax.annotation.Priority;
-
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.javatuples.Pair;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
@@ -45,116 +43,119 @@ import org.springframework.stereotype.Component;
 /**
  * Controls running all pre and post validation for flows.
  * 
- * To define a validation you must make it a spring bean and implement either {@link org.onap.so.bpmn.common.validation.PreFlowValidator} or 
- * {@link org.onap.so.bpmn.common.validation.PostFlowValidator} 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.PreFlowValidator} or
+ * {@link org.onap.so.bpmn.common.validation.PostFlowValidator} your validation will automatically be run by this class.
  *
  */
 @Component
 public abstract class FlowValidatorRunner<S extends FlowValidator, E extends FlowValidator> {
 
-       private static Logger logger = LoggerFactory.getLogger(FlowValidatorRunner.class);
-       @Autowired
-       protected ApplicationContext context;
-       
-       @Autowired
-       protected ExceptionBuilder exceptionBuilder;
-       
-       protected List<S> preFlowValidators;
-       protected List<E> postFlowValidators;
-
-       
-
-       /**
-        * Changed to object because JUEL does not support overloaded methods
-        * 
-        * @param bbName
-        * @param execution
-        * @return
-        */
-       public boolean preValidate(String bbName, Object execution) {
-               return validateHelper(bbName, preFlowValidators, execution);
-       }
-       
-       /**
-        * Changed to object because JUEL does not support overloaded methods
-        * 
-        * @param bbName
-        * @param execution
-        * @return
-        */
-       public boolean postValidate(String bbName, Object execution) {
-               return validateHelper(bbName, postFlowValidators, execution);
-       }
-       
-       protected boolean validateHelper(String bbName, List<? extends FlowValidator> validators, Object obj) {
-               
-               if (obj instanceof DelegateExecution) {
-                       return validate(validators, bbName, new DelegateExecutionImpl((DelegateExecution)obj));
-               } else if (obj instanceof BuildingBlockExecution) {
-                       return validate(validators, bbName, (BuildingBlockExecution)obj);
-               } else {
-                       return false;
-               }
-       }
-       
-       protected boolean validate(List<? extends FlowValidator> validators, String bbName, BuildingBlockExecution execution) {
-               List<Pair<String, Optional<String>>> results = runValidations(validators, bbName, execution);
-               
-               if (!results.isEmpty()) {
-                       exceptionBuilder.buildAndThrowWorkflowException(execution, 7000,
-                                       "Failed Validations:\n" + results.stream().map(item -> String.format("%s: %s", item.getValue0(), item.getValue1().get())).collect(Collectors.joining("\n")));
-               }
-               
-               return true;
-               
-       }
-       protected List<Pair<String, Optional<String>>> runValidations(List<? extends FlowValidator> validators, String bbName, BuildingBlockExecution execution) {
-               
-               List<FlowValidator> filtered = filterValidators(validators, bbName);
-               
-               List<Pair<String,Optional<String>>> results = new ArrayList<>();
-               filtered.forEach(item -> results.add(new Pair<>(item.getClass().getName(), item.validate(execution))));
-               
-               return results.stream().filter(item -> item.getValue1().isPresent()).collect(Collectors.toList());
-       }
-       
-       protected List<FlowValidator> filterValidators(List<? extends FlowValidator> validators, String bbName) {
-               return validators.stream()
-                               .filter(item -> {
-                                       return !item.getClass().isAnnotationPresent(Skip.class) && item.shouldRunFor(bbName);
-                               })
-                               .sorted(Comparator.comparing(item -> {
-                                       Priority p = Optional.ofNullable(item.getClass().getAnnotation(Priority.class)).orElse(new Priority() {
-                                               public int value() {
-                                                       return 1000;
-                                               }
-
-                                               @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 abstract List<S> getPreFlowValidators();
-       
-       protected abstract List<E> getPostFlowValidators();
-       
+    private static Logger logger = LoggerFactory.getLogger(FlowValidatorRunner.class);
+    @Autowired
+    protected ApplicationContext context;
+
+    @Autowired
+    protected ExceptionBuilder exceptionBuilder;
+
+    protected List<S> preFlowValidators;
+    protected List<E> postFlowValidators;
+
+
+
+    /**
+     * Changed to object because JUEL does not support overloaded methods
+     * 
+     * @param bbName
+     * @param execution
+     * @return
+     */
+    public boolean preValidate(String bbName, Object execution) {
+        return validateHelper(bbName, preFlowValidators, execution);
+    }
+
+    /**
+     * Changed to object because JUEL does not support overloaded methods
+     * 
+     * @param bbName
+     * @param execution
+     * @return
+     */
+    public boolean postValidate(String bbName, Object execution) {
+        return validateHelper(bbName, postFlowValidators, execution);
+    }
+
+    protected boolean validateHelper(String bbName, List<? extends FlowValidator> validators, Object obj) {
+
+        if (obj instanceof DelegateExecution) {
+            return validate(validators, bbName, new DelegateExecutionImpl((DelegateExecution) obj));
+        } else if (obj instanceof BuildingBlockExecution) {
+            return validate(validators, bbName, (BuildingBlockExecution) obj);
+        } else {
+            return false;
+        }
+    }
+
+    protected boolean validate(List<? extends FlowValidator> validators, String bbName,
+            BuildingBlockExecution execution) {
+        List<Pair<String, Optional<String>>> results = runValidations(validators, bbName, execution);
+
+        if (!results.isEmpty()) {
+            exceptionBuilder.buildAndThrowWorkflowException(execution, 7000,
+                    "Failed Validations:\n" + results.stream()
+                            .map(item -> String.format("%s: %s", item.getValue0(), item.getValue1().get()))
+                            .collect(Collectors.joining("\n")));
+        }
+
+        return true;
+
+    }
+
+    protected List<Pair<String, Optional<String>>> runValidations(List<? extends FlowValidator> validators,
+            String bbName, BuildingBlockExecution execution) {
+
+        List<FlowValidator> filtered = filterValidators(validators, bbName);
+
+        List<Pair<String, Optional<String>>> results = new ArrayList<>();
+        filtered.forEach(item -> results.add(new Pair<>(item.getClass().getName(), item.validate(execution))));
+
+        return results.stream().filter(item -> item.getValue1().isPresent()).collect(Collectors.toList());
+    }
+
+    protected List<FlowValidator> filterValidators(List<? extends FlowValidator> validators, String bbName) {
+        return validators.stream().filter(item -> {
+            return !item.getClass().isAnnotationPresent(Skip.class) && item.shouldRunFor(bbName);
+        }).sorted(Comparator.comparing(item -> {
+            Priority p = Optional.ofNullable(item.getClass().getAnnotation(Priority.class)).orElse(new Priority() {
+                public int value() {
+                    return 1000;
+                }
+
+                @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 abstract List<S> getPreFlowValidators();
+
+    protected abstract List<E> getPostFlowValidators();
+
 }