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