You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ra...@apache.org on 2018/10/12 15:00:51 UTC

svn commit: r1843674 [2/22] - in /tomee/deps/branches/bval-2: ./ bundle/ bundle/src/ bundle/src/main/ bundle/src/main/appended-resources/ bundle/src/main/appended-resources/META-INF/ bval-extras/ bval-extras/src/ bval-extras/src/main/ bval-extras/src/m...

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as CUSIP<br/>
+ */
+@Documented
+@Constraint(validatedBy = CUSIPValidator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface CUSIP {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.CUSIP.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import static java.lang.Character.getNumericValue;
+
+/**
+ * Modulus 10 <b>CUSIP</b> (North American Securities)
+ * Check Digit calculation/validation.
+ * <p>
+ * CUSIP Numbers are 9 character alphanumeric codes used
+ * to identify North American Securities.
+ * <p>
+ * Check digit calculation uses the <i>Modulus 10 Double Add Double</i> technique
+ * with every second digit being weighted by 2. Alphabetic characters are
+ * converted to numbers by their position in the alphabet starting with A being 10.
+ * Weighted numbers greater than ten are treated as two separate numbers.
+ * <p>
+ *
+ * <p>
+ * See <a href="http://en.wikipedia.org/wiki/CUSIP">Wikipedia - CUSIP</a>
+ * for more details.
+ */
+public final class CUSIPValidator extends ModulusValidator<CUSIP> {
+
+    /** weighting given to digits depending on their right position */
+    private static final int[] POSITION_WEIGHT = new int[] { 2, 1 };
+
+    public CUSIPValidator() {
+        super(10);
+    }
+
+    /**
+     * Calculates the <i>weighted</i> value of a character in the
+     * code at a specified position.
+     * <p>
+     * ABA Routing numbers are weighted in the following manner:
+     * <pre><code>
+     *     left position: 1  2  3  4  5  6  7  8  9
+     *            weight: 3  7  1  3  7  1  3  7  1
+     * </code></pre>
+     *
+     * {@inheritDoc}
+     */
+    @Override
+    protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception {
+        int weight = POSITION_WEIGHT[rightPos % 2];
+        int weightedValue = (charValue * weight);
+        return sumDigits(weightedValue);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected int toInt(char character, int leftPos, int rightPos) {
+        int charValue = getNumericValue(character);
+        if (charValue < 0 || charValue > 35) {
+            throw new IllegalArgumentException("Invalid Character[" + leftPos + "] = '" + charValue + "'");
+        }
+        return charValue;
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as EAN13<br/>
+ */
+@Documented
+@Constraint(validatedBy = EAN13Validator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface EAN13 {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.EAN13.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+/**
+ * Modulus 10 <b>EAN-13</b> / <b>UPC</b> / <b>ISBN-13</b> Check Digit
+ * calculation/validation.
+ * <p>
+ * Check digit calculation is based on <i>modulus 10</i> with digits in
+ * an <i>odd</i> position (from right to left) being weighted 1 and <i>even</i>
+ * position digits being weighted 3.
+ * <p>
+ * For further information see:
+ * <ul>
+ *   <li>EAN-13 - see
+ *       <a href="http://en.wikipedia.org/wiki/European_Article_Number">Wikipedia -
+ *       European Article Number</a>.</li>
+ *   <li>UPC - see
+ *       <a href="http://en.wikipedia.org/wiki/Universal_Product_Code">Wikipedia -
+ *       Universal Product Code</a>.</li>
+ *   <li>ISBN-13 - see
+ *       <a href="http://en.wikipedia.org/wiki/ISBN">Wikipedia - International
+ *       Standard Book Number (ISBN)</a>.</li>
+ * </ul>
+ */
+public final class EAN13Validator extends ModulusValidator<EAN13> {
+
+    /** weighting given to digits depending on their right position */
+    private static final int[] POSITION_WEIGHT = new int[] { 3, 1 };
+
+    public EAN13Validator() {
+        super(10);
+    }
+
+    /**
+     * <p>Calculates the <i>weighted</i> value of a character in the
+     * code at a specified position.</p>
+     *
+     * <p>For EAN-13 (from right to left) <b>odd</b> digits are weighted
+     * with a factor of <b>one</b> and <b>even</b> digits with a factor
+     * of <b>three</b>.</p>
+     *
+     * {@inheritDoc}
+     */
+    @Override
+    protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception {
+        int weight = POSITION_WEIGHT[rightPos % 2];
+        return (charValue * weight);
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as IBAN<br/>
+ */
+@Documented
+@Constraint(validatedBy = IBANValidator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface IBAN {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.IBAN.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+import static java.lang.Character.getNumericValue;
+
+/**
+ * <b>IBAN</b> (International Bank Account Number) Check Digit calculation/validation.
+ * <p>
+ * This routine is based on the ISO 7064 Mod 97,10 check digit caluclation routine.
+ * <p>
+ * The two check digit characters in a IBAN number are the third and fourth characters
+ * in the code. For <i>check digit</i> calculation/validation the first four characters are moved
+ * to the end of the code.
+ *  So <code>CCDDnnnnnnn</code> becomes <code>nnnnnnnCCDD</code> (where
+ *  <code>CC</code> is the country code and <code>DD</code> is the check digit). For
+ *  check digit calcualtion the check digit value should be set to zero (i.e.
+ *  <code>CC00nnnnnnn</code> in this example.
+ * <p>
+ * For further information see
+ *  <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number">Wikipedia -
+ *  IBAN number</a>.
+ */
+public final class IBANValidator implements ConstraintValidator<IBAN, CharSequence> {
+
+    private static final long MAX = 999999999;
+
+    private static final long MODULUS = 97;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(CharSequence code, ConstraintValidatorContext context) {
+        if (code.length() < 5) {
+            return false;
+        }
+
+        String reformattedCode = code.subSequence(4, code.length()).toString() + code.subSequence(0, 4).toString();
+        long total = 0;
+        for (int i = 0; i < reformattedCode.length(); i++) {
+            int charValue = getNumericValue(reformattedCode.charAt(i));
+            if (charValue < 0 || charValue > 35) {
+                return false;
+            }
+            total = (charValue > 9 ? total * 100 : total * 10) + charValue;
+            if (total > MAX) {
+                total = (total % MODULUS);
+            }
+        }
+
+        return (total % MODULUS) == 1;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void initialize(IBAN iban) {
+        // not needed
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as ISBN10<br/>
+ */
+@Documented
+@Constraint(validatedBy = ISBN10Validator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface ISBN10 {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.ISBN10.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+/**
+ * Modulus 11 <b>ISBN-10</b> Check Digit calculation/validation.
+ * <p>
+ * ISBN-10 Numbers are a numeric code except for the last (check) digit
+ * which can have a value of "X".
+ * <p>
+ * Check digit calculation is based on <i>modulus 11</i> with digits being weighted
+ * based by their position, from right to left  with the first digit being weighted
+ * 1, the second 2 and so on. If the check digit is calculated as "10" it is converted
+ * to "X".
+ * <p>
+ * <b>N.B.</b> From 1st January 2007 the book industry will start to use a new 13 digit
+ * ISBN number (rather than this 10 digit ISBN number) which uses the EAN-13 / UPC
+ * (see {@link EAN13CheckDigit}) standard.
+ * <p>
+ * For further information see:
+ * <ul>
+ *   <li><a href="http://en.wikipedia.org/wiki/ISBN">Wikipedia - International
+ *       Standard Book Number (ISBN)</a>.</li>
+ *   <li><a href="http://www.isbn.org/standards/home/isbn/transition.asp">ISBN-13
+ *       Transition details</a>.</li>
+ * </ul>
+ */
+public final class ISBN10Validator extends ModulusValidator<ISBN10> {
+
+    public ISBN10Validator() {
+        super(11);
+    }
+
+    /**
+     * Calculates the <i>weighted</i> value of a charcter in the
+     * code at a specified position.
+     *
+     * <p>For ISBN-10 (from right to left) digits are weighted
+     * by their position.</p>
+     *
+     * {@inheritDoc}
+     */
+    @Override
+    protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception {
+        return (charValue * rightPos);
+    }
+
+    /**
+     * <p>Convert a character at a specified position to an
+     * integer value.</p>
+     *
+     * <p>Character 'X' check digit converted to 10.</p>
+     *
+     * {@inheritDoc}
+     */
+    @Override
+    protected int toInt(char character, int leftPos, int rightPos) {
+        if (rightPos == 1 && character == 'X') {
+            return 10;
+        }
+        return super.toInt(character, leftPos, rightPos);
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as Luhn<br/>
+ */
+@Documented
+@Constraint(validatedBy = LuhnValidator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Luhn {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.Luhn.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+/**
+ * Modulus 10 <b>Luhn</b> Check Digit calculation/validation.
+ * <p>
+ * Luhn check digits are used, for example, by:
+ * <ul>
+ *    <li><a href="http://en.wikipedia.org/wiki/Credit_card">Credit Card Numbers</a></li>
+ *    <li><a href="http://en.wikipedia.org/wiki/IMEI">IMEI Numbers</a> - International
+ *        Mobile Equipment Identity Numbers</li>
+ * </ul>
+ * Check digit calculation is based on <i>modulus 10</i> with digits in
+ * an <i>odd</i> position (from right to left) being weighted 1 and <i>even</i>
+ * position digits being weighted 2 (weighted values greater than 9 have 9 subtracted).
+ * <p>
+ * See <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Wikipedia</a>
+ * for more details.
+ */
+public final class LuhnValidator extends ModulusValidator<Luhn> {
+
+    /** weighting given to digits depending on their right position */
+    private static final int[] POSITION_WEIGHT = new int[] { 2, 1 };
+
+    public LuhnValidator() {
+        super(10);
+    }
+
+    /**
+     * <p>Calculates the <i>weighted</i> value of a charcter in the
+     * code at a specified position.</p>
+     *
+     * <p>For Luhn (from right to left) <b>odd</b> digits are weighted
+     * with a factor of <b>one</b> and <b>even</b> digits with a factor
+     * of <b>two</b>. Weighted values > 9, have 9 subtracted</p>
+     *
+     * {@inheritDoc}
+     */
+    @Override
+    protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception {
+        int weight = POSITION_WEIGHT[rightPos % 2];
+        int weightedValue = (charValue * weight);
+        return (weightedValue > 9 ? (weightedValue - 9) : weightedValue);
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.lang.annotation.Annotation;
+
+import static java.lang.Character.getNumericValue;
+import static java.lang.Character.isDigit;
+
+/**
+ * Abstract <b>Modulus</b> Check digit calculation/validation.
+ * <p>
+ * Provides a <i>base</i> class for building <i>modulus</i> Check
+ * Digit routines.
+ * <p>
+ * This implementation only handles <i>numeric</i> codes, such as
+ * <b>EAN-13</b>. For <i>alphanumeric</i> codes such as <b>EAN-128</b> you
+ * will need to implement/override the <code>toInt()</code> and
+ * <code>toChar()</code> methods.
+ *
+ * @param <A>
+ */
+abstract class ModulusValidator<A extends Annotation> implements ConstraintValidator<A, CharSequence> {
+
+    private final int modulus;
+
+    public ModulusValidator(int modulus) {
+        this.modulus = modulus;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public final void initialize(A annotation) {
+        // not needed ATM
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(CharSequence code, ConstraintValidatorContext context) {
+        if (code.length() == 0) {
+            return false;
+        }
+        int total = 0;
+        for (int i = 0; i < code.length(); i++) {
+            int lth = code.length();
+            int leftPos = i + 1;
+            int rightPos = lth - i;
+            try {
+                int charValue = toInt(code.charAt(i), leftPos, rightPos);
+                total += weightedValue(charValue, leftPos, rightPos);
+            } catch (Throwable e) {
+                return false;
+            }
+        }
+        if (total == 0) {
+            return false;
+        }
+        return (total % modulus) == 0;
+    }
+
+    /**
+     * Calculates the <i>weighted</i> value of a character in the
+     * code at a specified position.
+     * <p>
+     * Some modulus routines weight the value of a character
+     * depending on its position in the code (e.g. ISBN-10), while
+     * others use different weighting factors for odd/even positions
+     * (e.g. EAN or Luhn). Implement the appropriate mechanism
+     * required by overriding this method.
+     *
+     * @param charValue The numeric value of the character
+     * @param leftPos The position of the character in the code, counting from left to right
+     * @param rightPos The position of the character in the code, counting from right to left
+     * @return The weighted value of the character
+     */
+    protected abstract int weightedValue(int charValue, int leftPos, int rightPos) throws Exception;
+
+    /**
+     * Convert a character at a specified position to an integer value.
+     * <p>
+     * <b>Note:</b> this implementation only handlers numeric values
+     * For non-numeric characters, override this method to provide
+     * character-->integer conversion.
+     *
+     * @param character The character to convert
+     * @param leftPos The position of the character in the code, counting from left to right
+     * @param rightPos The positionof the character in the code, counting from right to left
+     * @return The integer value of the character
+     */
+    protected int toInt(char character, int leftPos, int rightPos) {
+        if (isDigit(character)) {
+            return getNumericValue(character);
+        }
+        throw new IllegalArgumentException("Invalid Character[" + leftPos + "] = '" + character + "'");
+    }
+
+    /**
+     * Add together the individual digits in a number.
+     *
+     * @param number The number whose digits are to be added
+     * @return The sum of the digits
+     */
+    protected static int sumDigits(int number) {
+        int total = 0;
+        int todo = number;
+        while (todo > 0) {
+            total += todo % 10;
+            todo = todo / 10;
+        }
+        return total;
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as Sedol<br/>
+ */
+@Documented
+@Constraint(validatedBy = SedolValidator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Sedol {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.Sedol.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import static java.lang.Character.getNumericValue;
+
+/**
+ * Modulus 10 <b>SEDOL</b> (UK Securities) Check Digit calculation/validation.
+ * <p>
+ * SEDOL Numbers are 7 character alphanumeric codes used
+ * to identify UK Securities (SEDOL stands for Stock Exchange Daily Official List).
+ * <p>
+ * Check digit calculation is based on <i>modulus 10</i> with digits being weighted
+ * based on their position, from left to right, as follows:
+ * <p>
+ * <pre><code>
+ *      position:  1  2  3  4  5  6  7
+ *     weighting:  1  3  1  7  3  9  1
+ * </code></pre>
+ * <p>
+ * See <a href="http://en.wikipedia.org/wiki/SEDOL">Wikipedia - SEDOL</a>
+ * for more details.
+ */
+public final class SedolValidator extends ModulusValidator<Sedol> {
+
+    /** weighting given to digits depending on their right position */
+    private static final int[] POSITION_WEIGHT = new int[] { 1, 3, 1, 7, 3, 9, 1 };
+
+    public SedolValidator() {
+        super(10);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception {
+        return (charValue * POSITION_WEIGHT[leftPos - 1]);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected int toInt(char character, int leftPos, int rightPos) {
+        int charValue = getNumericValue(character);
+        if (charValue < 0 || charValue > 35) {
+            throw new IllegalArgumentException("Invalid Character[" + leftPos + "] = '" + charValue + "'");
+        }
+        return charValue;
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate as Verhoeff<br/>
+ */
+@Documented
+@Constraint(validatedBy = VerhoeffValidator.class)
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Verhoeff {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.checkdigit.Verhoeff.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.checkdigit;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+import static java.lang.Character.getNumericValue;
+
+/**
+ * <b>Verhoeff</b> (Dihedral) Check Digit calculation/validation.
+ * <p>
+ * Check digit calculation for numeric codes using a
+ * <a href="http://en.wikipedia.org/wiki/Dihedral_group">Dihedral Group</a>
+ * of order 10.
+ * <p>
+ * See <a href="http://en.wikipedia.org/wiki/Verhoeff_algorithm">Wikipedia
+ *  - Verhoeff algorithm</a> for more details.
+ */
+public final class VerhoeffValidator implements ConstraintValidator<Verhoeff, CharSequence> {
+
+    //@formatter:off
+    /** D - multiplication table */
+    private static final int[][] D_TABLE = new int[][] {
+        {0,  1,  2,  3,  4,  5,  6,  7,  8,  9},
+        {1,  2,  3,  4,  0,  6,  7,  8,  9,  5},
+        {2,  3,  4,  0,  1,  7,  8,  9,  5,  6},
+        {3,  4,  0,  1,  2,  8,  9,  5,  6,  7},
+        {4,  0,  1,  2,  3,  9,  5,  6,  7,  8},
+        {5,  9,  8,  7,  6,  0,  4,  3,  2,  1},
+        {6,  5,  9,  8,  7,  1,  0,  4,  3,  2},
+        {7,  6,  5,  9,  8,  2,  1,  0,  4,  3},
+        {8,  7,  6,  5,  9,  3,  2,  1,  0,  4},
+        {9,  8,  7,  6,  5,  4,  3,  2,  1,  0}};
+
+    /** P - permutation table */
+    private static final int[][] P_TABLE = new int[][] {
+        {0,  1,  2,  3,  4,  5,  6,  7,  8,  9},
+        {1,  5,  7,  6,  2,  8,  3,  0,  9,  4},
+        {5,  8,  0,  3,  7,  9,  6,  1,  4,  2},
+        {8,  9,  1,  6,  0,  4,  3,  5,  2,  7},
+        {9,  4,  5,  3,  1,  2,  6,  8,  7,  0},
+        {4,  2,  8,  6,  5,  7,  3,  9,  0,  1},
+        {2,  7,  9,  3,  8,  0,  6,  4,  1,  5},
+        {7,  0,  4,  6,  9,  1,  3,  2,  5,  8}};
+    //@formatter:on
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(CharSequence code, ConstraintValidatorContext context) {
+        if (code.length() == 0) {
+            return false;
+        }
+
+        int checksum = 0;
+        for (int i = 0; i < code.length(); i++) {
+            int idx = code.length() - (i + 1);
+            int num = getNumericValue(code.charAt(idx));
+            if (num < 0 || num > 9) {
+                return false;
+            }
+            checksum = D_TABLE[checksum][P_TABLE[i % 8][num]];
+        }
+        return checksum == 0;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void initialize(Verhoeff iban) {
+        // not needed
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+/**
+ * This package contains <i>Check Digit</i> validation routines.
+ */
+package org.apache.bval.extras.constraints.checkdigit;

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.creditcard;
+
+import org.apache.bval.extras.constraints.checkdigit.Luhn;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Luhn
+@Pattern(regexp = "^(3[47]\\d{13})$")
+@Constraint(validatedBy = {})
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface AmericanExpress {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.creditcard.AmericanExpress.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.creditcard;
+
+import org.apache.bval.extras.constraints.checkdigit.Luhn;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Luhn
+@Pattern(regexp = "^(30[0-5]\\d{11}|3095\\d{10}|36\\d{12}|3[8-9]\\d{12})$")
+@Constraint(validatedBy = {})
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Diners {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.creditcard.Diners.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.creditcard;
+
+import org.apache.bval.extras.constraints.checkdigit.Luhn;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Luhn
+@Pattern(regexp = "^((6011\\d{12})|(64[4-9]\\d{13})|(65\\d{14}))$")
+@Constraint(validatedBy = {})
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Discover {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.creditcard.Discover.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.creditcard;
+
+import org.apache.bval.extras.constraints.checkdigit.Luhn;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Luhn
+@Pattern(regexp = "^(5[1-5]\\d{14})$")
+@Constraint(validatedBy = {})
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Retention(RUNTIME)
+public @interface Mastercard {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.creditcard.Mastercard.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.creditcard;
+
+import org.apache.bval.extras.constraints.checkdigit.Luhn;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Luhn
+@Pattern(regexp = "^(4)(\\d{12}|\\d{15})$")
+@Constraint(validatedBy = {})
+@Target({ FIELD, ANNOTATION_TYPE, PARAMETER })
+@Retention(RUNTIME)
+public @interface Visa {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.creditcard.Visa.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+/**
+ * This package contains <i>Credit Card</i> validation routines.
+ */
+package org.apache.bval.extras.constraints.creditcard;

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Constraint(validatedBy = DirectoryValidator.class)
+@Target({ FIELD, ANNOTATION_TYPE, PARAMETER })
+@Retention(RUNTIME)
+public @interface Directory {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.file.Directory.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.io.File;
+
+/**
+ * Description: <br/>
+ */
+public class DirectoryValidator implements ConstraintValidator<Directory, File> {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(File value, ConstraintValidatorContext context) {
+        return value.isDirectory();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void initialize(Directory parameters) {
+        // do nothing (as long as Directory has no properties)
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is not a directory<br/>
+ */
+@Documented
+@Constraint(validatedBy = DirectoryValidator.class)
+@Target({ FIELD, ANNOTATION_TYPE, PARAMETER })
+@Retention(RUNTIME)
+public @interface NotDirectory {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.file.NotDirectory.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.io.File;
+
+/**
+ * Description: <br/>
+ */
+public class NotDirectoryValidator implements ConstraintValidator<NotDirectory, File> {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(File value, ConstraintValidatorContext context) {
+        return value.exists() && !value.isDirectory();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void initialize(NotDirectory parameters) {
+        // do nothing (as long as Directory has no properties)
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a symbolic link<br/>
+ */
+@Documented
+@Constraint(validatedBy = SymlinkValidator.class)
+@Target({ FIELD, ANNOTATION_TYPE, PARAMETER })
+@Retention(RUNTIME)
+public @interface Symlink {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.file.Symlink.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.file;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Description: <br/>
+ */
+public class SymlinkValidator implements ConstraintValidator<Symlink, File> {
+
+    /**
+     * The Windows separator character.
+     */
+    private static final char WINDOWS_SEPARATOR = '\\';
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isValid(File value, ConstraintValidatorContext context) {
+        if (!value.exists()) {
+            return false;
+        }
+
+        // routine kindly borrowed from Apache Commons-IO
+
+        if (File.separatorChar == WINDOWS_SEPARATOR) {
+            return false;
+        }
+
+        try {
+            File fileInCanonicalDir;
+            if (value.getParent() == null) {
+                fileInCanonicalDir = value;
+            } else {
+                File canonicalDir = value.getParentFile().getCanonicalFile();
+                fileInCanonicalDir = new File(canonicalDir, value.getName());
+            }
+
+            return (!fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile()));
+        } catch (IOException e) {
+            // TODO: is it true?
+            return false;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void initialize(Symlink parameters) {
+        // do nothing (as long as Symlink has no properties)
+    }
+
+}

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+/**
+ * {@link java.io.File} constraints validators.
+ */
+package org.apache.bval.extras.constraints.file;

Added: tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java
URL: http://svn.apache.org/viewvc/tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java?rev=1843674&view=auto
==============================================================================
--- tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java (added)
+++ tomee/deps/branches/bval-2/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java Fri Oct 12 15:00:48 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.bval.extras.constraints.net;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * --
+ * TODO - This class is NOT part of the bean_validation spec and might disappear
+ * as soon as a final version of the specification contains a similar functionality.
+ * --
+ * </p>
+ * Description: annotation to validate a java.io.File is a directory<br/>
+ */
+@Documented
+@Constraint(validatedBy = DomainValidator.class)
+@Target({ FIELD, ANNOTATION_TYPE, PARAMETER })
+@Retention(RUNTIME)
+public @interface Domain {
+
+    Class<?>[] groups() default {};
+
+    String message() default "{org.apache.bval.extras.constraints.net.Domain.message}";
+
+    Class<? extends Payload>[] payload() default {};
+
+    boolean allowLocal() default false;
+
+}