You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jo...@apache.org on 2017/09/04 21:01:50 UTC

svn commit: r1807299 [1/2] - in /geronimo/specs/trunk/geronimo-validation_2.0_spec: ./ src/main/java/javax/validation/ src/main/java/javax/validation/bootstrap/ src/main/java/javax/validation/constraints/ src/main/java/javax/validation/executable/ src/...

Author: johndament
Date: Mon Sep  4 21:01:48 2017
New Revision: 1807299

URL: http://svn.apache.org/viewvc?rev=1807299&view=rev
Log:
GERONIMO-6581 Bean Validation 2.0 API

Based on patch from mbenson

Added:
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ClockProvider.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/NoProviderFoundException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Email.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/FutureOrPresent.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Negative.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NegativeOrZero.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotBlank.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotEmpty.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/PastOrPresent.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Positive.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/PositiveOrZero.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ContainerDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ContainerElementTypeDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ValidateUnwrappedValue.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/ExtractedValue.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/UnwrapByDefault.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/Unwrapping.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/ValueExtractor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/ValueExtractorDeclarationException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/valueextraction/ValueExtractorDefinitionException.java
Modified:
    geronimo/specs/trunk/geronimo-validation_2.0_spec/NOTICE
    geronimo/specs/trunk/geronimo-validation_2.0_spec/pom.xml
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/BootstrapConfiguration.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Configuration.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Constraint.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDeclarationException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDefinitionException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidator.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorContext.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorFactory.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolation.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolationException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ElementKind.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupDefinitionException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupSequence.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/MessageInterpolator.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/OverridesAttribute.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Path.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Payload.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ReportAsSingleViolation.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/TraversableResolver.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/UnexpectedTypeException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Valid.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validation.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationException.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationProviderResolver.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validator.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorContext.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorFactory.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/GenericBootstrap.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertFalse.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertTrue.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMax.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMin.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Digits.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Future.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Max.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Min.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotNull.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Null.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Past.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Pattern.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Size.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/executable/ExecutableType.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/executable/ExecutableValidator.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/executable/ValidateOnExecution.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/groups/ConvertGroup.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/groups/Default.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/BeanDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ConstraintDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ExecutableDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ParameterDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/PropertyDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/ReturnValueDescriptor.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/metadata/Scope.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/spi/BootstrapState.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/spi/ConfigurationState.java
    geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/spi/ValidationProvider.java

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/NOTICE
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/NOTICE?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/NOTICE (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/NOTICE Mon Sep  4 21:01:48 2017
@@ -1,5 +1,5 @@
-Apache Geronimo JSR-349 Bean Validation Spec API
-Copyright 2009-2016 The Apache Software Foundation
+Apache Geronimo JSR-380 Bean Validation Spec API
+Copyright 2009-2017 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/pom.xml?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/pom.xml (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/pom.xml Mon Sep  4 21:01:48 2017
@@ -20,22 +20,23 @@
 
 <!-- $Rev: 759182 $ $Date: 2009-03-27 11:48:31 -0400 (Fri, 27 Mar 2009) $ -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.geronimo.genesis</groupId>
-        <artifactId>genesis-java6-flava</artifactId>
-        <version>2.2</version>
+        <artifactId>genesis-java8-flava</artifactId>
+        <version>2.3</version>
     </parent>
 
     <groupId>org.apache.geronimo.specs</groupId>
-    <artifactId>geronimo-validation_1.1_spec</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <artifactId>geronimo-validation_2.0_spec</artifactId>
+    <version>1.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
-    <name>Apache Geronimo Bean Validation Spec 1.1</name>
-    <description>Apache Geronimo implementation of the JSR-349 Bean Validation Spec API</description>
+    <name>Apache Geronimo Bean Validation Spec 2.0</name>
+    <description>Apache Geronimo implementation of the JSR-380 Bean Validation Spec API</description>
 
     <url>http://geronimo.apache.org/maven/${siteId}/${project.version}</url>
     <distributionManagement>
@@ -50,8 +51,11 @@
     </properties>
 
     <scm>
-        <connection>scm:svn:http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-validation_1.1_spec/</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-validation_1.1_spec/</developerConnection>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-validation_1.1_spec/
+        </connection>
+        <developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-validation_1.1_spec/
+        </developerConnection>
         <url>http://svn.apache.org/viewcvs.cgi/geronimo/specs/trunk/geronimo-validation_1.1_spec/</url>
     </scm>
 
@@ -80,7 +84,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.7</version>
                 <executions>
                     <execution>
                         <id>delete-DEPENDENCIES</id>
@@ -90,7 +93,7 @@
                         </goals>
                         <configuration>
                             <target>
-                                <delete dir="${project.build.directory}" includes="**/DEPENDENCIES" />
+                                <delete dir="${project.build.directory}" includes="**/DEPENDENCIES"/>
                             </target>
                         </configuration>
                     </execution>
@@ -99,17 +102,18 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.0.1</version>
                 <configuration>
                     <instructions>
-                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId};singleton=true</Bundle-SymbolicName>
-                        <Specification-Title>JSR-349 Bean Validation API</Specification-Title>
+                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId};singleton=true
+                        </Bundle-SymbolicName>
+                        <Specification-Title>JSR-380 Bean Validation API</Specification-Title>
                         <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
-                        <Specification-Version>1.1</Specification-Version>
-                        <Export-Package>javax.validation*;version=1.1</Export-Package>
+                        <Specification-Version>2.0</Specification-Version>
+                        <Export-Package>javax.validation*;version=2.0</Export-Package>
                         <Import-Package>org.apache.geronimo.osgi.registry.api;resolution:=optional,*</Import-Package>
                         <Private-Package>org.apache.geronimo.osgi.locator</Private-Package>
                         <Bundle-Activator>org.apache.geronimo.osgi.locator.Activator</Bundle-Activator>
+                        <Automatic-Module-Name>java.validation</Automatic-Module-Name>
                     </instructions>
                 </configuration>
             </plugin>

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/BootstrapConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/BootstrapConfiguration.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/BootstrapConfiguration.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/BootstrapConfiguration.java Mon Sep  4 21:01:48 2017
@@ -31,4 +31,10 @@ public interface BootstrapConfiguration
 	boolean isExecutableValidationEnabled();
 	Set<ExecutableType> getDefaultValidatedExecutableTypes();
 	Map<String, String> getProperties();
+
+	/** @since 2.0 */
+	String getClockProviderClassName();
+
+	/** @since 2.0 */
+	Set<String> getValueExtractorClassNames();
 }

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ClockProvider.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ClockProvider.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ClockProvider.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ClockProvider.java Mon Sep  4 21:01:48 2017
@@ -0,0 +1,27 @@
+/*
+ * 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 javax.validation;
+
+import java.time.Clock;
+
+/**
+ * @since 2.0
+ */
+public interface ClockProvider {
+
+    Clock getClock();
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Configuration.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Configuration.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Configuration.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Configuration.java Mon Sep  4 21:01:48 2017
@@ -18,6 +18,8 @@ package javax.validation;
 
 import java.io.InputStream;
 
+import javax.validation.valueextraction.ValueExtractor;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -43,11 +45,21 @@ public interface Configuration<T extends
 
     ValidatorFactory buildValidatorFactory();
 
-    // @since 1.1
-
+    /** @since 1.1 */
     T parameterNameProvider(ParameterNameProvider parameterNameProvider);
+
+    /** @since 1.1 */
     ParameterNameProvider getDefaultParameterNameProvider();
 
+    /** @since 1.1 */
     BootstrapConfiguration getBootstrapConfiguration();
-}
 
+    /** @since 2.0 */
+    T clockProvider(ClockProvider clockProvider);
+
+    /** @since 2.0 */
+    T addValueExtractor(ValueExtractor<?> extractor);
+
+    /** @since 2.0 */
+    ClockProvider getDefaultClockProvider();
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Constraint.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Constraint.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Constraint.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Constraint.java Mon Sep  4 21:01:48 2017
@@ -50,4 +50,3 @@ public @interface Constraint {
      */
     Class<? extends ConstraintValidator<?,?>>[] validatedBy();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDeclarationException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDeclarationException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDeclarationException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDeclarationException.java Mon Sep  4 21:01:48 2017
@@ -19,7 +19,9 @@ package javax.validation;
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class ConstraintDeclarationException extends ValidationException {
+
     public ConstraintDeclarationException(String message) {
         super(message);
     }
@@ -36,4 +38,3 @@ public class ConstraintDeclarationExcept
         super(cause);
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDefinitionException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDefinitionException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDefinitionException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintDefinitionException.java Mon Sep  4 21:01:48 2017
@@ -19,7 +19,9 @@ package javax.validation;
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class ConstraintDefinitionException extends ValidationException {
+
     public ConstraintDefinitionException(String message) {
         super(message);
     }
@@ -36,4 +38,3 @@ public class ConstraintDefinitionExcepti
         super(cause);
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidator.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidator.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidator.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidator.java Mon Sep  4 21:01:48 2017
@@ -22,8 +22,8 @@ import java.lang.annotation.Annotation;
  * @version $Rev$ $Date$
  */
 public interface ConstraintValidator<A extends Annotation, T> {
-    void initialize(A constraintAnnotation);
+    default void initialize(A constraintAnnotation) {
+    }
 
     boolean isValid(T value, ConstraintValidatorContext context);
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorContext.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorContext.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorContext.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorContext.java Mon Sep  4 21:01:48 2017
@@ -26,29 +26,57 @@ public interface ConstraintValidatorCont
 
     ConstraintViolationBuilder buildConstraintViolationWithTemplate(String messageTemplate);
 
+    /** @since 2.0 */
+    ClockProvider getClockProvider();
+
     /** @since 1.1 */
     <T> T unwrap(Class<T> type);
 
     interface ConstraintViolationBuilder {
+        /**
+         * @deprecated since 1.1
+         * @see #addBeanNode()
+         * @see #addPropertyNode(String)
+         * @see #addParameterNode(int)
+         */
+        @Deprecated
         NodeBuilderDefinedContext addNode(String name);
 
         ConstraintValidatorContext addConstraintViolation();
 
-        // @since 1.1
-
+        /** @since 1.1 */
         NodeBuilderCustomizableContext addPropertyNode(String name);
+
+        /** @since 1.1 */
         LeafNodeBuilderCustomizableContext addBeanNode();
+
+        /** @since 1.1 */
         NodeBuilderDefinedContext addParameterNode(int index);
 
+        /** @since 2.0 */
+        ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+            Integer typeArgumentIndex);
+
         interface NodeBuilderDefinedContext {
+            /**
+             * @deprecated since 1.1
+             * @see #addPropertyNode(String)
+             * @see #addBeanNode()
+             */
+            @Deprecated
             NodeBuilderCustomizableContext addNode(String name);
 
             ConstraintValidatorContext addConstraintViolation();
 
-            // @since 1.1
-
+            /** @since 1.1 */
             NodeBuilderCustomizableContext addPropertyNode(String name);
+
+            /** @since 1.1 */
             LeafNodeBuilderCustomizableContext addBeanNode();
+
+            /** @since 2.0 */
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
         }
 
         interface NodeBuilderCustomizableContext {
@@ -59,10 +87,18 @@ public interface ConstraintValidatorCont
 
             ConstraintValidatorContext addConstraintViolation();
 
-            // @since 1.1
-
+            /** @since 1.1 */
             NodeBuilderCustomizableContext addPropertyNode(String name);
+
+            /** @since 1.1 */
             LeafNodeBuilderCustomizableContext addBeanNode();
+
+            /** @since 2.0 */
+            NodeBuilderCustomizableContext inContainer(Class<?> containerClass, Integer typeArgumentIndex);
+
+            /** @since 2.0 */
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
         }
 
         interface NodeContextBuilder {
@@ -75,10 +111,15 @@ public interface ConstraintValidatorCont
 
             ConstraintValidatorContext addConstraintViolation();
 
-            // @since 1.1
-
+            /** @since 1.1 */
             NodeBuilderCustomizableContext addPropertyNode(String name);
+
+            /** @since 1.1 */
             LeafNodeBuilderCustomizableContext addBeanNode();
+
+            /** @since 2.0 */
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
         }
 
         /** @since 1.1 */
@@ -90,6 +131,9 @@ public interface ConstraintValidatorCont
         interface LeafNodeBuilderCustomizableContext {
             LeafNodeContextBuilder inIterable();
             ConstraintValidatorContext addConstraintViolation();
+
+            /** @since 2.0 */
+            LeafNodeBuilderCustomizableContext inContainer(Class<?> containerClass, Integer typeArgumentIndex);
         }
 
         /** @since 1.1 */
@@ -98,6 +142,35 @@ public interface ConstraintValidatorCont
             LeafNodeBuilderDefinedContext atIndex(Integer index);
             ConstraintValidatorContext addConstraintViolation();
         }
+
+        /** @since 2.0 */
+        interface ContainerElementNodeBuilderDefinedContext {
+            NodeBuilderCustomizableContext addPropertyNode(String name);
+            LeafNodeBuilderCustomizableContext addBeanNode();
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
+            ConstraintValidatorContext addConstraintViolation();
+        }
+
+        /** @since 2.0 */
+        interface ContainerElementNodeBuilderCustomizableContext {
+            ContainerElementNodeContextBuilder inIterable();
+            NodeBuilderCustomizableContext addPropertyNode(String name);
+            LeafNodeBuilderCustomizableContext addBeanNode();
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
+            ConstraintValidatorContext addConstraintViolation();
+        }
+
+        /** @since 2.0 */
+        interface ContainerElementNodeContextBuilder {
+            ContainerElementNodeBuilderDefinedContext atKey(Object key);
+            ContainerElementNodeBuilderDefinedContext atIndex(Integer index);
+            NodeBuilderCustomizableContext addPropertyNode(String name);
+            LeafNodeBuilderCustomizableContext addBeanNode();
+            ContainerElementNodeBuilderCustomizableContext addContainerElementNode(String name, Class<?> containerType,
+                Integer typeArgumentIndex);
+            ConstraintValidatorContext addConstraintViolation();
+        }
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorFactory.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorFactory.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorFactory.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintValidatorFactory.java Mon Sep  4 21:01:48 2017
@@ -26,4 +26,3 @@ public interface ConstraintValidatorFact
     /** @since 1.1 */
     void releaseInstance(ConstraintValidator<?, ?> instance);
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolation.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolation.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolation.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolation.java Mon Sep  4 21:01:48 2017
@@ -45,4 +45,3 @@ public interface ConstraintViolation<T>
     Object getExecutableReturnValue();
     <U> U unwrap(Class<U> type);
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolationException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolationException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolationException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ConstraintViolationException.java Mon Sep  4 21:01:48 2017
@@ -22,7 +22,9 @@ import java.util.Set;
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class ConstraintViolationException extends ValidationException {
+
     private final Set<ConstraintViolation<?>> constraintViolations;
 
     public ConstraintViolationException(String message,
@@ -39,4 +41,3 @@ public class ConstraintViolationExceptio
         return constraintViolations;
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ElementKind.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ElementKind.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ElementKind.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ElementKind.java Mon Sep  4 21:01:48 2017
@@ -18,5 +18,7 @@ package javax.validation;
 
 /** @since 1.1 */
 public enum ElementKind {
-	BEAN, PROPERTY, METHOD, CONSTRUCTOR, PARAMETER, CROSS_PARAMETER, RETURN_VALUE
+    BEAN, PROPERTY, METHOD, CONSTRUCTOR, PARAMETER, CROSS_PARAMETER, RETURN_VALUE,
+    /** @since 2.0 */
+    CONTAINER_ELEMENT;
 }

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupDefinitionException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupDefinitionException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupDefinitionException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupDefinitionException.java Mon Sep  4 21:01:48 2017
@@ -19,7 +19,9 @@ package javax.validation;
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class GroupDefinitionException extends ValidationException {
+
     public GroupDefinitionException(String message) {
         super(message);
     }
@@ -36,4 +38,3 @@ public class GroupDefinitionException ex
         super(cause);
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupSequence.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupSequence.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupSequence.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/GroupSequence.java Mon Sep  4 21:01:48 2017
@@ -22,12 +22,14 @@ import java.lang.annotation.Target;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
+import java.lang.annotation.Documented;
+
 /**
  * @version $Rev$ $Date$
  */
 @Target({ TYPE })
 @Retention(RUNTIME)
+@Documented
 public @interface GroupSequence {
     Class<?>[] value();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/MessageInterpolator.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/MessageInterpolator.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/MessageInterpolator.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/MessageInterpolator.java Mon Sep  4 21:01:48 2017
@@ -36,4 +36,3 @@ public interface MessageInterpolator {
         <T> T unwrap(Class<T> type);
     }
 }
-

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/NoProviderFoundException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/NoProviderFoundException.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/NoProviderFoundException.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/NoProviderFoundException.java Mon Sep  4 21:01:48 2017
@@ -0,0 +1,40 @@
+/*
+ * 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 javax.validation;
+
+/**
+ * @since 2.0
+ */
+@SuppressWarnings("serial")
+public class NoProviderFoundException extends ValidationException {
+
+    public NoProviderFoundException(String message) {
+        super(message);
+    }
+
+    public NoProviderFoundException() {
+        super();
+    }
+
+    public NoProviderFoundException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public NoProviderFoundException(Throwable cause) {
+        super(cause);
+    }
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/OverridesAttribute.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/OverridesAttribute.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/OverridesAttribute.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/OverridesAttribute.java Mon Sep  4 21:01:48 2017
@@ -18,6 +18,7 @@ package javax.validation;
 
 import java.lang.annotation.Annotation;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -29,10 +30,12 @@ import static java.lang.annotation.Reten
  */
 @Retention(RUNTIME)
 @Target({ METHOD })
+@Documented
+@Repeatable(OverridesAttribute.List.class)
 public @interface OverridesAttribute {
     Class<? extends Annotation> constraint();
 
-    String name();
+    String name() default "";
 
     int constraintIndex() default -1;
 
@@ -43,4 +46,3 @@ public @interface OverridesAttribute {
         OverridesAttribute[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Path.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Path.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Path.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Path.java Mon Sep  4 21:01:48 2017
@@ -23,6 +23,10 @@ import java.util.List;
  */
 public interface Path extends Iterable<Path.Node> {
 
+    /** @since 2.0 */
+    @Override
+    String toString();
+
     interface Node {
         String getName();
 
@@ -32,37 +36,65 @@ public interface Path extends Iterable<P
 
         Object getKey();
 
-        // @since 1.1
-
+        /** @since 1.1 */
         ElementKind getKind();
 
+        /** @since 1.1 */
         <T extends Node> T as(Class<T> nodeType);
-    }
 
-    // @since 1.1
+        /** @since 2.0 */
+        @Override
+        String toString();
+    }
 
+    /** @since 1.1 */
     interface MethodNode extends Node {
         List<Class<?>> getParameterTypes();
     }
 
+    /** @since 1.1 */
     interface ConstructorNode extends Node {
         List<Class<?>> getParameterTypes();
     }
 
+    /** @since 1.1 */
     interface ReturnValueNode extends Node {
     }
 
+    /** @since 1.1 */
     interface ParameterNode extends Node {
         int getParameterIndex();
     }
 
+    /** @since 1.1 */
     interface CrossParameterNode extends Node {
     }
 
+    /** @since 1.1 */
     interface BeanNode extends Node {
+
+        /** @since 2.0 */
+        Class<?> getContainerClass();
+
+        /** @since 2.0 */
+        Integer getTypeArgumentIndex();
     }
 
+    /** @since 1.1 */
     interface PropertyNode extends Node {
+
+        /** @since 2.0 */
+        Class<?> getContainerClass();
+
+        /** @since 2.0 */
+        Integer getTypeArgumentIndex();
     }
-}
+    
+    /** @since 2.0 */
+    interface ContainerElementNode extends Node {
 
+        Class<?> getContainerClass();
+
+        Integer getTypeArgumentIndex();
+    }
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Payload.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Payload.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Payload.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Payload.java Mon Sep  4 21:01:48 2017
@@ -26,4 +26,3 @@ package javax.validation;
  */
 public interface Payload {
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ReportAsSingleViolation.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ReportAsSingleViolation.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ReportAsSingleViolation.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ReportAsSingleViolation.java Mon Sep  4 21:01:48 2017
@@ -22,11 +22,13 @@ import java.lang.annotation.Target;
 import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
+import java.lang.annotation.Documented;
+
 /**
  * @version $Rev$ $Date$
  */
 @Target({ ANNOTATION_TYPE })
 @Retention(RUNTIME)
+@Documented
 public @interface ReportAsSingleViolation {
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/TraversableResolver.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/TraversableResolver.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/TraversableResolver.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/TraversableResolver.java Mon Sep  4 21:01:48 2017
@@ -34,4 +34,3 @@ public interface TraversableResolver {
         Path pathToTraversableObject,
         ElementType elementType);
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/UnexpectedTypeException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/UnexpectedTypeException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/UnexpectedTypeException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/UnexpectedTypeException.java Mon Sep  4 21:01:48 2017
@@ -21,7 +21,9 @@ package javax.validation;
  * 
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class UnexpectedTypeException extends ConstraintDeclarationException {
+
     public UnexpectedTypeException(String message) {
         super(message);
     }
@@ -38,4 +40,3 @@ public class UnexpectedTypeException ext
         super(cause);
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Valid.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Valid.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Valid.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Valid.java Mon Sep  4 21:01:48 2017
@@ -23,13 +23,13 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 public @interface Valid {
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validation.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validation.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validation.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validation.java Mon Sep  4 21:01:48 2017
@@ -47,7 +47,7 @@ public class Validation {
 
     public static <T extends Configuration<T>, U extends ValidationProvider<T>>
             ProviderSpecificBootstrap<T> byProvider(Class<U> providerType) {
-        return new ProviderSpecificBootstrapImpl<T, U>(providerType);
+        return new ProviderSpecificBootstrapImpl<>(providerType);
     }
 
     /*
@@ -87,15 +87,17 @@ public class Validation {
          * @see javax.validation.bootstrap.ProviderSpecificBootstrap#configure()
          */
         public T configure() {
-            if (providerClass == null)
+            if (providerClass == null) {
                 throw new ValidationException("No resolver provided");
+            }
 
             // create a default resolver if not supplied by providerResolver()
             GenericBootstrapImpl impl = new GenericBootstrapImpl();
-            if ( vpResolver == null )
+            if ( vpResolver == null ) {
                 vpResolver = impl.getDefaultValidationProviderResolver();
-            else
+            } else {
                 impl.providerResolver(vpResolver);
+            }
 
             // check each provider discovered by the resolver
             for (ValidationProvider<?> vProvider : vpResolver.getValidationProviders()) {
@@ -146,8 +148,9 @@ public class Validation {
          * @see javax.validation.spi.BootstrapState#getDefaultValidationProviderResolver()
          */
         public ValidationProviderResolver getDefaultValidationProviderResolver() {
-            if (vpDefaultResolver == null)
+            if (vpDefaultResolver == null) {
                 vpDefaultResolver = new DefaultValidationProviderResolver();
+            }
             return vpDefaultResolver;
         }
 
@@ -159,8 +162,9 @@ public class Validation {
         public Configuration<?> configure() {
             ValidationProviderResolver resolv = vpResolver;
             try {
-                if (resolv == null)
+                if (resolv == null) {
                     resolv = getDefaultValidationProviderResolver();
+                }
                 return resolv.getValidationProviders().get(0).createGenericConfiguration(this);
             } catch (Exception e) {
                 throw new ValidationException("Could not create Configuration.", e);
@@ -175,8 +179,7 @@ public class Validation {
      */
     private static class DefaultValidationProviderResolver implements ValidationProviderResolver {
         // cache of providers per class loader
-        private volatile WeakHashMap<ClassLoader, List<ValidationProvider<?>>> providerCache =
-            new WeakHashMap<ClassLoader, List<ValidationProvider<?>>>();
+        private volatile WeakHashMap<ClassLoader, List<ValidationProvider<?>>> providerCache = new WeakHashMap<>();
 
         /*
          * (non-Javadoc)
@@ -188,14 +191,15 @@ public class Validation {
 
             // get our class loader
             ClassLoader cl = PrivClassLoader.get(null);
-            if (cl == null)
+            if (cl == null) {
                 cl = PrivClassLoader.get(DefaultValidationProviderResolver.class);
+            }
 
             // use any previously cached providers
             providers = providerCache.get(cl);
             if (providers == null) {
                 // need to discover and load them for this class loader
-                providers = new ArrayList<ValidationProvider<?>>();
+                providers = new ArrayList<>();
                 try {
                     List<Object> serviceProviders = ProviderLocator.getServices(ValidationProvider.class.getName(), this.getClass(), cl);
                     for (Object provider : serviceProviders) {
@@ -227,10 +231,10 @@ public class Validation {
 
             public static ClassLoader get(Class<?> c) {
                 final PrivClassLoader action = new PrivClassLoader(c);
-                if (System.getSecurityManager() != null)
-                    return AccessController.doPrivileged(action);
-                else
+                if (System.getSecurityManager() == null) {
                     return action.run();
+                }
+                return AccessController.doPrivileged(action);
             }
 
             private PrivClassLoader(Class<?> c) {
@@ -238,12 +242,11 @@ public class Validation {
             }
 
             public ClassLoader run() {
-                if (c != null)
-                    return c.getClassLoader();
-                else
+                if (c == null) {
                     return Thread.currentThread().getContextClassLoader();
+                }
+                return c.getClassLoader();
             }
         }
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationException.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationException.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationException.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationException.java Mon Sep  4 21:01:48 2017
@@ -19,7 +19,9 @@ package javax.validation;
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class ValidationException extends RuntimeException {
+
     public ValidationException(String message) {
         super(message);
     }
@@ -36,4 +38,3 @@ public class ValidationException extends
         super(cause);
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationProviderResolver.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationProviderResolver.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationProviderResolver.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidationProviderResolver.java Mon Sep  4 21:01:48 2017
@@ -25,4 +25,3 @@ import java.util.List;
 public interface ValidationProviderResolver {
     List<ValidationProvider<?>> getValidationProviders();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validator.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validator.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validator.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/Validator.java Mon Sep  4 21:01:48 2017
@@ -42,4 +42,3 @@ public interface Validator {
     /** @since 1.1 */
     ExecutableValidator forExecutables();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorContext.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorContext.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorContext.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorContext.java Mon Sep  4 21:01:48 2017
@@ -16,6 +16,8 @@
  */
 package javax.validation;
 
+import javax.validation.valueextraction.ValueExtractor;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -30,5 +32,10 @@ public interface ValidatorContext {
 
     /** @since 1.1 */
     ValidatorContext parameterNameProvider(ParameterNameProvider parameterNameProvider);
-}
 
+    /** @since 2.0 */
+    ValidatorContext clockProvider(ClockProvider clockProvider);
+
+    /** @since 2.0 */
+    ValidatorContext addValueExtractor(ValueExtractor<?> extractor);
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorFactory.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorFactory.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorFactory.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/ValidatorFactory.java Mon Sep  4 21:01:48 2017
@@ -19,7 +19,7 @@ package javax.validation;
 /**
  * @version $Rev$ $Date$
  */
-public interface ValidatorFactory {
+public interface ValidatorFactory extends AutoCloseable {
     Validator getValidator();
 
     ValidatorContext usingContext();
@@ -35,6 +35,10 @@ public interface ValidatorFactory {
     /** @since 1.1 */
     ParameterNameProvider getParameterNameProvider();
 
+    /** @since 1.1 */
+    @Override
     void close();
-}
 
+    /** @since 2.0 */
+    ClockProvider getClockProvider();
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/GenericBootstrap.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/GenericBootstrap.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/GenericBootstrap.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/GenericBootstrap.java Mon Sep  4 21:01:48 2017
@@ -27,4 +27,3 @@ public interface GenericBootstrap {
 
     Configuration<?> configure();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java Mon Sep  4 21:01:48 2017
@@ -25,4 +25,3 @@ public interface ProviderSpecificBootstr
 
     T configure();
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertFalse.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertFalse.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertFalse.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertFalse.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -35,10 +37,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(AssertFalse.List.class)
 public @interface AssertFalse {
     String message() default "{javax.validation.constraints.AssertFalse.message}";
 
@@ -46,11 +49,10 @@ public @interface AssertFalse {
 
     Class<? extends Payload>[] payload() default {};
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         AssertFalse[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertTrue.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertTrue.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertTrue.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/AssertTrue.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -35,10 +37,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(AssertTrue.List.class)
 public @interface AssertTrue {
     String message() default "{javax.validation.constraints.AssertTrue.message}";
 
@@ -46,11 +49,10 @@ public @interface AssertTrue {
 
     Class<? extends Payload>[] payload() default {};
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         AssertTrue[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMax.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMax.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMax.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMax.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -40,10 +42,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(DecimalMax.List.class)
 public @interface DecimalMax {
     String message() default "{javax.validation.constraints.DecimalMax.message}";
 
@@ -56,11 +59,10 @@ public @interface DecimalMax {
     /** @since 1.1 */
     boolean inclusive() default true;
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         DecimalMax[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMin.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMin.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMin.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/DecimalMin.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -40,10 +42,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(DecimalMin.List.class)
 public @interface DecimalMin {
     String message() default "{javax.validation.constraints.DecimalMin.message}";
 
@@ -56,11 +59,10 @@ public @interface DecimalMin {
     /** @since 1.1 */
     boolean inclusive() default true;
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         DecimalMin[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Digits.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Digits.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Digits.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Digits.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -46,10 +48,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(Digits.List.class)
 public @interface Digits {
     String message() default "{javax.validation.constraints.Digits.message}";
 
@@ -67,11 +70,10 @@ public @interface Digits {
      */
     int fraction();
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         Digits[] value();
     }
 }
-

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Email.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Email.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Email.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Email.java Mon Sep  4 21:01:48 2017
@@ -0,0 +1,59 @@
+/*
+ * 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 javax.validation.constraints;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+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.ElementType.TYPE_USE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @since 2.0
+ */
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = {})
+@Repeatable(Email.List.class)
+public @interface Email {
+    String message() default "{javax.validation.constraints.Email.message}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    String regexp() default ".*";
+
+    Pattern.Flag[] flags() default {};
+
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+    @Retention(RUNTIME)
+    @Documented
+    @interface List {
+        Email[] value();
+    }
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Future.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Future.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Future.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Future.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,20 +28,44 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
+ * <p>
  * Verify that the annotated value of the annotated element is in the future or {@code null}.
- * Supported types are {@link java.util.Calendar} and {@link java.util.Date}
+ * </p>
+ * <p>
+ * Supports:
+ * <ul>
+ * <li>{@code java.util.Date}</li>
+ * <li>{@code java.util.Calendar}</li>
+ * <li>{@code java.time.Instant}</li>
+ * <li>{@code java.time.LocalDate}</li>
+ * <li>{@code java.time.LocalDateTime}</li>
+ * <li>{@code java.time.LocalTime}</li>
+ * <li>{@code java.time.MonthDay}</li>
+ * <li>{@code java.time.OffsetDateTime}</li>
+ * <li>{@code java.time.OffsetTime}</li>
+ * <li>{@code java.time.Year}</li>
+ * <li>{@code java.time.YearMonth}</li>
+ * <li>{@code java.time.ZonedDateTime}</li>
+ * <li>{@code java.time.chrono.HijrahDate}</li>
+ * <li>{@code java.time.chrono.JapaneseDate}</li>
+ * <li>{@code java.time.chrono.MinguoDate}</li>
+ * <li>{@code java.time.chrono.ThaiBuddhistDate}</li>
+ * </ul>
+ * </p>
  *
  * Other types might be supported in a non-portable manner.
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(Future.List.class)
 public @interface Future {
     String message() default "{javax.validation.constraints.Future.message}";
 
@@ -48,11 +73,10 @@ public @interface Future {
 
     Class<? extends Payload>[] payload() default {};
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         Future[] value();
     }
 }
-

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/FutureOrPresent.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/FutureOrPresent.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/FutureOrPresent.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/FutureOrPresent.java Mon Sep  4 21:01:48 2017
@@ -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 javax.validation.constraints;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+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.ElementType.TYPE_USE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p>
+ * Verify that the value of the annotated element is in the future, present or {@code null}.
+ * </p>
+ * <p>
+ * Supports:
+ * <ul>
+ * <li>{@code java.util.Date}</li>
+ * <li>{@code java.util.Calendar}</li>
+ * <li>{@code java.time.Instant}</li>
+ * <li>{@code java.time.LocalDate}</li>
+ * <li>{@code java.time.LocalDateTime}</li>
+ * <li>{@code java.time.LocalTime}</li>
+ * <li>{@code java.time.MonthDay}</li>
+ * <li>{@code java.time.OffsetDateTime}</li>
+ * <li>{@code java.time.OffsetTime}</li>
+ * <li>{@code java.time.Year}</li>
+ * <li>{@code java.time.YearMonth}</li>
+ * <li>{@code java.time.ZonedDateTime}</li>
+ * <li>{@code java.time.chrono.HijrahDate}</li>
+ * <li>{@code java.time.chrono.JapaneseDate}</li>
+ * <li>{@code java.time.chrono.MinguoDate}</li>
+ * <li>{@code java.time.chrono.ThaiBuddhistDate}</li>
+ * </ul>
+ * </p>
+ *
+ * Other types might be supported in a non-portable manner.
+ *
+ * @since 2.0
+ */
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = {})
+@Repeatable(FutureOrPresent.List.class)
+public @interface FutureOrPresent {
+    String message() default "{javax.validation.constraints.FutureOrPresent.message}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+    @Retention(RUNTIME)
+    @Documented
+    @interface List {
+        FutureOrPresent[] value();
+    }
+}

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Max.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Max.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Max.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Max.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -40,10 +42,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(Max.List.class)
 public @interface Max {
     String message() default "{javax.validation.constraints.Max.message}";
 
@@ -53,11 +56,10 @@ public @interface Max {
 
     long value();
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         Max[] value();
     }
 }
-

Modified: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Min.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Min.java?rev=1807299&r1=1807298&r2=1807299&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Min.java (original)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Min.java Mon Sep  4 21:01:48 2017
@@ -19,6 +19,7 @@ package javax.validation.constraints;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -27,6 +28,7 @@ import static java.lang.annotation.Eleme
 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.ElementType.TYPE_USE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
@@ -40,10 +42,11 @@ import static java.lang.annotation.Reten
  *
  * @version $Rev$ $Date$
  */
-@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
 @Retention(RUNTIME)
 @Documented
 @Constraint(validatedBy = {})
+@Repeatable(Min.List.class)
 public @interface Min {
     String message() default "{javax.validation.constraints.Min.message}";
 
@@ -53,11 +56,10 @@ public @interface Min {
 
     long value();
 
-    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     @Documented
     @interface List {
         Min[] value();
     }
 }
-

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Negative.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Negative.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Negative.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/Negative.java Mon Sep  4 21:01:48 2017
@@ -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 javax.validation.constraints;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+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.ElementType.TYPE_USE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @since 2.0
+ */
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = {})
+@Repeatable(Negative.List.class)
+public @interface Negative {
+    String message() default "{javax.validation.constraints.Negative.message}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+    @Retention(RUNTIME)
+    @Documented
+    @interface List {
+        Negative[] value();
+    }
+}

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NegativeOrZero.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NegativeOrZero.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NegativeOrZero.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NegativeOrZero.java Mon Sep  4 21:01:48 2017
@@ -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 javax.validation.constraints;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+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.ElementType.TYPE_USE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @since 2.0
+ */
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = {})
+@Repeatable(NegativeOrZero.List.class)
+public @interface NegativeOrZero {
+    String message() default "{javax.validation.constraints.NegativeOrZero.message}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+    @Retention(RUNTIME)
+    @Documented
+    @interface List {
+        NegativeOrZero[] value();
+    }
+}

Added: geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotBlank.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotBlank.java?rev=1807299&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotBlank.java (added)
+++ geronimo/specs/trunk/geronimo-validation_2.0_spec/src/main/java/javax/validation/constraints/NotBlank.java Mon Sep  4 21:01:48 2017
@@ -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 javax.validation.constraints;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+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.ElementType.TYPE_USE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @since 2.0
+ */
+@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = {})
+@Repeatable(NotBlank.List.class)
+public @interface NotBlank {
+    String message() default "{javax.validation.constraints.NotBlank.message}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
+    @Retention(RUNTIME)
+    @Documented
+    @interface List {
+        NotBlank[] value();
+    }
+}