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/17 13:07:00 UTC

svn commit: r1504074 - in /bval/branches/bval-11: bval-jsr303/ bval-jsr303/src/main/java/org/apache/bval/cdi/ bval-jsr303/src/main/java/org/apache/bval/jsr303/ bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ bval-tck11/

Author: rmannibucau
Date: Wed Jul 17 11:06:59 2013
New Revision: 1504074

URL: http://svn.apache.org/r1504074
Log:
using cdi11 module of OWB and jboss interceptor API while G one is not ready - Note: OWB needs to be built locally using cdi-1.1 profile

Modified:
    bval/branches/bval-11/bval-jsr303/pom.xml
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/cdi/BValInterceptor.java
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterAccess.java
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterDescriptorImpl.java
    bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java
    bval/branches/bval-11/bval-tck11/pom.xml
    bval/branches/bval-11/bval-tck11/work-tests-suite.xml

Modified: bval/branches/bval-11/bval-jsr303/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/pom.xml?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/pom.xml (original)
+++ bval/branches/bval-11/bval-jsr303/pom.xml Wed Jul 17 11:06:59 2013
@@ -140,12 +140,20 @@
             <version>1.0.2</version>
             <optional>true</optional>
         </dependency>
+        <!-- TODO: get spec v1.2 to replace JBoss spec jar
         <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.jboss.spec.javax.interceptor</groupId>
+          <artifactId>jboss-interceptors-api_1.2_spec</artifactId>
+          <version>1.0.0.Alpha1</version>
+          <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-atinject_1.0_spec</artifactId>

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/cdi/BValInterceptor.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/cdi/BValInterceptor.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/cdi/BValInterceptor.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/cdi/BValInterceptor.java Wed Jul 17 11:06:59 2013
@@ -18,9 +18,11 @@
  */
 package org.apache.bval.cdi;
 
+import org.apache.bval.jsr303.util.ClassHelper;
 import org.apache.bval.jsr303.util.Proxies;
 
 import javax.inject.Inject;
+import javax.interceptor.AroundConstruct;
 import javax.interceptor.AroundInvoke;
 import javax.interceptor.Interceptor;
 import javax.interceptor.InvocationContext;
@@ -30,10 +32,16 @@ import javax.validation.Validator;
 import javax.validation.executable.ExecutableType;
 import javax.validation.executable.ExecutableValidator;
 import javax.validation.executable.ValidateOnExecution;
+import javax.validation.metadata.ConstructorDescriptor;
 import javax.validation.metadata.MethodDescriptor;
+import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -44,6 +52,7 @@ import java.util.concurrent.CopyOnWriteA
 public class BValInterceptor {
     private Collection<ExecutableType> classConfiguration = null;
     private final Map<Method, Boolean> methodConfiguration = new ConcurrentHashMap<Method, Boolean>();
+    private Boolean constructorValidated = null;
 
     @Inject
     private Validator validator;
@@ -51,22 +60,59 @@ public class BValInterceptor {
     @Inject
     private BValExtension globalConfiguration;
 
+    private ExecutableValidator executableValidator;
+
+    @AroundConstruct // TODO: maybe add it through ASM to be compliant with CDI 1.0 containers using simply this class as a template for the one created with ASM
+    public Object construct(final InvocationContext context) throws Exception {
+        final Constructor constructor = context.getConstructor();
+        final Class<?> targetClass = Proxies.classFor(context.getTarget().getClass());
+        if (!isConstructorValidated(targetClass, constructor)) {
+            return context.proceed();
+        }
+
+        final ConstructorDescriptor constraints = validator.getConstraintsForClass(targetClass).getConstraintsForConstructor(constructor.getParameterTypes());
+        if (constraints == null) {
+            return context.proceed();
+        }
+
+        initExecutableValidator();
+
+        {
+            final Set<ConstraintViolation<?>> violations = executableValidator.validateConstructorParameters(constructor, context.getParameters());
+            if (!violations.isEmpty()) {
+                throw new ConstraintViolationException(violations);
+            }
+        }
+
+        final Object result = context.proceed();
+
+        {
+            final Set<ConstraintViolation<?>> violations = executableValidator.validateConstructorReturnValue(constructor, result);
+            if (!violations.isEmpty()) {
+                throw new ConstraintViolationException(violations);
+            }
+        }
+
+        return result;
+    }
+
     @AroundInvoke
-    public Object around(final InvocationContext context) throws Throwable {
+    public Object invoke(final InvocationContext context) throws Throwable {
         final Method method = context.getMethod();
-        if (!isMethodValidated(Proxies.classFor(context.getTarget().getClass()), method)) {
+        final Class<?> targetClass = Proxies.classFor(context.getTarget().getClass());
+        if (!isMethodValidated(targetClass, method)) {
             return context.proceed();
         }
 
-        final ExecutableValidator ev = validator.forExecutables();
-
-        final MethodDescriptor constraintsForMethod = validator.getConstraintsForClass(Proxies.classFor(method.getDeclaringClass())).getConstraintsForMethod(method.getName(), method.getParameterTypes());
+        final MethodDescriptor constraintsForMethod = validator.getConstraintsForClass(targetClass).getConstraintsForMethod(method.getName(), method.getParameterTypes());
         if (constraintsForMethod == null) {
             return context.proceed();
         }
 
+        initExecutableValidator();
+
         {
-            final Set<ConstraintViolation<Object>> violations = ev.validateParameters(context.getTarget(), method, context.getParameters());
+            final Set<ConstraintViolation<Object>> violations = executableValidator.validateParameters(context.getTarget(), method, context.getParameters());
             if (!violations.isEmpty()) {
                 throw new ConstraintViolationException(violations);
             }
@@ -75,7 +121,7 @@ public class BValInterceptor {
         final Object result = context.proceed();
 
         {
-            final Set<ConstraintViolation<Object>> violations = ev.validateReturnValue(context.getTarget(), method, result);
+            final Set<ConstraintViolation<Object>> violations = executableValidator.validateReturnValue(context.getTarget(), method, result);
             if (!violations.isEmpty()) {
                 throw new ConstraintViolationException(violations);
             }
@@ -84,53 +130,72 @@ public class BValInterceptor {
         return result;
     }
 
-    private boolean isMethodValidated(final Class<?> targetClass, final Method method) throws NoSuchMethodException {
-        Boolean methodConfig;// config
-        if (classConfiguration == null) {
-            synchronized (this) {
-                if (classConfiguration == null) {
-                    classConfiguration = new CopyOnWriteArraySet<ExecutableType>();
+    private boolean isConstructorValidated(final Class<?> targetClass, final Constructor<?> constructor) throws NoSuchMethodException {
+        initClassConfig(targetClass);
 
-                    final ValidateOnExecution annotation = targetClass.getAnnotation(ValidateOnExecution.class);
+        if (constructorValidated == null) {
+            synchronized (this) {
+                if (constructorValidated == null) {
+                    final ValidateOnExecution annotation = targetClass.getConstructor(constructor.getParameterTypes()).getAnnotation(ValidateOnExecution.class);
                     if (annotation == null) {
-                        classConfiguration.addAll(globalConfiguration.getGlobalExecutableTypes());
+                        constructorValidated = classConfiguration.contains(ExecutableType.CONSTRUCTORS);
                     } else {
-                        for (final ExecutableType type : annotation.type()) {
-                            if (ExecutableType.IMPLICIT.equals(type)) {
-                                classConfiguration.add(ExecutableType.CONSTRUCTORS);
-                                classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
-                            } else if (ExecutableType.ALL.equals(type)) {
-                                classConfiguration.add(ExecutableType.CONSTRUCTORS);
-                                classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
-                                classConfiguration.add(ExecutableType.GETTER_METHODS);
-                                break;
-                            } else if (!ExecutableType.NONE.equals(type)) {
-                                classConfiguration.add(type);
-                            }
-                        }
+                        final Collection<ExecutableType> types = Arrays.asList(annotation.type());
+                        constructorValidated = types.contains(ExecutableType.CONSTRUCTORS) || types.contains(ExecutableType.IMPLICIT) || types.contains(ExecutableType.ALL);
                     }
                 }
             }
         }
 
-        methodConfig = methodConfiguration.get(method);
+        return constructorValidated;
+    }
+
+    private boolean isMethodValidated(final Class<?> targetClass, final Method method) throws NoSuchMethodException {
+        initClassConfig(targetClass);
+
+        Boolean methodConfig = methodConfiguration.get(method);
         if (methodConfig == null) {
             synchronized (this) {
                 methodConfig = methodConfiguration.get(method);
                 if (methodConfig == null) {
-                    // reuse Proxies to avoid issue with some subclassing libs removing annotations
-                    final ValidateOnExecution annotation = targetClass.getMethod(method.getName(), method.getParameterTypes()).getAnnotation(ValidateOnExecution.class);
-                    if (annotation == null) {
+                    final List<Class<?>> classHierarchy = ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(), targetClass);
+
+                    Class<?> lastClassWithTheMethod = null;
+
+                    // search on method @ValidateOnExecution
+                    Collections.reverse(classHierarchy);
+                    ValidateOnExecution validateOnExecution = null;
+                    for (final Class<?> c : classHierarchy) {
+                        try {
+                            validateOnExecution = c.getDeclaredMethod(method.getName(), method.getParameterTypes()).getAnnotation(ValidateOnExecution.class);
+                            if (lastClassWithTheMethod == null) {
+                                lastClassWithTheMethod = c;
+                            }
+                            if (validateOnExecution != null) {
+                                lastClassWithTheMethod = null;
+                                break;
+                            }
+                        } catch (final Throwable h) {
+                            // no-op
+                        }
+                    }
+
+                    // if not found look in the class declaring the method
+                    if (validateOnExecution == null && lastClassWithTheMethod != null) {
+                        validateOnExecution = lastClassWithTheMethod.getAnnotation(ValidateOnExecution.class);
+                    }
+
+                    if (validateOnExecution == null) {
                         methodConfig = doValidMethod(method, classConfiguration);
                     } else {
                         final Collection<ExecutableType> config = new HashSet<ExecutableType>();
-                        for (final ExecutableType type : annotation.type()) {
+                        for (final ExecutableType type : validateOnExecution.type()) {
                             if (ExecutableType.IMPLICIT.equals(type)) { // on method it just means validate, even on getters
-                                config.add(ExecutableType.CONSTRUCTORS);
                                 config.add(ExecutableType.NON_GETTER_METHODS);
-                                config.add(ExecutableType.GETTER_METHODS);
+                                if (lastClassWithTheMethod == null) {
+                                    config.add(ExecutableType.GETTER_METHODS);
+                                } // else the annotation was not on the method so implicit doesn't mean getters
                             } else if (ExecutableType.ALL.equals(type)) {
-                                config.add(ExecutableType.CONSTRUCTORS);
                                 config.add(ExecutableType.NON_GETTER_METHODS);
                                 config.add(ExecutableType.GETTER_METHODS);
                                 break;
@@ -148,7 +213,46 @@ public class BValInterceptor {
         return methodConfig;
     }
 
-    private boolean doValidMethod(final Method method, final Collection<ExecutableType> config) {
+    private void initClassConfig(Class<?> targetClass) {
+        if (classConfiguration == null) {
+            synchronized (this) {
+                if (classConfiguration == null) {
+                    classConfiguration = new CopyOnWriteArraySet<ExecutableType>();
+
+                    final ValidateOnExecution annotation = targetClass.getAnnotation(ValidateOnExecution.class);
+                    if (annotation == null) {
+                        classConfiguration.addAll(globalConfiguration.getGlobalExecutableTypes());
+                    } else {
+                        for (final ExecutableType type : annotation.type()) {
+                            if (ExecutableType.IMPLICIT.equals(type)) {
+                                classConfiguration.add(ExecutableType.CONSTRUCTORS);
+                                classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
+                            } else if (ExecutableType.ALL.equals(type)) {
+                                classConfiguration.add(ExecutableType.CONSTRUCTORS);
+                                classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
+                                classConfiguration.add(ExecutableType.GETTER_METHODS);
+                                break;
+                            } else if (!ExecutableType.NONE.equals(type)) {
+                                classConfiguration.add(type);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private void initExecutableValidator() {
+        if (executableValidator == null) {
+            synchronized (this) {
+                if (executableValidator == null) {
+                    executableValidator = validator.forExecutables();
+                }
+            }
+        }
+    }
+
+    private static boolean doValidMethod(final Method method, final Collection<ExecutableType> config) {
         final boolean getter = isGetter(method);
         return (!getter && config.contains(ExecutableType.NON_GETTER_METHODS)) || (getter && config.contains(ExecutableType.GETTER_METHODS));
     }

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java Wed Jul 17 11:06:59 2013
@@ -39,6 +39,7 @@ import javax.validation.ConstraintTarget
 import javax.validation.Valid;
 import javax.validation.groups.ConvertGroup;
 import javax.validation.metadata.BeanDescriptor;
+import javax.validation.metadata.ConstraintDescriptor;
 import javax.validation.metadata.ConstructorDescriptor;
 import javax.validation.metadata.ExecutableDescriptor;
 import javax.validation.metadata.GroupConversionDescriptor;
@@ -515,7 +516,7 @@ public class BeanDescriptorImpl extends 
         Class<?> current = getMetaBean().getBeanClass();
         do {
             for (final Method method : current.getDeclaredMethods()) {
-                final boolean getter = method.getName().startsWith("get") && method.getParameterTypes().length == 0;
+                final boolean getter = (method.getName().startsWith("get") || method.getName().startsWith("is")) && method.getParameterTypes().length == 0 && method.getReturnType() != Void.TYPE;
 
                 final MethodDescriptorImpl methodDesc = new MethodDescriptorImpl(getMetaBean(), new Validation[0], method);
                 methodConstraints.put(method, methodDesc);
@@ -537,7 +538,6 @@ public class BeanDescriptorImpl extends 
 
                 ensureNotNullDescriptors(method.getReturnType(), methodDesc);
 
-                // validations, TODO: if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method)) {
                 if (parents != null) {
                     if (parents.size() > 1) {
                         for (final Method parent : parents) {
@@ -763,10 +763,26 @@ public class BeanDescriptorImpl extends 
             paramDesc = new ParameterDescriptorImpl(Class.class.cast(access.getJavaType()), // set from getParameterTypes() so that's a Class<?>
                     validations.getValidations().toArray(new Validation[validations.getValidations().size()]), name);
             paramDesc.setIndex(idx);
-            methodDesc.getParameterDescriptors().add(paramDesc);
+            final List<ParameterDescriptor> parameterDescriptors = methodDesc.getParameterDescriptors();
+            if (!parameterDescriptors.contains(paramDesc)) {
+                parameterDescriptors.add(paramDesc);
+            }
             paramDesc.setCascaded(cascaded);
         } else {
-            paramDesc.getMutableConstraintDescriptors().addAll(validations.getValidations());
+            final List<ConstraintValidation<?>> newValidations = validations.getValidations();
+            for (final ConstraintValidation<?> validation : newValidations) { // don't add it if exactly the same is already here
+                boolean alreadyHere = false;
+                for (final ConstraintDescriptor<?> existing : paramDesc.getMutableConstraintDescriptors()) {
+                    if (existing.getAnnotation().annotationType().equals(validation.getAnnotation().annotationType())) { // TODO: make it a bit finer
+                        alreadyHere = true;
+                        break;
+                    }
+                }
+                if (!alreadyHere) {
+                    paramDesc.getMutableConstraintDescriptors().add(validation);
+                }
+            }
+
             if (cascaded) {
                 paramDesc.setCascaded(true);
             } // else keep previous config

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java Wed Jul 17 11:06:59 2013
@@ -34,7 +34,14 @@ import javax.validation.ValidationExcept
 import javax.validation.metadata.ConstraintDescriptor;
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Description: Adapter between Constraint (JSR303) and Validation (Core)<br/>

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterAccess.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterAccess.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterAccess.java Wed Jul 17 11:06:59 2013
@@ -77,4 +77,19 @@ public class ParameterAccess extends Acc
         return "" + paramIdx;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        final ParameterAccess that = (ParameterAccess) o;
+        return paramIdx == that.paramIdx && paramType.equals(that.paramType);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = paramType.hashCode();
+        result = 31 * result + paramIdx;
+        return result;
+    }
 }

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterDescriptorImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterDescriptorImpl.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterDescriptorImpl.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/ParameterDescriptorImpl.java Wed Jul 17 11:06:59 2013
@@ -21,11 +21,8 @@ import org.apache.bval.jsr303.groups.Gro
 import org.apache.bval.model.MetaBean;
 import org.apache.bval.model.Validation;
 
-import javax.validation.ParameterNameProvider;
 import javax.validation.metadata.GroupConversionDescriptor;
 import javax.validation.metadata.ParameterDescriptor;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 

Modified: bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java (original)
+++ bval/branches/bval-11/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java Wed Jul 17 11:06:59 2013
@@ -38,24 +38,24 @@ public class ClassHelper {
     /**
      * Fill the list with the full class/interface hierarchy of the given class.
      * List is ordered from the most to less specific.
-     * 
+     *
      * @param allClasses
      *            The current list of classes in the hierarchy.
      * @param clazz
-     *            The current class, root of the hierarchy to traverse.
      */
-    static public void fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?> clazz) {
+    static public List<Class<?>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?> clazz) {
         if (clazz == null || clazz == Object.class || clazz == Serializable.class) {
-            return;
+            return allClasses;
         }
         if (allClasses.contains(clazz)) {
-            return;
+            return allClasses;
         }
         allClasses.add(clazz);
         fillFullClassHierarchyAsList(allClasses, clazz.getSuperclass());
         for (Class<?> subClass : clazz.getInterfaces()) {
             fillFullClassHierarchyAsList(allClasses, subClass);
         }
+        return allClasses;
     }
 
     /**

Modified: bval/branches/bval-11/bval-tck11/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck11/pom.xml?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-tck11/pom.xml (original)
+++ bval/branches/bval-11/bval-tck11/pom.xml Wed Jul 17 11:06:59 2013
@@ -55,16 +55,24 @@ under the License.
         </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
-            <version>1.0</version>
+            <artifactId>geronimo-jcdi_1.1_spec</artifactId>
+            <version>1.0-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
+        <!-- TODO: get spec v1.2 to replace JBoss spec jar
         <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.jboss.spec.javax.interceptor</groupId>
+        <artifactId>jboss-interceptors-api_1.2_spec</artifactId>
+        <version>1.0.0.Alpha1</version>
+        <scope>provided</scope>
+      </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-ejb_3.1_spec</artifactId>
@@ -108,7 +116,7 @@ under the License.
         </dependency>
         <dependency>
             <groupId>org.apache.openwebbeans</groupId>
-            <artifactId>openwebbeans-impl</artifactId>
+            <artifactId>openwebbeans-cdi11</artifactId>
             <version>${owb.version}</version>
             <scope>test</scope>
         </dependency>

Modified: bval/branches/bval-11/bval-tck11/work-tests-suite.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-tck11/work-tests-suite.xml?rev=1504074&r1=1504073&r2=1504074&view=diff
==============================================================================
--- bval/branches/bval-11/bval-tck11/work-tests-suite.xml (original)
+++ bval/branches/bval-11/bval-tck11/work-tests-suite.xml Wed Jul 17 11:06:59 2013
@@ -21,10 +21,9 @@ think to add -Dvalidation.provider=org.a
 <suite name="tmp" verbose="1">
   <test name="tmp">
     <classes>
-      <class
-        name="org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.global.ExecutableValidationBasedOnGlobalConfigurationTest">
+      <class name="org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.ExecutableValidationTest">
         <methods>
-
+          <include name="testConstructorValidationInvokesParameterAndReturnValueValidationUsingDefaultGroup" />
         </methods>
       </class>
     </classes>