You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2012/10/05 09:52:58 UTC

svn commit: r1394399 - in /bval/sandbox/bval-jsr303-dynamic: ./ extval-shared-tests/ extval-shared/ extval12-tests/ extval12/ extval20-tests/ extval20/ provider/ provider/src/main/java/org/apache/bval/jsr303/dynamic/

Author: mbenson
Date: Fri Oct  5 07:52:57 2012
New Revision: 1394399

URL: http://svn.apache.org/viewvc?rev=1394399&view=rev
Log:
upgrade to BVal 0.6-SNAPSHOT, including also moving to jul

Modified:
    bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml
    bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml
    bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml
    bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml
    bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml
    bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml
    bval/sandbox/bval-jsr303-dynamic/pom.xml
    bval/sandbox/bval-jsr303-dynamic/provider/pom.xml
    bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
    bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java
    bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
    bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java

Modified: bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.bval</groupId>
     <artifactId>bval-jsr303-dynamic</artifactId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval-shared-tests</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval-shared-tests</name>

Modified: bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.bval</groupId>
     <artifactId>bval-jsr303-dynamic</artifactId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval-shared</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval-shared</name>

Modified: bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.bval</groupId>
     <artifactId>bval-jsr303-dynamic</artifactId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval12-tests</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval12-tests</name>

Modified: bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>bval-jsr303-dynamic</artifactId>
     <groupId>org.apache.bval</groupId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval12</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval12</name>

Modified: bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.bval</groupId>
     <artifactId>bval-jsr303-dynamic</artifactId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval20-tests</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval20-tests</name>

Modified: bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml Fri Oct  5 07:52:57 2012
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>bval-jsr303-dynamic</artifactId>
     <groupId>org.apache.bval</groupId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic-extval20</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic-extval20</name>

Modified: bval/sandbox/bval-jsr303-dynamic/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/pom.xml Fri Oct  5 07:52:57 2012
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bval-parent</artifactId>
     <groupId>org.apache.bval</groupId>
-    <version>0.4-incubating-SNAPSHOT</version>
+    <version>0.6-SNAPSHOT</version>
   </parent>
   <artifactId>bval-jsr303-dynamic</artifactId>
   <name>Apache BVal :: bval-jsr303-dynamic</name>

Modified: bval/sandbox/bval-jsr303-dynamic/provider/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/pom.xml Fri Oct  5 07:52:57 2012
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.bval</groupId>
         <artifactId>bval-jsr303-dynamic</artifactId>
-        <version>0.4-incubating-SNAPSHOT</version>
+        <version>0.6-SNAPSHOT</version>
     </parent>
 
     <artifactId>bval-jsr303-dynamic-provider</artifactId>
@@ -55,16 +55,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jcl-over-slf4j</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-proxy2-stub</artifactId>
             <optional>true</optional>

Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java Fri Oct  5 07:52:57 2012
@@ -33,6 +33,8 @@ import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.validation.Path;
 import javax.validation.Valid;
@@ -60,8 +62,6 @@ import org.apache.commons.lang3.ArrayUti
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.reflect.TypeUtils;
 import org.apache.commons.lang3.tuple.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * {@link DynamicMetaGraphManager} implementation.
@@ -500,7 +500,7 @@ final class DynamicMetaGraphManagerImpl 
 
     }
 
-    private final Logger log = LoggerFactory.getLogger(getClass());
+    private final Logger log = Logger.getLogger(getClass().getName());
     private final Timestamped.Context timeContext = new Timestamped.Context();
 
     private final DynamicMetaGraphManager.Interface writable = timeContext
@@ -645,7 +645,7 @@ final class DynamicMetaGraphManagerImpl 
                     if (!path.isRootPath()) {
                         msg.append(": path ").append(path);
                     }
-                    log.error(msg.toString(), e);
+                    log.log(Level.WARNING, msg.toString(), e);
                 }
                 return initial;
             }

Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java Fri Oct  5 07:52:57 2012
@@ -35,7 +35,7 @@ import org.apache.bval.util.AccessStrate
 
 /**
  * {@link ApacheValidatorFactory} extension that creates a {@link DynamicValidatorContext}.
- * 
+ *
  * @version $Rev$ $Date$
  */
 public class DynamicValidatorFactory extends ApacheValidatorFactory {
@@ -44,7 +44,7 @@ public class DynamicValidatorFactory ext
 
         /**
          * Create a new TimestampedMetaBeanBuilder instance.
-         * 
+         *
          * @param idDelegate
          */
         private TimestampedMetaBeanBuilder(MetaBeanBuilder idDelegate, MetaBeanFactory[] builders) {
@@ -95,7 +95,7 @@ public class DynamicValidatorFactory ext
 
     /**
      * Create a new {@link DynamicValidatorFactory} instance.
-     * 
+     *
      * @param configurationState
      */
     public DynamicValidatorFactory(ConfigurationState configurationState) {
@@ -116,10 +116,8 @@ public class DynamicValidatorFactory ext
         cache = ((MetaBeanManager) metaBeanFinder).getCache();
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.bval.jsr303.ApacheValidatorFactory#usingContext()
+    /**
+     * {@inheritDoc}
      */
     @Override
     public DynamicValidatorContext usingContext() {
@@ -147,7 +145,7 @@ public class DynamicValidatorFactory ext
     /**
      * {@inheritDoc}
      */
-    public void addDefaultSequence(Class<?> beanClass, Class<?>[] groupSequence) {
+    public void addDefaultSequence(Class<?> beanClass, Class<?>... groupSequence) {
         super.addDefaultSequence(beanClass, groupSequence);
         invalidateCachedBean(beanClass);
     }

Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java Fri Oct  5 07:52:57 2012
@@ -18,6 +18,8 @@ package org.apache.bval.jsr303.dynamic;
 
 import java.lang.annotation.ElementType;
 import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.validation.ConstraintViolation;
 import javax.validation.ValidationException;
@@ -36,8 +38,6 @@ import org.apache.bval.util.PropertyAcce
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Validate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * {@code Validator} implementation to handle validations in a given context. This extension is only applicable because
@@ -147,7 +147,7 @@ public class NestedValidator extends Dyn
     private Object rootBean;
     private DynamicMetaBean rootMetaBean;
     private String path;
-    private final Logger log = LoggerFactory.getLogger(getClass());
+    private final Logger log = Logger.getLogger(getClass().getName());
     
     /**
      * Create a new NestedValidator instance.
@@ -229,7 +229,7 @@ public class NestedValidator extends Dyn
                 }
                 return result;
             } catch (UnknownPropertyException e) {
-                log.warn("Could not get nested validation metadata, falling back to non-nested metadata instead", e);
+                log.log(Level.WARNING, "Could not get nested validation metadata, falling back to non-nested metadata instead; %s", e);
             }
         }
         return super.createContext(metaBean, object, objectClass, groups);

Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java Fri Oct  5 07:52:57 2012
@@ -22,6 +22,8 @@ import static org.apache.bval.jsr303.Con
 import static org.apache.bval.jsr303.ConstraintAnnotationAttributes.VALUE;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.EnumMap;
 import java.util.Map;
@@ -30,8 +32,8 @@ import javax.validation.Payload;
 import javax.validation.ValidationException;
 
 import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-import org.apache.bval.util.PrivilegedActions;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.reflect.MethodUtils;
 import org.apache.commons.lang3.reflect.TypeUtils;
 import org.apache.commons.proxy2.stub.AnnotationConfigurer;
 import org.apache.commons.proxy2.stub.AnnotationFactory;
@@ -39,8 +41,9 @@ import org.apache.commons.proxy2.stub.St
 
 /**
  * Fluent interface for building constraints.
- * 
- * @version $Rev$ $Date$
+ *
+ * @version $Rev$ $Date: 2010-10-10 10:35:19 -0500 (Sun, 10 Oct 2010)
+ *          $
  */
 public class StubConstraint {
     /**
@@ -49,9 +52,11 @@ public class StubConstraint {
     public static class Builder {
 
         private EnumMap<ConstraintAnnotationAttributes, Object> attributes =
-            new EnumMap<ConstraintAnnotationAttributes, Object>(ConstraintAnnotationAttributes.class);
+            new EnumMap<ConstraintAnnotationAttributes, Object>(
+                ConstraintAnnotationAttributes.class);
 
-        private class Config<A extends Annotation> extends AnnotationConfigurer<A> {
+        private class Config<A extends Annotation> extends
+            AnnotationConfigurer<A> {
             /**
              * Create a new StubConstraint.Builder.Config instance.
              */
@@ -72,7 +77,9 @@ public class StubConstraint {
             protected void configure(final A stub) {
                 for (final Map.Entry<ConstraintAnnotationAttributes, Object> e : StubConstraint.Builder.this.attributes
                     .entrySet()) {
-                    when(getAttribute(e.getKey().getAttributeName(), getStubType(), stub)).thenReturn(e.getValue());
+                    when(
+                        getAttribute(e.getKey().getAttributeName(),
+                            getStubType(), stub)).thenReturn(e.getValue());
                 }
 
             }
@@ -84,10 +91,11 @@ public class StubConstraint {
 
         /**
          * Custom constraint configurer.
-         * 
+         *
          * @param <A>
          */
-        public abstract class CustomConfig<A extends Annotation> extends Config<A> {
+        public abstract class CustomConfig<A extends Annotation> extends
+            Config<A> {
 
             /**
              * {@inheritDoc}
@@ -99,14 +107,14 @@ public class StubConstraint {
 
             /**
              * Perform configuration specific to the constraint type.
-             * 
+             *
              * @param stub
              */
             protected abstract void customConfigure(A stub);
 
             /**
              * Build the constraint annotation.
-             * 
+             *
              * @return A
              */
             public A build() {
@@ -122,7 +130,7 @@ public class StubConstraint {
 
         /**
          * Set the groups that will be set on built constraints.
-         * 
+         *
          * @param groups
          * @return this, per fluent/chained idiom
          */
@@ -133,7 +141,7 @@ public class StubConstraint {
 
         /**
          * Set the message that will be set on built constraints.
-         * 
+         *
          * @param message
          * @return this, per fluent/chained idiom
          */
@@ -144,18 +152,20 @@ public class StubConstraint {
 
         /**
          * Set the payload that will be set on built constraints.
-         * 
+         *
          * @param payload
          * @return this, per fluent/chained idiom
          */
-        public StubConstraint.Builder withPayload(Class<? extends Payload>... payload) {
+        public StubConstraint.Builder withPayload(
+            Class<? extends Payload>... payload) {
             attributes.put(PAYLOAD, payload);
             return this;
         }
 
         /**
-         * Get a ConstraintConfig stub configurer for the specified type, with default or no custom attributes.
-         * 
+         * Get a ConstraintConfig stub configurer for the specified type, with
+         * default or no custom attributes.
+         *
          * @param <A>
          * @param type
          * @return ConstraintConfig<A>
@@ -172,7 +182,7 @@ public class StubConstraint {
 
     /**
      * Get a builder for refining built constraints.
-     * 
+     *
      * @return StubConstraint.Builder instance
      */
     public static StubConstraint.Builder build() {
@@ -181,7 +191,7 @@ public class StubConstraint {
 
     /**
      * Build a default constraint annotation of type
-     * 
+     *
      * @param <A>
      * @param type
      * @return
@@ -192,37 +202,40 @@ public class StubConstraint {
 
     /**
      * Build a multivalued annotation.
-     * 
+     *
      * @param <A>
      * @param <M>
      * @param type
      * @param value
      * @return L
      */
-    public static <A extends Annotation, M extends Annotation> M buildMultiple(final Class<M> type, final A... value) {
+    public static <A extends Annotation, M extends Annotation> M buildMultiple(
+        final Class<M> type, final A... value) {
         /*
          * Here we go
          */
-        if (!PrivilegedActions.run(new PrivilegedAction<Boolean>() {
+        if (!run(new PrivilegedAction<Boolean>() {
 
             public Boolean run() {
                 try {
-                    return TypeUtils.isInstance(value, type.getMethod(VALUE.getAttributeName()).getGenericReturnType());
-                } catch (RuntimeException e) {
-                    throw e;
+                    return TypeUtils.isInstance(value,
+                        type.getMethod(VALUE.getAttributeName())
+                            .getGenericReturnType());
                 } catch (Exception e) {
                     throw new RuntimeException(e);
                 }
             }
         })) {
-            throw new ValidationException(String.format("%2$s does not seem to be a valid value for %1$s()", type,
+            throw new ValidationException(String.format(
+                "%2$s does not seem to be a valid value for %1$s()", type,
                 value));
         }
 
         if (value != null) {
             @SuppressWarnings("unchecked")
             Class<? extends Annotation> constraintType =
-                (Class<? extends Annotation>) value.getClass().getComponentType();
+                (Class<? extends Annotation>) value.getClass()
+                    .getComponentType();
             validateConstraintType(constraintType);
         }
 
@@ -233,38 +246,52 @@ public class StubConstraint {
              */
             @Override
             protected void configure(M stub) {
-                when(getAttribute(VALUE.getAttributeName(), type, stub)).thenReturn(value);
+                when(getAttribute(VALUE.getAttributeName(), type, stub))
+                    .thenReturn(value);
             }
         });
     }
 
-    private static <A extends Annotation> void validateConstraintType(Class<A> type) {
-        for (ConstraintAnnotationAttributes a : ArrayUtils.toArray(MESSAGE, GROUPS, PAYLOAD)) {
+    private static <A extends Annotation> void validateConstraintType(
+        Class<A> type) {
+        for (ConstraintAnnotationAttributes a : ArrayUtils.toArray(MESSAGE,
+            GROUPS, PAYLOAD)) {
             a.validateOn(type);
         }
     }
 
     /**
-     * Reimplement the retrieval of attribute values using an externally specified type; incomplete stubbed annotations
-     * cannot answer {@link Annotation#annotationType()}.
-     * 
+     * Reimplement the retrieval of attribute values using an externally
+     * specified type; incomplete stubbed annotations cannot answer
+     * {@link Annotation#annotationType()}.
+     *
      * @param attributeName
      * @param type
      * @param instance
      * @return Object
      */
-    private static <T> T getAttribute(final String attributeName, final Class<? extends Annotation> type,
-        final Object instance) {
-        return PrivilegedActions.run(new PrivilegedAction<T>() {
-
-            @SuppressWarnings("unchecked")
-            public T run() {
-                try {
-                    return (T) type.getMethod(attributeName).invoke(instance);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
+    private static <T> T getAttribute(final String attributeName,
+        final Class<? extends Annotation> type, final Object instance) {
+        try {
+            final Method m = run(new PrivilegedAction<Method>() {
+                public Method run() {
+                    return MethodUtils.getAccessibleMethod(type, attributeName);
                 }
-            }
-        });
+            });
+            @SuppressWarnings("unchecked")
+            final T result = (T) m.invoke(instance);
+            return result;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static <T> T run(PrivilegedAction<T> action) {
+        if (System.getSecurityManager() != null) {
+            return AccessController.doPrivileged(action);
+        } else {
+            return action.run();
+        }
     }
+
 }