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 <[email protected]> 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))
