diff --git a/src/main/java/uk/org/iay/incommon/mda/validate/string/AcceptStringRegexValidator.java b/src/main/java/uk/org/iay/incommon/mda/validate/string/AcceptStringRegexValidator.java
index b6850cb..909e136 100644
--- a/src/main/java/uk/org/iay/incommon/mda/validate/string/AcceptStringRegexValidator.java
+++ b/src/main/java/uk/org/iay/incommon/mda/validate/string/AcceptStringRegexValidator.java
@@ -15,16 +15,11 @@
package uk.org.iay.incommon.mda.validate.string;
import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import net.shibboleth.metadata.Item;
-import net.shibboleth.metadata.validate.BaseValidator;
import net.shibboleth.metadata.validate.Validator;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
/**
* A Validator that accepts {@link String} values matching a regular expression.
@@ -32,56 +27,15 @@
* This validator returns {@link net.shibboleth.metadata.validate.Validator.Action#DONE}
* if the entire value is matched by the regular expression, thus terminating any validator sequence.
*/
-public class AcceptStringRegexValidator extends BaseValidator implements Validator {
-
- /** Regular expression to be accepted by this validator. */
- @NonnullAfterInit
- private String regex;
-
- /** Compiled regular expression to use in match operations. */
- @NonnullAfterInit
- private Pattern pattern;
-
- /**
- * Returns the regular expression.
- *
- * @return Returns the regular expression.
- */
- @NonnullAfterInit
- public String getRegex() {
- return regex;
- }
-
- /**
- * Sets the regular expression to be accepted.
- *
- * @param r the regular expression to set.
- */
- public void setRegex(@Nonnull final String r) {
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
- regex = r;
- }
+public class AcceptStringRegexValidator extends BaseStringRegexValidator implements Validator {
@Override
public Action validate(@Nonnull final String e, @Nonnull final Item> item, @Nonnull final String stageId) {
- final Matcher matcher = pattern.matcher(e);
+ final Matcher matcher = getPattern().matcher(e);
if (matcher.matches()) {
return Action.DONE;
} else {
return Action.CONTINUE;
}
}
-
- @Override
- protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
-
- if (getRegex() == null) {
- throw new ComponentInitializationException("regular expression to be matched can not be null");
- }
-
- pattern = Pattern.compile(regex);
- }
}
diff --git a/src/main/java/uk/org/iay/incommon/mda/validate/string/BaseStringRegexValidator.java b/src/main/java/uk/org/iay/incommon/mda/validate/string/BaseStringRegexValidator.java
new file mode 100644
index 0000000..234e858
--- /dev/null
+++ b/src/main/java/uk/org/iay/incommon/mda/validate/string/BaseStringRegexValidator.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package uk.org.iay.incommon.mda.validate.string;
+
+import java.util.regex.Pattern;
+
+import javax.annotation.Nonnull;
+
+import net.shibboleth.metadata.validate.BaseValidator;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
+
+/**
+ * A base class for Validators that match {@link String} values against a regular expression.
+ */
+public abstract class BaseStringRegexValidator extends BaseValidator {
+
+ /** Regular expression to be accepted by this validator. */
+ @NonnullAfterInit
+ private String regex;
+
+ /** Compiled regular expression to use in match operations. */
+ @NonnullAfterInit
+ private Pattern pattern;
+
+ /**
+ * Returns the regular expression.
+ *
+ * @return Returns the regular expression.
+ */
+ @NonnullAfterInit
+ public String getRegex() {
+ return regex;
+ }
+
+ /**
+ * Sets the regular expression to be accepted.
+ *
+ * @param r the regular expression to set.
+ */
+ public void setRegex(@Nonnull final String r) {
+ ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
+ regex = r;
+ }
+
+ /**
+ * Get the compiled regular expression for use in matching.
+ *
+ * @return the compiled {@link Pattern}
+ */
+ protected Pattern getPattern() {
+ return pattern;
+ }
+
+ @Override
+ protected void doInitialize() throws ComponentInitializationException {
+ super.doInitialize();
+
+ if (getRegex() == null) {
+ throw new ComponentInitializationException("regular expression to be matched can not be null");
+ }
+
+ pattern = Pattern.compile(regex);
+ }
+
+}