You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/10 00:03:35 UTC

[isis] 01/03: ISIS-2261: adds in custom validator for Pattern -> Optional

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a7111642054bd642c063d91de2362188477d2b4d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 9 23:36:38 2020 +0000

    ISIS-2261: adds in custom validator for Pattern -> Optional<String>
---
 core/config/pom.xml                                | 12 ++++++
 .../org/apache/isis/config/IsisConfiguration.java  |  2 +-
 .../org/apache/isis/config/IsisModuleConfig.java   |  2 +
 .../PatternOptionalStringConstraintValidator.java  | 43 ++++++++++++++++++++++
 .../services/javax.validation.ConstraintValidator  |  1 +
 ...plugins.beantyperegistry.BeanTypeRegistryPlugin |  1 -
 6 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/core/config/pom.xml b/core/config/pom.xml
index d0e4c10..06051a2 100644
--- a/core/config/pom.xml
+++ b/core/config/pom.xml
@@ -83,6 +83,18 @@
         	<artifactId>isis-applib</artifactId>
         	<type>test-jar</type>
         </dependency>
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.1.0.Final</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.1.0.Final</version>
+            <scope>compile</scope>
+        </dependency>
 
 
     </dependencies>
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 565592d..a91d48c 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -725,7 +725,7 @@ public class IsisConfiguration {
              * If set, eg <code>https://dev.myapp.com/</code>, then this value will be used instead.
              * </p>
              */
-            @javax.validation.constraints.Pattern(regexp="^http[s]?://[^:]+?(:\\d+)?/$")
+            @javax.validation.constraints.Pattern(regexp="^http[s]?://[^:]+?(:\\d+)?/([^/]+/)*$")
             private Optional<String> baseUri = Optional.empty();
             private final Gsoc2013 gsoc2013 = new Gsoc2013();
             @Data
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisModuleConfig.java b/core/config/src/main/java/org/apache/isis/config/IsisModuleConfig.java
index 4575e21..eb30971 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisModuleConfig.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisModuleConfig.java
@@ -29,6 +29,7 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.commons.IsisModuleCommons;
 import org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring;
+import org.apache.isis.config.validators.PatternOptionalStringConstraintValidator;
 import org.apache.isis.config.viewer.wicket.WebAppConfiguration;
 import org.apache.isis.config.viewer.wicket.WebAppContextPath;
 
@@ -40,6 +41,7 @@ import org.apache.isis.config.viewer.wicket.WebAppContextPath;
     // @Component's
     IsisConfiguration.PatternsConverter.class,
     IsisBeanFactoryPostProcessorForSpring.class,
+    PatternOptionalStringConstraintValidator.class,
 
     // @Service's
     WebAppConfiguration.class,
diff --git a/core/config/src/main/java/org/apache/isis/config/validators/PatternOptionalStringConstraintValidator.java b/core/config/src/main/java/org/apache/isis/config/validators/PatternOptionalStringConstraintValidator.java
new file mode 100644
index 0000000..d918440
--- /dev/null
+++ b/core/config/src/main/java/org/apache/isis/config/validators/PatternOptionalStringConstraintValidator.java
@@ -0,0 +1,43 @@
+package org.apache.isis.config.validators;
+
+import java.util.Optional;
+import java.util.regex.Pattern;
+
+import javax.annotation.RegEx;
+import javax.validation.Configuration;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import javax.validation.ValidatorFactory;
+import javax.validation.spi.BootstrapState;
+import javax.validation.spi.ConfigurationState;
+import javax.validation.spi.ValidationProvider;
+
+import org.hibernate.validator.internal.constraintvalidators.bv.PatternValidator;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PatternOptionalStringConstraintValidator
+        implements ConstraintValidator<javax.validation.constraints.Pattern, Optional<String>> {
+
+
+    private final PatternValidator patternValidator = new PatternValidator();
+
+    public PatternOptionalStringConstraintValidator(){
+    }
+
+    @Override
+    public void initialize(javax.validation.constraints.Pattern constraintAnnotation) {
+        patternValidator.initialize(constraintAnnotation);
+    }
+
+    @Override
+    public boolean isValid(
+            final Optional<String> value,
+            final ConstraintValidatorContext context) {
+        if(!value.isPresent()) {
+            return true;
+        }
+        return patternValidator.isValid(value.get(), context);
+    }
+}
diff --git a/core/config/src/main/resources/META-INF/services/javax.validation.ConstraintValidator b/core/config/src/main/resources/META-INF/services/javax.validation.ConstraintValidator
new file mode 100644
index 0000000..6c0435a
--- /dev/null
+++ b/core/config/src/main/resources/META-INF/services/javax.validation.ConstraintValidator
@@ -0,0 +1 @@
+org.apache.isis.config.validators.PatternOptionalStringConstraintValidator
\ No newline at end of file
diff --git a/core/config/src/main/resources/META-INF/services/org.apache.isis.commons.internal.plugins.beantyperegistry.BeanTypeRegistryPlugin b/core/config/src/main/resources/META-INF/services/org.apache.isis.commons.internal.plugins.beantyperegistry.BeanTypeRegistryPlugin
deleted file mode 100644
index 3bf01f0..0000000
--- a/core/config/src/main/resources/META-INF/services/org.apache.isis.commons.internal.plugins.beantyperegistry.BeanTypeRegistryPlugin
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.isis.config.registry.IsisBeanTypeRegistry_UnitTestSupport
\ No newline at end of file