You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2022/11/10 17:32:27 UTC

[uima-uimafit] branch feature/209-Ability-to-override-validator-for-a-test created (now fc02420)

This is an automated email from the ASF dual-hosted git repository.

rec pushed a change to branch feature/209-Ability-to-override-validator-for-a-test
in repository https://gitbox.apache.org/repos/asf/uima-uimafit.git


      at fc02420  Issue #209: Ability to override validator for a test

This branch includes the following new commits:

     new fc02420  Issue #209: Ability to override validator for a test

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[uima-uimafit] 01/01: Issue #209: Ability to override validator for a test

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch feature/209-Ability-to-override-validator-for-a-test
in repository https://gitbox.apache.org/repos/asf/uima-uimafit.git

commit fc02420bd920ab8bb7599b977d816fcb5f3e6cc1
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Thu Nov 10 18:32:20 2022 +0100

    Issue #209: Ability to override validator for a test
    
    - Allow settings a default validator for all tests and a specific validator per test
---
 .../apache/uima/fit/testing/junit/ManagedCas.java  | 31 +++++++++++++++++-----
 .../apache/uima/fit/testing/junit/ManagedJCas.java | 29 ++++++++++++++++----
 2 files changed, 49 insertions(+), 11 deletions(-)

diff --git a/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedCas.java b/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedCas.java
index 0d3a063..cfb50aa 100644
--- a/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedCas.java
+++ b/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedCas.java
@@ -54,7 +54,8 @@ public final class ManagedCas implements TestWatcher, AfterTestExecutionCallback
 
   private final Set<CAS> managedCases = synchronizedSet(newSetFromMap(new WeakHashMap<>()));
 
-  private Validator validator = new Validator.Builder().build();
+  private Validator defaultValidator = new Validator.Builder().build();
+  private Validator validator = null;
 
   /**
    * Provides a CAS with an auto-detected type system.
@@ -103,8 +104,12 @@ public final class ManagedCas implements TestWatcher, AfterTestExecutionCallback
 
   @Override
   public void afterTestExecution(ExtensionContext context) throws Exception {
-    managedCases.forEach(this::assertValid);
-    managedCases.forEach(CAS::reset);
+    try {
+      managedCases.forEach(this::assertValid);
+      managedCases.forEach(CAS::reset);
+    } finally {
+      this.validator = null;
+    }
   }
 
   public ManagedCas skipValidation() {
@@ -112,18 +117,32 @@ public final class ManagedCas implements TestWatcher, AfterTestExecutionCallback
     return this;
   }
 
+  public ManagedCas withDefaultValidator(Validator aValidator) {
+    this.defaultValidator = aValidator;
+    return this;
+  }
+
   public ManagedCas withValidator(Validator aValidator) {
     this.validator = aValidator;
     return this;
   }
 
-  private void assertValid(CAS aJCas) {
-    if (validator == null) {
+  private Validator getValidator() {
+    if (validator != null) {
+      return validator;
+    }
+
+    return defaultValidator;
+  }
+
+  private void assertValid(CAS aCas) {
+    Validator activeValidator = getValidator();
+    if (getValidator() == null) {
       return;
     }
 
     try {
-      ValidationSummary summary = validator.check(aJCas);
+      ValidationSummary summary = activeValidator.check(aCas);
 
       String messageBuffer = summary.getResults().stream()
               .filter(r -> r.getSeverity().isEquallyOrMoreSevereThan(ERROR))
diff --git a/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedJCas.java b/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedJCas.java
index 2d34514..fb2c0d9 100644
--- a/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedJCas.java
+++ b/uimafit-junit/src/main/java/org/apache/uima/fit/testing/junit/ManagedJCas.java
@@ -55,7 +55,8 @@ public final class ManagedJCas
 
   private final Set<JCas> managedCases = synchronizedSet(newSetFromMap(new WeakHashMap<>()));
 
-  private Validator validator = new Validator.Builder().build();
+  private Validator defaultValidator = new Validator.Builder().build();
+  private Validator validator = null;
 
   /**
    * Provides a JCas with an auto-detected type system.
@@ -104,8 +105,12 @@ public final class ManagedJCas
 
   @Override
   public void afterTestExecution(ExtensionContext context) throws Exception {
-    managedCases.forEach(this::assertValid);
-    managedCases.forEach(JCas::reset);
+    try {
+      managedCases.forEach(this::assertValid);
+      managedCases.forEach(JCas::reset);
+    } finally {
+      this.validator = null;
+    }
   }
 
   public ManagedJCas skipValidation() {
@@ -113,18 +118,32 @@ public final class ManagedJCas
     return this;
   }
 
+  public ManagedJCas withDefaultValidator(Validator aValidator) {
+    this.defaultValidator = aValidator;
+    return this;
+  }
+
   public ManagedJCas withValidator(Validator aValidator) {
     this.validator = aValidator;
     return this;
   }
 
+  private Validator getValidator() {
+    if (validator != null) {
+      return validator;
+    }
+
+    return defaultValidator;
+  }
+
   private void assertValid(JCas aJCas) {
-    if (validator == null) {
+    Validator activeValidator = getValidator();
+    if (getValidator() == null) {
       return;
     }
 
     try {
-      ValidationSummary summary = validator.check(aJCas);
+      ValidationSummary summary = activeValidator.check(aJCas);
 
       String messageBuffer = summary.getResults().stream()
               .filter(r -> r.getSeverity().isEquallyOrMoreSevereThan(ERROR))