You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by rm...@apache.org on 2013/07/01 12:06:21 UTC

svn commit: r1498347 [6/7] - in /bval/branches/bval-11: ./ bval-core/src/main/java/org/apache/bval/ bval-core/src/main/java/org/apache/bval/model/ bval-core/src/main/java/org/apache/bval/util/ bval-extras/ bval-guice/ bval-guice/src/main/java/org/apach...

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java Mon Jul  1 10:06:18 2013
@@ -19,16 +19,21 @@
 package org.apache.bval.jsr303.xml;
 
 
+import org.apache.bval.cdi.BValExtension;
+import org.apache.bval.jsr303.BootstrapConfigurationImpl;
 import org.apache.bval.jsr303.ConfigurationImpl;
 import org.apache.bval.jsr303.util.IOUtils;
+import org.apache.bval.jsr303.util.IOs;
 import org.apache.bval.jsr303.util.SecureActions;
 import org.apache.bval.util.PrivilegedActions;
 import org.xml.sax.SAXException;
 
 import javax.validation.ConstraintValidatorFactory;
 import javax.validation.MessageInterpolator;
+import javax.validation.ParameterNameProvider;
 import javax.validation.TraversableResolver;
 import javax.validation.ValidationException;
+import javax.validation.executable.ExecutableType;
 import javax.validation.spi.ValidationProvider;
 import javax.xml.XMLConstants;
 import javax.xml.bind.JAXBContext;
@@ -38,12 +43,19 @@ import javax.xml.bind.Unmarshaller;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.util.Collection;
 import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -51,24 +63,44 @@ import java.util.logging.Logger;
  * Description: uses jaxb to parse validation.xml<br/>
  */
 @SuppressWarnings("restriction")
-public class ValidationParser {
+public class ValidationParser implements Closeable {
     private static final String DEFAULT_VALIDATION_XML_FILE = "META-INF/validation.xml";
     private static final String VALIDATION_CONFIGURATION_XSD =
-            "META-INF/validation-configuration-1.0.xsd";
+            "META-INF/validation-configuration-1.1.xsd";
     private static final Logger log = Logger.getLogger(ValidationParser.class.getName());
-    protected final String validationXmlFile;
 
-    /**
-     * Create a new ValidationParser instance.
-     *
-     * @param file
-     */
-    public ValidationParser(String file) {
+    private ValidationConfigType xmlConfig;
+    private BootstrapConfigurationImpl bootstrap;
+    private Collection<ValidationException> exceptions = new CopyOnWriteArrayList<ValidationException>();
+    private Collection<BValExtension.Releasable> releasables = new CopyOnWriteArrayList<BValExtension.Releasable>();
+
+    private ValidationParser() {
+        // no-op
+    }
+
+    public void applyConfigWithInstantiation(ConfigurationImpl targetConfig) {
+        if (xmlConfig == null) {
+            return;
+        }
+
+        applyProviderClass(xmlConfig, targetConfig);
+        applyMessageInterpolator(xmlConfig, targetConfig);
+        applyTraversableResolver(xmlConfig, targetConfig);
+        applyConstraintFactory(xmlConfig, targetConfig);
+        applyParameterNameProvider(xmlConfig, targetConfig);
+        applyMappingStreams(xmlConfig, targetConfig);
+        applyProperties(xmlConfig, targetConfig);
+    }
+
+    public BootstrapConfigurationImpl getBootstrap() {
+        return bootstrap;
+    }
+
+    public static String getValidationXmlFile(String file) {
         if (file == null) {
-            validationXmlFile = DEFAULT_VALIDATION_XML_FILE;
-        } else {
-            validationXmlFile = file;
+            return DEFAULT_VALIDATION_XML_FILE;
         }
+        return file;
     }
 
     /**
@@ -76,17 +108,71 @@ public class ValidationParser {
      *
      * @param targetConfig
      */
-    public void processValidationConfig(ConfigurationImpl targetConfig) {
-        ValidationConfigType xmlConfig = parseXmlConfig();
-        if (xmlConfig != null) {
-            applyConfig(xmlConfig, targetConfig);
+    public static ValidationParser processValidationConfig(final String file, final ConfigurationImpl targetConfig, final boolean ignoreXml) {
+        final ValidationParser parser = new ValidationParser();
+
+        if (!ignoreXml) {
+            parser.xmlConfig = parseXmlConfig(file);
+        }
+
+        if (parser.xmlConfig != null) {
+            if (parser.xmlConfig.getExecutableValidation() == null) {
+                final ExecutableValidationType value = new ExecutableValidationType();
+                value.setEnabled(true);
+
+                final DefaultValidatedExecutableTypesType defaultValidatedExecutableTypes = new DefaultValidatedExecutableTypesType();
+                value.setDefaultValidatedExecutableTypes(defaultValidatedExecutableTypes);
+                defaultValidatedExecutableTypes.getExecutableType().add(ExecutableType.CONSTRUCTORS);
+                defaultValidatedExecutableTypes.getExecutableType().add(ExecutableType.NON_GETTER_METHODS);
+
+                parser.xmlConfig.setExecutableValidation(value);
+            }
+
+            applySimpleConfig(parser.xmlConfig, targetConfig);
+
+            parser.bootstrap = new BootstrapConfigurationImpl(
+                    parser.xmlConfig.getDefaultProvider(),
+                    parser.xmlConfig.getConstraintValidatorFactory(),
+                    parser.xmlConfig.getMessageInterpolator(),
+                    parser.xmlConfig.getTraversableResolver(),
+                    parser.xmlConfig.getParameterNameProvider(),
+                    new CopyOnWriteArraySet<String>(parser.xmlConfig.getConstraintMapping()),
+                    parser.xmlConfig.getExecutableValidation().getEnabled(),
+                    new CopyOnWriteArraySet<ExecutableType>(targetConfig.getExecutableValidation()),
+                    toMap(parser.xmlConfig.getProperty()));
+            return parser;
+        } else { // default config
+            final CopyOnWriteArraySet<ExecutableType> executableTypes = new CopyOnWriteArraySet<ExecutableType>();
+            executableTypes.add(ExecutableType.CONSTRUCTORS);
+            executableTypes.add(ExecutableType.NON_GETTER_METHODS);
+
+            parser.bootstrap = new BootstrapConfigurationImpl(
+                    null, null, null, null, null,
+                    new CopyOnWriteArraySet<String>(),
+                    true,
+                    executableTypes,
+                    new HashMap<String, String>());
+
+            targetConfig.setExecutableValidation(executableTypes);
+        }
+
+        return parser;
+    }
+
+    private static Map<String, String> toMap(final List<PropertyType> property) {
+        final Map<String, String> map = new HashMap<String, String>();
+        if (property != null) {
+            for (final PropertyType p : property) {
+                map.put(p.getName(), p.getValue());
+            }
         }
+        return map;
     }
 
-    private ValidationConfigType parseXmlConfig() {
+    private static ValidationConfigType parseXmlConfig(final String validationXmlFile) {
         InputStream inputStream = null;
         try {
-            inputStream = getInputStream(validationXmlFile);
+            inputStream = getInputStream(getValidationXmlFile(validationXmlFile));
             if (inputStream == null) {
             	log.log(Level.FINEST, String.format("No %s found. Using annotation based configuration only.", validationXmlFile));
                 return null;
@@ -111,8 +197,8 @@ public class ValidationParser {
         }
     }
 
-    protected InputStream getInputStream(String path) throws IOException {
-        ClassLoader loader = PrivilegedActions.getClassLoader(getClass());
+    protected static InputStream getInputStream(String path) throws IOException {
+        ClassLoader loader = PrivilegedActions.getClassLoader(ValidationParser.class);
         InputStream inputStream = loader.getResourceAsStream(path);
 
         if (inputStream != null) {
@@ -129,10 +215,10 @@ public class ValidationParser {
             }
         }
 
-        return inputStream;
+        return IOs.convertToMarkableInputStream(inputStream);
     }
 
-    private Schema getSchema() {
+    private static Schema getSchema() {
         return getSchema(VALIDATION_CONFIGURATION_XSD);
     }
 
@@ -154,30 +240,52 @@ public class ValidationParser {
         }
     }
 
-    private void applyConfig(ValidationConfigType xmlConfig, ConfigurationImpl targetConfig) {
-        applyProviderClass(xmlConfig, targetConfig);
-        applyMessageInterpolator(xmlConfig, targetConfig);
-        applyTraversableResolver(xmlConfig, targetConfig);
-        applyConstraintFactory(xmlConfig, targetConfig);
-        applyMappingStreams(xmlConfig, targetConfig);
-        applyProperties(xmlConfig, targetConfig);
+    public static void applySimpleConfig(ValidationConfigType xmlConfig, ConfigurationImpl targetConfig) {
+        applyExecutableValidation(xmlConfig, targetConfig);
     }
 
-    private void applyProperties(ValidationConfigType xmlConfig, ConfigurationImpl target) {
-        for (PropertyType property : xmlConfig.getProperty()) {
-            if (log.isLoggable(Level.FINEST)) {
-                log.log(Level.FINEST, String.format("Found property '%s' with value '%s' in %s", property.getName(), property.getValue(), validationXmlFile));
-            }
+    private static void applyProperties(ValidationConfigType xmlConfig, ConfigurationImpl target) {
+        for (final PropertyType property : xmlConfig.getProperty()) {
             target.addProperty(property.getName(), property.getValue());
         }
     }
 
+    private static void applyExecutableValidation(final ValidationConfigType xmlConfig, final ConfigurationImpl targetConfig) {
+        final CopyOnWriteArrayList<ExecutableType> executableTypes = new CopyOnWriteArrayList<ExecutableType>();
+        if (xmlConfig.getExecutableValidation() != null && xmlConfig.getExecutableValidation().getEnabled()
+                && xmlConfig.getExecutableValidation().getDefaultValidatedExecutableTypes() != null) {
+            executableTypes.addAll(xmlConfig.getExecutableValidation().getDefaultValidatedExecutableTypes().getExecutableType());
+        }
+
+        if (executableTypes.contains(ExecutableType.ALL)) {
+            executableTypes.clear();
+            executableTypes.add(ExecutableType.CONSTRUCTORS);
+            executableTypes.add(ExecutableType.NON_GETTER_METHODS);
+            executableTypes.add(ExecutableType.GETTER_METHODS);
+        } else if (executableTypes.contains(ExecutableType.NONE)) { // if both are present ALL gains
+            executableTypes.clear();
+        }
+
+        targetConfig.setExecutableValidation(executableTypes);
+    }
+
+    private void applyParameterNameProvider(final ValidationConfigType xmlConfig, final ConfigurationImpl targetConfig) {
+        final String parameterNameProvider = xmlConfig.getParameterNameProvider();
+        if (targetConfig.getParameterNameProvider() == targetConfig.getDefaultParameterNameProvider()) { // ref ==
+            if (parameterNameProvider != null) {
+                final Class<? extends ParameterNameProvider> clazz = Class.class.cast(loadClass(parameterNameProvider));
+                targetConfig.parameterNameProvider(newInstance(clazz));
+                log.log(Level.INFO, String.format("Using %s as validation provider.", parameterNameProvider));
+            }
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private void applyProviderClass(ValidationConfigType xmlConfig, ConfigurationImpl target) {
         String providerClassName = xmlConfig.getDefaultProvider();
         if (providerClassName != null) {
             Class<? extends ValidationProvider<?>> clazz =
-                    (Class<? extends ValidationProvider<?>>) loadClass(providerClassName);
+                (Class<? extends ValidationProvider<?>>) loadClass(providerClassName);
             target.setProviderClass(clazz);
             log.log(Level.INFO, String.format("Using %s as validation provider.", providerClassName));
         }
@@ -187,7 +295,7 @@ public class ValidationParser {
     private void applyMessageInterpolator(ValidationConfigType xmlConfig,
                                           ConfigurationImpl target) {
         String messageInterpolatorClass = xmlConfig.getMessageInterpolator();
-        if (target.getMessageInterpolator() == null) {
+        if (target.getMessageInterpolator() == target.getDefaultMessageInterpolator()) { // ref ==
             if (messageInterpolatorClass != null) {
                 Class<MessageInterpolator> clazz = (Class<MessageInterpolator>)
                         loadClass(messageInterpolatorClass);
@@ -201,7 +309,7 @@ public class ValidationParser {
     private void applyTraversableResolver(ValidationConfigType xmlConfig,
                                           ConfigurationImpl target) {
         String traversableResolverClass = xmlConfig.getTraversableResolver();
-        if (target.getTraversableResolver() == null) {
+        if (target.getTraversableResolver() == target.getDefaultTraversableResolver()) { // ref ==
             if (traversableResolverClass != null) {
                 Class<TraversableResolver> clazz = (Class<TraversableResolver>)
                         loadClass(traversableResolverClass);
@@ -215,9 +323,18 @@ public class ValidationParser {
         return AccessController.doPrivileged(new PrivilegedAction<T>() {
             public T run() {
                 try {
-                    return cls.newInstance();
+                    try {
+                        final BValExtension.Releasable<T> releasable = BValExtension.inject(cls);
+                        releasables.add(releasable);
+                        return releasable.getInstance();
+                    } catch (final Exception e) {
+                        return cls.newInstance();
+                    } catch (final NoClassDefFoundError error) {
+                        return cls.newInstance();
+                    }
                 } catch (final Exception ex) {
-                    throw new ValidationException("Cannot instantiate : " + cls, ex);
+                    exceptions.add(new ValidationException("Cannot instantiate : " + cls, ex));
+                    return null; // ensure BootstrapConfiguration can be read even if class can't be instantiated
                 }
             }
         });
@@ -227,7 +344,7 @@ public class ValidationParser {
     private void applyConstraintFactory(ValidationConfigType xmlConfig,
                                         ConfigurationImpl target) {
         String constraintFactoryClass = xmlConfig.getConstraintValidatorFactory();
-        if (target.getConstraintValidatorFactory() == null) {
+        if (target.getConstraintValidatorFactory() == target.getDefaultConstraintValidatorFactory()) { // ref ==
             if (constraintFactoryClass != null) {
                 Class<ConstraintValidatorFactory> clazz = (Class<ConstraintValidatorFactory>)
                         loadClass(constraintFactoryClass);
@@ -237,16 +354,16 @@ public class ValidationParser {
         }
     }
 
-    private void applyMappingStreams(ValidationConfigType xmlConfig,
+    private static void applyMappingStreams(ValidationConfigType xmlConfig,
                                      ConfigurationImpl target) {
-        for (JAXBElement<String> mappingFileNameElement : xmlConfig.getConstraintMapping()) {
-            String mappingFileName = mappingFileNameElement.getValue();
+        for (String rawMappingFileName : xmlConfig.getConstraintMapping()) {
+            String mappingFileName = rawMappingFileName;
             if (mappingFileName.startsWith("/")) {
                 // Classloader needs a path without a starting /
                 mappingFileName = mappingFileName.substring(1);
             }
             log.log(Level.FINEST, String.format("Trying to open input stream for %s", mappingFileName));
-            InputStream in = null;
+            InputStream in;
             try {
                 in = getInputStream(mappingFileName);
                 if (in == null) {
@@ -274,13 +391,28 @@ public class ValidationParser {
     private Class<?> loadClass(final String className) {
         ClassLoader loader = doPrivileged(SecureActions.getContextClassLoader());
         if (loader == null)
-            loader = getClass().getClassLoader();
+            loader = ValidationParser.class.getClassLoader();
 
         try {
             return Class.forName(className, true, loader);
         } catch (ClassNotFoundException ex) {
-            throw new ValidationException("Unable to load class: " + className, ex);
+            // TCK check BootstrapConfig is present in all cases
+            // so throw next exception later
+            exceptions.add(new ValidationException("Unable to load class: " + className, ex));
+            return null;
         }
     }
 
+    public void ensureValidatorFactoryCanBeBuilt() {
+        if (!exceptions.isEmpty()) {
+            throw  exceptions.iterator().next();
+        }
+    }
+
+    public void close() throws IOException {
+        for (final BValExtension.Releasable<?> releasable : releasables) {
+            releasable.release();
+        }
+        releasables.clear();
+    }
 }

Added: bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/beans.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/beans.xml?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/beans.xml (added)
+++ bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/beans.xml Mon Jul  1 10:06:18 2013
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans />

Added: bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension (added)
+++ bval/branches/bval-11/bval-jsr303/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension Mon Jul  1 10:06:18 2013
@@ -0,0 +1 @@
+org.apache.bval.cdi.BValExtension
\ No newline at end of file

Modified: bval/branches/bval-11/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties Mon Jul  1 10:06:18 2013
@@ -38,7 +38,7 @@ javax.validation.constraints.NotNull=org
 javax.validation.constraints.Null=org.apache.bval.constraints.NullValidator
 javax.validation.constraints.Past=org.apache.bval.constraints.PastValidatorForDate,\
   org.apache.bval.constraints.PastValidatorForCalendar
-javax.validation.constraints.Size=org.apache.bval.constraints.SizeValidatorForString,\
+javax.validation.constraints.Size=org.apache.bval.constraints.SizeValidatorForCharSequence,\
   org.apache.bval.constraints.SizeValidatorForMap,\
   org.apache.bval.constraints.SizeValidatorForCollection,\
   org.apache.bval.constraints.SizeValidatorForArrayOfBoolean,\

Modified: bval/branches/bval-11/bval-jsr303/src/main/xjb/binding-customization.xjb
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/xjb/binding-customization.xjb?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/xjb/binding-customization.xjb (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/xjb/binding-customization.xjb Mon Jul  1 10:06:18 2013
@@ -18,15 +18,21 @@
  under the License.
 -->
 <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
-    <jxb:bindings schemaLocation="../xsd/validation-mapping-1.0.xsd" node="/xs:schema">
-        <jxb:globalBindings>
-            <xjc:javaType name="java.lang.String" xmlType="xs:string" 
-                adapter="javax.xml.bind.annotation.adapters.CollapsedStringAdapter"/>
-        </jxb:globalBindings>
+              xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
+  <jxb:bindings schemaLocation="../xsd/validation-mapping-1.1.xsd" node="/xs:schema">
+    <jxb:globalBindings>
+      <xjc:javaType name="java.lang.String" xmlType="xs:string"
+                    adapter="javax.xml.bind.annotation.adapters.CollapsedStringAdapter"/>
+    </jxb:globalBindings>
 
-        <jxb:bindings node="//xs:complexType[9]/xs:sequence[1]/xs:element[1]">
-            <jxb:property name="classType"/>
-        </jxb:bindings>
+    <jxb:bindings node="//xs:complexType[@name='beanType']/xs:sequence[1]/xs:element[1]">
+      <jxb:property name="classType"/>
     </jxb:bindings>
+  </jxb:bindings>
+  <jxb:bindings schemaLocation="../xsd/validation-configuration-1.1.xsd" node="/xs:schema">
+    <jxb:bindings node="//xs:element[@name='executable-type']">
+      <jxb:javaType name="javax.validation.executable.ExecutableType"
+                    parseMethod="javax.validation.executable.ExecutableType.valueOf"/>
+    </jxb:bindings>
+  </jxb:bindings>
 </jxb:bindings>

Added: bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-configuration-1.1.xsd
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-configuration-1.1.xsd?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-configuration-1.1.xsd (added)
+++ bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-configuration-1.1.xsd Mon Jul  1 10:06:18 2013
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<xs:schema attributeFormDefault="unqualified"
+           elementFormDefault="qualified"
+           targetNamespace="http://jboss.org/xml/ns/javax/validation/configuration"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:config="http://jboss.org/xml/ns/javax/validation/configuration"
+           version="1.1">
+  <xs:element name="validation-config" type="config:validation-configType"
+              xmlns:config="http://jboss.org/xml/ns/javax/validation/configuration"/>
+  <xs:complexType name="validation-configType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="default-provider" minOccurs="0"/>
+      <xs:element type="xs:string" name="message-interpolator" minOccurs="0"/>
+      <xs:element type="xs:string" name="traversable-resolver" minOccurs="0"/>
+      <xs:element type="xs:string" name="constraint-validator-factory" minOccurs="0"/>
+      <xs:element type="xs:string" name="parameter-name-provider" minOccurs="0"/>
+      <xs:element type="config:executable-validationType" name="executable-validation" minOccurs="0"/>
+      <xs:element type="xs:string" name="constraint-mapping" maxOccurs="unbounded" minOccurs="0"/>
+      <xs:element type="config:propertyType" name="property" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="version" type="config:versionType" fixed="1.1" /> <!-- use="required" -->
+  </xs:complexType>
+  <xs:complexType name="executable-validationType">
+    <xs:sequence>
+      <xs:element type="config:default-validated-executable-typesType" name="default-validated-executable-types" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="enabled" use="optional" type="xs:boolean" default="true"/>
+  </xs:complexType>
+  <xs:complexType name="default-validated-executable-typesType">
+    <xs:sequence>
+      <xs:element name="executable-type" maxOccurs="unbounded" minOccurs="1">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="NONE"/>
+            <xs:enumeration value="CONSTRUCTORS"/>
+            <xs:enumeration value="NON_GETTER_METHODS"/>
+            <xs:enumeration value="GETTER_METHODS"/>
+            <xs:enumeration value="ALL"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="propertyType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute name="name" use="required" type="xs:string"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="versionType">
+    <xs:restriction base="xs:token">
+      <xs:pattern value="[0-9]+(\.[0-9]+)*" />
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>

Added: bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-mapping-1.1.xsd
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-mapping-1.1.xsd?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-mapping-1.1.xsd (added)
+++ bval/branches/bval-11/bval-jsr303/src/main/xsd/validation-mapping-1.1.xsd Mon Jul  1 10:06:18 2013
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<xs:schema attributeFormDefault="unqualified"
+           elementFormDefault="qualified"
+           targetNamespace="http://jboss.org/xml/ns/javax/validation/mapping"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"
+           version="1.1">
+  <xs:element name="constraint-mappings" type="map:constraint-mappingsType"/>
+
+  <xs:complexType name="payloadType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupsType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupSequenceType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupConversionType">
+    <xs:attribute type="xs:string" name="from" use="required"/>
+    <xs:attribute type="xs:string" name="to" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="constraint-mappingsType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="default-package" minOccurs="0"/>
+      <xs:element type="map:beanType"
+                  name="bean"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+      <xs:element type="map:constraint-definitionType"
+                  name="constraint-definition"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="version" type="map:versionType" fixed="1.1" /> <!-- use="required" -->
+  </xs:complexType>
+  <xs:simpleType name="versionType">
+    <xs:restriction base="xs:token">
+      <xs:pattern value="[0-9]+(\.[0-9]+)*"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="validated-byType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="include-existing-validators" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constraintType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="message" minOccurs="0"/>
+      <xs:element type="map:groupsType"
+                  name="groups"
+                  minOccurs="0"/>
+      <xs:element type="map:payloadType"
+                  name="payload"
+                  minOccurs="0"/>
+      <xs:element type="map:elementType"
+                  name="element"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="annotation" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="elementType" mixed="true">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
+      <xs:element type="map:annotationType"
+                  name="annotation"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="classType">
+    <xs:sequence>
+      <xs:element type="map:groupSequenceType"
+                  name="group-sequence"
+                  minOccurs="0"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="beanType">
+    <xs:sequence>
+      <xs:element type="map:classType"
+                  name="class"
+                  minOccurs="0">
+      </xs:element>
+      <xs:element type="map:fieldType"
+                  name="field"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:getterType"
+                  name="getter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constructorType"
+                  name="constructor"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:methodType"
+                  name="method"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="class" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="annotationType">
+    <xs:sequence>
+      <xs:element type="map:elementType"
+                  name="element"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="getterType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="methodType">
+    <xs:sequence>
+      <xs:element type="map:parameterType"
+                  name="parameter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:crossParameterType"
+                  name="cross-parameter"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+      <xs:element type="map:returnValueType"
+                  name="return-value"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constructorType">
+    <xs:sequence>
+      <xs:element type="map:parameterType"
+                  name="parameter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:crossParameterType"
+                  name="cross-parameter"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+      <xs:element type="map:returnValueType"
+                  name="return-value"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="parameterType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="type" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="returnValueType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="crossParameterType">
+    <xs:sequence>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constraint-definitionType">
+    <xs:sequence>
+      <xs:element type="map:validated-byType"
+                  name="validated-by"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="annotation" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="fieldType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+</xs:schema>

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java Mon Jul  1 10:06:18 2013
@@ -109,6 +109,10 @@ public class BootstrapTest extends TestC
                 }
                 return new DefaultConstraintValidatorFactory().getInstance(key);
             }
+
+            public void releaseInstance(ConstraintValidator<?, ?> instance) {
+                // no-op
+            }
         });
         factory = builder.buildValidatorFactory();
         validator = factory.getValidator();

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java Mon Jul  1 10:06:18 2013
@@ -66,12 +66,10 @@ public class ConstraintValidatorContextT
     }
 
     public void testPerson1() {
-        cvb.addNode("person").addNode(null).inIterable().atIndex(1)
-                .addConstraintViolation();
-        Error error = cvc.getErrorMessages().iterator().next();
-        PathImpl errorPath = (PathImpl) error.getOwner();
-        Assert.assertEquals("Incorrect path created", "person[1]", errorPath
-                .toString());
+        cvb.addNode("person").addNode(null).inIterable().atIndex(1).addConstraintViolation();
+        final Error error = cvc.getErrorMessages().iterator().next();
+        final PathImpl errorPath = (PathImpl) error.getOwner();
+        Assert.assertEquals("Incorrect path created", "person[1]", errorPath.toString());
     }
 
     public void testPersonLawyerName() {

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ContextConstraintValidatorFactoryTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ContextConstraintValidatorFactoryTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ContextConstraintValidatorFactoryTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ContextConstraintValidatorFactoryTest.java Mon Jul  1 10:06:18 2013
@@ -102,7 +102,11 @@ public class ContextConstraintValidatorF
 				}
 				return null;
 			}
-		};
+
+            public void releaseInstance(ConstraintValidator<?, ?> instance) {
+                // no-op
+            }
+        };
 		final Set<ConstraintViolation<Example>> violations = factory.usingContext().constraintValidatorFactory(constraintValidatorFactory)
 				.getValidator().validate(new Example());
 		assertTrue(violations.isEmpty());

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java Mon Jul  1 10:06:18 2013
@@ -61,6 +61,10 @@ public class CustomConstraintValidatorFa
             public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) {
                 return null; // always return null
             }
+
+            public void releaseInstance(ConstraintValidator<?, ?> instance) {
+                // no-op
+            }
         };
         
         // Create a validator with this factory

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java Mon Jul  1 10:06:18 2013
@@ -49,6 +49,10 @@ public class CustomValidatorFactoryTest 
             return null;
         }
 
+        public ParameterNameProvider getParameterNameProvider() {
+            return null;
+        }
+
         public MessageInterpolator getMessageInterpolator() {
             return null;
         }
@@ -65,6 +69,10 @@ public class CustomValidatorFactoryTest 
             return null;
         }
 
+        public void close() {
+
+        }
+
         public ValidatorContext usingContext() {
             return null;
         }

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java Mon Jul  1 10:06:18 2013
@@ -68,6 +68,10 @@ public class DefaultMessageInterpolatorT
             public Object getValidatedValue() {
                 return "12345678";
             }
+
+            public <T> T unwrap(Class<T> type) {
+                return null;
+            }
         };
         String msg = interpolator.interpolate("{validator.creditcard}", ctx);
         Assert.assertEquals("credit card is not valid", msg);
@@ -81,6 +85,10 @@ public class DefaultMessageInterpolatorT
             public Object getValidatedValue() {
                 return "";
             }
+
+            public <T> T unwrap(Class<T> type) {
+                return null;
+            }
         };
 
         msg = interpolator.interpolate("{org.apache.bval.constraints.NotEmpty.message}", ctx);
@@ -107,6 +115,10 @@ public class DefaultMessageInterpolatorT
             public Object getValidatedValue() {
                 return "12345678";
             }
+
+            public <T> T unwrap(Class<T> type) {
+                return null;
+            }
         };
 
         String result = this.interpolator.interpolate("Id number should match {regexp}", ctx);
@@ -124,6 +136,10 @@ public class DefaultMessageInterpolatorT
             public Object getValidatedValue() {
                 return "12345678";
             }
+
+            public <T> T unwrap(Class<T> type) {
+                return null;
+            }
         };
 
         result = this.interpolator.interpolate("Other id should match {regexp}", ctx);

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java Mon Jul  1 10:06:18 2013
@@ -18,27 +18,9 @@
  */
 package org.apache.bval.jsr303;
 
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.UnexpectedTypeException;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-
 import junit.framework.Assert;
 import junit.framework.TestCase;
-
-import org.apache.bval.constraints.SizeValidatorForString;
+import org.apache.bval.constraints.SizeValidatorForCharSequence;
 import org.apache.bval.jsr303.example.Address;
 import org.apache.bval.jsr303.example.Book;
 import org.apache.bval.jsr303.example.Engine;
@@ -49,6 +31,22 @@ import org.apache.bval.jsr303.example.Se
 import org.apache.bval.jsr303.example.SizeTestEntity;
 import org.apache.bval.jsr303.util.TestUtils;
 
+import javax.validation.ConstraintViolation;
+import javax.validation.UnexpectedTypeException;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+import javax.validation.metadata.BeanDescriptor;
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.metadata.ElementDescriptor;
+import javax.validation.metadata.PropertyDescriptor;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
 /**
  * Description: <br/>
  */
@@ -189,7 +187,7 @@ public class Jsr303Test extends TestCase
         Assert.assertNotNull(desc);
         boolean found = false;
         for (ConstraintDescriptor<?> each : desc.getConstraintDescriptors()) {
-            if (each.getConstraintValidatorClasses().get(0).equals(SizeValidatorForString.class)) {
+            if (each.getConstraintValidatorClasses().get(0).equals(SizeValidatorForCharSequence.class)) {
                 Assert.assertTrue(each.getAttributes().containsKey("max"));
                 assertEquals(30, each.getAttributes().get("max"));
                 found = true;

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java Mon Jul  1 10:06:18 2013
@@ -692,8 +692,7 @@ public class ValidationTest extends Test
 
     public void testKeyedMetadata() {
         @SuppressWarnings("serial")
-        BeanDescriptor beanDescriptor = validator.getConstraintsForClass(new HashMap<String, Object>() {
-        }.getClass());
+        BeanDescriptor beanDescriptor = validator.getConstraintsForClass(new HashMap<String, Object>() {}.getClass());
         Assert.assertNotNull(beanDescriptor);
         Assert.assertFalse(beanDescriptor.isBeanConstrained());
         Assert.assertNull(beanDescriptor.getConstraintsForProperty("[foo]"));

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java Mon Jul  1 10:06:18 2013
@@ -16,21 +16,19 @@
  */
 package org.apache.bval.jsr303.extensions;
 
-import junit.framework.Assert;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-
 import org.apache.bval.jsr303.ApacheValidationProvider;
-import org.apache.bval.jsr303.ApacheValidatorConfiguration;
 import org.apache.bval.jsr303.ClassValidator;
 import org.apache.bval.jsr303.extensions.ExampleMethodService.Person;
+import org.junit.Ignore;
 
 import javax.validation.Validation;
-import javax.validation.ValidationException;
 import javax.validation.Validator;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+import javax.validation.executable.ExecutableValidator;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.Set;
@@ -57,54 +55,44 @@ public class MethodValidatorImplTest ext
         ClassValidator cv = v.unwrap(ClassValidator.class);
         assertTrue(v == cv);
         assertTrue(v == v.unwrap(Validator.class));
-        MethodValidatorImpl mvi = v.unwrap(MethodValidatorImpl.class);
-        assertNotNull(mvi);
-        MethodValidator mv = v.unwrap(MethodValidator.class);
+        ExecutableValidator mv = v.forExecutables();
         assertNotNull(mv);
-        assertTrue(mv == mv.unwrap(MethodValidatorImpl.class));
-        assertTrue(mv == mv.unwrap(ClassValidator.class));
     }
 
     public void testValidateMethodParameters() throws NoSuchMethodException {
         ExampleMethodService service = new ExampleMethodService();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
         Method method =
               service.getClass().getMethod("concat", new Class[]{String.class, String.class});
         String[] params = new String[2];
         params[0] = "Hello ";
         params[1] = "world";
-        Set results = mv.validateParameters(service.getClass(), method, params);
+        Set results = mv.validateParameters(service, method, params);
         assertEquals(true, results.isEmpty());
 
         params[0] = "";
-        results = mv.validateParameters(service.getClass(), method, params);
+        results = mv.validateParameters(service, method, params);
         assertEquals(1, results.size());
 
         params[1] = null;
-        results = mv.validateParameters(service.getClass(), method, params);
+        results = mv.validateParameters(service, method, params);
         assertEquals(2, results.size());
-
-        results = mv.validateParameter(service.getClass(), method,  params[0], 0);
-        assertEquals(1, results.size());
-
-        results = mv.validateParameter(service.getClass(), method,  "ok", 0);
-        assertEquals(0, results.size());
     }
     
     public void testValidateMoreMethodParameters() throws NoSuchMethodException {
     	
     	ExampleMethodService service = new ExampleMethodService();
-    	MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
     	Method saveMethod = service.getClass().getMethod("save", new Class[]{String.class});
     	
     	String[] saveParams = new String[1];
     	saveParams[0] = "abcd";
     	
-    	Set results = mv.validateParameters(service.getClass(), saveMethod, saveParams);
+    	Set results = mv.validateParameters(service, saveMethod, saveParams);
     	assertTrue(results.isEmpty());
     	
     	saveParams[0] = "zzzz";
-    	results = mv.validateParameters(service.getClass(), saveMethod, saveParams);
+    	results = mv.validateParameters(service, saveMethod, saveParams);
     	assertEquals(1, results.size());
     	
     	Method echoMethod = service.getClass().getMethod("echo", new Class[]{String.class});
@@ -112,115 +100,110 @@ public class MethodValidatorImplTest ext
     	String[] echoParams = new String[1];
     	echoParams[0] = "hello";
     	
-    	results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
+    	results = mv.validateParameters(service, echoMethod, echoParams);
     	assertTrue(results.isEmpty());
     	
     	echoParams[0] = "h";
-    	results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
+    	results = mv.validateParameters(service, echoMethod, echoParams);
     	assertEquals(1, results.size());
     	
     	echoParams[0] = null;
-    	results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
+    	results = mv.validateParameters(service, echoMethod, echoParams);
     	assertEquals(1, results.size());
     	
     }
 
     public void testValidateConstructorParameters() throws NoSuchMethodException {
         ExampleMethodService service = new ExampleMethodService();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
         Constructor constructor =
               service.getClass().getConstructor(String.class, String.class);
         String[] params = new String[2];
         params[0] = "Hello ";
         params[1] = "world";
-        Set results = mv.validateParameters(service.getClass(), constructor, params);
+        Set results = mv.validateConstructorParameters(constructor, params);
         assertEquals(true, results.isEmpty());
 
         params[0] = "";
-        results = mv.validateParameters(service.getClass(), constructor, params);
+        results = mv.validateConstructorParameters(constructor, params);
         assertEquals(1, results.size());
 
         params[1] = null;
-        results = mv.validateParameters(service.getClass(), constructor, params);
+        results = mv.validateConstructorParameters(constructor, params);
         assertEquals(2, results.size());
-
-        results = mv.validateParameter(service.getClass(), constructor,  params[0], 0);
-        assertEquals(1, results.size());
-
-        results = mv.validateParameter(service.getClass(), constructor,  "ok", 0);
-        assertEquals(0, results.size());
     }
 
     public void testValidateReturnValue() throws NoSuchMethodException {
         ExampleMethodService service = new ExampleMethodService();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
-        Method method =
-              service.getClass().getMethod("concat", new Class[]{String.class, String.class});
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
+        Method method = service.getClass().getMethod("concat", new Class[]{String.class, String.class});
+
         Set results;
-        results = mv.validateReturnedValue(service.getClass(), method, "test");
+
+        results = mv.validateReturnValue(service, method, "test");
         assertEquals(true, results.isEmpty());
 
-        results = mv.validateReturnedValue(service.getClass(), method, "");
+        results = mv.validateReturnValue(service, method, "");
         assertEquals(1, results.size());
     }
     
     public void testValidateMoreReturnValue() throws NoSuchMethodException {
     	ExampleMethodService service = new ExampleMethodService();
-    	MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
     	Method echoMethod = service.getClass().getMethod("echo", new Class[]{String.class});
     	
     	String returnedValue = "a too long string";
-    	Set results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
+    	Set results = mv.validateReturnValue(service, echoMethod, returnedValue);
     	assertEquals(1, results.size());
-    	
+
     	returnedValue = null;
-    	results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
-    	assertEquals(1, results.size());
+        results = mv.validateReturnValue(service, echoMethod, returnedValue);
+        assertEquals(1, results.size());
     	
     	returnedValue = "valid";
-    	results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
+        results = mv.validateReturnValue(service, echoMethod, returnedValue);
     	assertTrue(results.isEmpty());
     }
     
     public void testValidateValidParam() throws NoSuchMethodException {
         ExampleMethodService service = new ExampleMethodService();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
         
         Method personOp1 = service.getClass().getMethod("personOp1", new Class[]{Person.class});
         
         // Validate with invalid person
         Person p = new ExampleMethodService.Person();
-        Set<?> results = mv.validateParameters(service.getClass(), personOp1, new Object[]{p});
+        Set<?> results = mv.validateParameters(service, personOp1, new Object[]{p});
         assertEquals("Expected 1 violation", 1, results.size());
         
         // validate with valid person
         p.name = "valid name";
-        results = mv.validateParameters(service.getClass(), personOp1, new Object[]{p});
+        results = mv.validateParameters(service, personOp1, new Object[]{p});
         assertTrue("No violations expected", results.isEmpty());
         
         // validate with null person
-        results = mv.validateParameters(service.getClass(), personOp1, new Object[]{null});
+        results = mv.validateParameters(service, personOp1, new Object[]{null});
         assertTrue("No violations expected", results.isEmpty());
     }
     
     public void testValidateNotNullValidParam() throws NoSuchMethodException {
         ExampleMethodService service = new ExampleMethodService();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
         
         Method personOp2 = service.getClass().getMethod("personOp2", new Class[]{Person.class});
         
         // Validate with null person
-        Set<?> results = mv.validateParameters(service.getClass(), personOp2, new Object[]{null});
+        Set<?> results = mv.validateParameters(service, personOp2, new Object[]{null});
         assertEquals("Expected 1 violation", 1, results.size());
         
         // Validate with invalid person
         Person p = new ExampleMethodService.Person();
-        results = mv.validateParameters(service.getClass(), personOp2, new Object[]{p});
+        results = mv.validateParameters(service, personOp2, new Object[]{p});
         assertEquals("Expected 1 violation", 1, results.size());
         
         // validate with valid person
         p.name = "valid name";
-        results = mv.validateParameters(service.getClass(), personOp2, new Object[]{p});
+        results = mv.validateParameters(service, personOp2, new Object[]{p});
         assertTrue("No violations expected", results.isEmpty());
     }
     
@@ -234,9 +217,10 @@ public class MethodValidatorImplTest ext
      *  <li>interface.class + impl.method</li>
      * </ul>
      */
-    public void testValidateImplementedMethod() throws NoSuchMethodException {
+    @Ignore("violates Liskov principle, forbidden by the spec - 4.5.5")
+    public void validateImplementedMethod() throws NoSuchMethodException {
         UserMethodsImpl um = new UserMethodsImpl();
-        MethodValidator mv = getValidator().unwrap(MethodValidator.class);
+        ExecutableValidator mv = getValidator().unwrap(ExecutableValidator.class);
         
         Method classMethod = um.getClass().getMethod("findUser", new Class[]{String.class, String.class, Integer.class});
         Method ifaceMethod = UserMethods.class.getMethod("findUser", new Class[]{String.class, String.class, Integer.class});
@@ -244,27 +228,8 @@ public class MethodValidatorImplTest ext
         Set<?> results;
         
         // Validate from class (should create violations)
-        results = mv.validateParameters(um.getClass(), classMethod, new Object[]{"", "valid", null });
+        results = mv.validateParameters(um, classMethod, new Object[]{"", "valid", null });
         assertEquals("Invalid number of violations", 2, results.size());
-        
-        // Validate from interface
-        results = mv.validateParameters(UserMethods.class, ifaceMethod, new Object[]{"", "valid", null });
-        assertEquals("Invalid number of violations", 0, results.size());
-        
-        // Invalid combinations
-        try {
-            results = mv.validateParameters(UserMethods.class, classMethod, new Object[]{"", "valid", null });
-            Assert.fail("Exception not thrown when validating interface.class + impl.method");
-        } catch (ValidationException e) {
-            // Expected
-        }
-        try {
-            results = mv.validateParameters(um.getClass(), ifaceMethod, new Object[]{"", "valid", null });
-            Assert.fail("Exception not thrown when validating impl.class + interface.method");
-        } catch (ValidationException e) {
-            // Expected
-        }
-        
     }
     
     public static interface UserMethods {
@@ -283,7 +248,9 @@ public class MethodValidatorImplTest ext
         return Validation
             .byProvider(ApacheValidationProvider.class)
             .configure()
+                /*
             .addProperty(ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES,
-                MethodValidatorMetaBeanFactory.class.getName()).buildValidatorFactory().getValidator();
+                MethodValidatorMetaBeanFactory.class.getName())*/
+                .buildValidatorFactory().getValidator();
     }
 }

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java Mon Jul  1 10:06:18 2013
@@ -126,10 +126,10 @@ public class PathImplTest extends TestCa
     }
 
     public void testNull() {
-        assertEquals(PathImpl.createPathFromString(null), PathImpl.create(null));
+        assertEquals(PathImpl.createPathFromString(null), PathImpl.create());
 
-        assertEquals("", PathImpl.create(null).toString());
-        Path path = PathImpl.create(null);
+        assertEquals("", PathImpl.create().toString());
+        Path path = PathImpl.create();
         Path.Node node = path.iterator().next();
         assertEquals(null, node.getName());
     }
@@ -172,11 +172,11 @@ public class PathImplTest extends TestCa
     }
 
     public void testToString() {
-        PathImpl path = PathImpl.create(null);
+        PathImpl path = PathImpl.create();
         path.addNode(new NodeImpl("firstName"));
         assertEquals("firstName", path.toString());
 
-        path = PathImpl.create(null);
+        path = PathImpl.create();
         path.getLeafNode().setIndex(2);
         assertEquals("[2]", path.toString());
         path.addNode(new NodeImpl("firstName"));

Modified: bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java Mon Jul  1 10:06:18 2013
@@ -45,11 +45,10 @@ public class ValidationParserTest extend
     }
 
     public void testGetInputStream() throws IOException {
-        ValidationParser vp = new ValidationParser("sample-validation.xml");
-        assertNotNull(vp.getInputStream("sample-validation.xml"));
+        assertNotNull(ValidationParser.getInputStream("sample-validation.xml"));
 
         try {
-            vp.getInputStream("META-INF/MANIFEST.MF"); // this is available in multiple jars hopefully
+            ValidationParser.getInputStream("META-INF/MANIFEST.MF"); // this is available in multiple jars hopefully
             fail("exception not thrown");
         } catch(ValidationException vex) {
             assertTrue(vex.getMessage().startsWith("More than "));
@@ -57,10 +56,8 @@ public class ValidationParserTest extend
     }
 
     public void testParse() {
-        ValidationParser vp = new ValidationParser("sample-validation.xml");
-        ConfigurationImpl config =
-              new ConfigurationImpl(null, new ApacheValidationProvider());
-        vp.processValidationConfig(config);
+        ConfigurationImpl config = new ConfigurationImpl(null, new ApacheValidationProvider());
+        ValidationParser.processValidationConfig("sample-validation.xml", config, false);
     }
 
     public void testConfigureFromXml() {

Modified: bval/branches/bval-11/bval-jsr303/src/test/resources/sample-constraints.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/test/resources/sample-constraints.xml?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/test/resources/sample-constraints.xml (original)
+++ bval/branches/bval-11/bval-jsr303/src/test/resources/sample-constraints.xml Mon Jul  1 10:06:18 2013
@@ -34,7 +34,7 @@
 
     </field>
     <field name="valueCode">
-      <valid/>
+      <!--<valid/>-->
       <!-- @HasValue({ 0, 20 }) -->
       <constraint annotation="org.apache.bval.constraints.HasValue">
         <element name="value">
@@ -45,7 +45,7 @@
 
     </field>
     <getter name="firstName">
-      <valid/>
+      <!--<valid/>-->
       <!-- @Size(message="Size is limited",
                  groups={First.class, Default.class},
                  max=10
@@ -66,7 +66,7 @@
 
   <constraint-definition annotation="javax.validation.constraints.Size">
       <validated-by include-existing-validators="false">
-          <value>org.apache.bval.constraints.SizeValidatorForString</value>
+          <value>org.apache.bval.constraints.SizeValidatorForCharSequence</value>
       </validated-by>
   </constraint-definition>
 

Modified: bval/branches/bval-11/bval-tck/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck/pom.xml?rev=1498347&r1=1498346&r2=1498347&view=diff
==============================================================================
--- bval/branches/bval-11/bval-tck/pom.xml (original)
+++ bval/branches/bval-11/bval-tck/pom.xml Mon Jul  1 10:06:18 2013
@@ -34,9 +34,44 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.bval</groupId>
-            <artifactId>org.apache.bval.bundle</artifactId>
+            <artifactId>bval-core</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.bval</groupId>
+            <artifactId>bval-jsr303</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ejb_3.1_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-el_2.2_spec</artifactId>
+            <version>1.0.4</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <properties>
@@ -123,9 +158,16 @@
                 </dependency>
                 -->
                 <dependency>
+                  <groupId>javax.validation</groupId>
+                  <artifactId>validation-api</artifactId>
+                  <scope>provided</scope>
+                </dependency>
+                <!-- TODO
+                <dependency>
                     <groupId>org.apache.geronimo.specs</groupId>
                     <artifactId>geronimo-validation_1.0_spec</artifactId>
                 </dependency>
+                -->
                 <dependency>
                     <groupId>org.testng</groupId>
                     <artifactId>testng</artifactId>
@@ -145,6 +187,10 @@
             </dependencies>
             <repositories>
                 <repository>
+                  <id>nuxeo</id>
+                  <url>https://maven.nuxeo.org/nexus/content/groups/public/</url>
+                </repository>
+                <repository>
                     <!-- override outdated URLs for jboss repo ids -->
                     <id>repository.jboss.org</id>
                     <name>JBoss Public Maven Repository Group</name>
@@ -214,20 +260,22 @@
                                             <classifier>suite</classifier>
                                             <overWrite>false</overWrite>
                                         </artifactItem>
-                                        <!-- use geronimo-validation spec
+                                        <!-- TODO: use geronimo-validation spec -->
                                         <artifactItem>
                                             <groupId>javax.validation</groupId>
                                             <artifactId>validation-api</artifactId>
                                             <overWrite>true</overWrite>
                                             <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
                                         </artifactItem>
-                                        -->
+
+                                        <!-- TODO
                                         <artifactItem>
                                             <groupId>org.apache.geronimo.specs</groupId>
                                             <artifactId>geronimo-validation_1.0_spec</artifactId>
                                             <overWrite>true</overWrite>
                                             <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
                                         </artifactItem>
+                                        -->
                                         <artifactItem>
                                             <groupId>org.apache.bval</groupId>
                                             <artifactId>org.apache.bval.bundle</artifactId>

Added: bval/branches/bval-11/bval-tck/work-tests-suite.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck/work-tests-suite.xml?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-tck/work-tests-suite.xml (added)
+++ bval/branches/bval-11/bval-tck/work-tests-suite.xml Mon Jul  1 10:06:18 2013
@@ -0,0 +1,27 @@
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
+<!--
+  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.
+-->
+<!--
+JUST HERE TO BE ABLE TO RUN TCK ONE BY ONE WHEN DEVELOPING
+think to add -Dvalidation.provider=org.apache.bval.jsr303.ApacheValidationProvider to your runner config
+-->
+<suite name="tmp" verbose="1">
+  <test name="tmp">
+    <classes>
+        <class name="org.hibernate.jsr303.tck.tests.constraints.application.ValidationRequirementTest" />
+    </classes>
+  </test>
+</suite>

Added: bval/branches/bval-11/bval-tck11/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck11/pom.xml?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-tck11/pom.xml (added)
+++ bval/branches/bval-11/bval-tck11/pom.xml Mon Jul  1 10:06:18 2013
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>bval-parent</artifactId>
+        <groupId>org.apache.bval</groupId>
+        <version>0.6-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>bval-tck11</artifactId>
+    <name>Apache BVal :: bval-tck11 (TCK Runner)</name>
+    <description>Aggregates dependencies and runs the JSR-349 TCK</description>
+
+    <properties>
+        <tck.version>1.1.0.Final</tck.version>
+        <owb.version>1.2.1-SNAPSHOT</owb.version>
+        <arquillian.version>1.0.3.Final</arquillian.version>
+        <validation.provider>org.apache.bval.jsr303.ApacheValidationProvider</validation.provider>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>1.1.0.Final</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ejb_3.1_spec</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-el_2.2_spec</artifactId>
+            <version>1.0.4</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.bval</groupId>
+            <artifactId>bval-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.bval</groupId>
+            <artifactId>bval-jsr303</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <!-- can be used to test in jse mode but globally it will need a lot of exclusions so not sure it is relevant
+        <dependency>
+          <groupId>org.hibernate.beanvalidation.tck</groupId>
+          <artifactId>beanvalidation-standalone-container-adapter</artifactId>
+          <version>${tck.version}</version>
+          <scope>test</scope>
+        </dependency>
+        -->
+        <dependency>
+            <groupId>org.jboss.arquillian.container</groupId>
+            <artifactId>arquillian-container-test-spi</artifactId>
+            <version>${arquillian.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openwebbeans.arquillian</groupId>
+            <artifactId>owb-arquillian-standalone</artifactId>
+            <version>${owb.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openwebbeans</groupId>
+            <artifactId>openwebbeans-impl</artifactId>
+            <version>${owb.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-jasper-el</artifactId>
+            <version>7.0.41</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hibernate.beanvalidation.tck</groupId>
+            <artifactId>beanvalidation-tck-tests</artifactId>
+            <version>${tck.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.arquillian.testng</groupId>
+            <artifactId>arquillian-testng-container</artifactId>
+            <version>${arquillian.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.arquillian.protocol</groupId>
+            <artifactId>arquillian-protocol-servlet</artifactId>
+            <version>${arquillian.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>nuxeo</id>
+            <url>https://maven.nuxeo.org/nexus/content/groups/public/</url>
+        </repository>
+    </repositories>
+
+    <profiles>
+        <profile>
+            <id>tck11</id>
+            <activation>
+                <property>
+                    <name>tck11</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
+
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <version>2.7</version>
+                        <executions>
+                            <execution>
+                                <id>copy-tck-test-suite-file</id>
+                                <phase>generate-test-sources</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <stripVersion>true</stripVersion>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.hibernate.beanvalidation.tck</groupId>
+                                            <artifactId>beanvalidation-tck-tests</artifactId>
+                                            <type>xml</type>
+                                            <classifier>suite</classifier>
+                                            <overWrite>false</overWrite>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <suiteXmlFiles>
+                                <suiteXmlFile>${project.build.directory}/dependency/beanvalidation-tck-tests-suite.xml
+                                </suiteXmlFile>
+                            </suiteXmlFiles>
+                            <systemProperties>
+                                <property>
+                                    <name>validation.provider</name>
+                                    <value>${validation.provider}</value>
+                                </property>
+                            </systemProperties>
+                            <parallel>methods</parallel>
+                            <threadCount>4</threadCount>
+                        </configuration>
+                    </plugin>
+
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>generate-test-report</id>
+                                <phase>test</phase>
+                                <goals>
+                                    <goal>report-only</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
+                            <outputName>test-report</outputName>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Added: bval/branches/bval-11/bval-tck11/src/main/java/org/apache/bval/arquillian/BValArquillianExtension.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck11/src/main/java/org/apache/bval/arquillian/BValArquillianExtension.java?rev=1498347&view=auto
==============================================================================
--- bval/branches/bval-11/bval-tck11/src/main/java/org/apache/bval/arquillian/BValArquillianExtension.java (added)
+++ bval/branches/bval-11/bval-tck11/src/main/java/org/apache/bval/arquillian/BValArquillianExtension.java Mon Jul  1 10:06:18 2013
@@ -0,0 +1,28 @@
+/*
+ * 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.arquillian;
+
+import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.TestEnricher;
+
+public class BValArquillianExtension implements LoadableExtension {
+    public void register(final ExtensionBuilder builder) {
+        builder.service(TestEnricher.class, EJBEnricher.class);
+    }
+}