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 2014/10/01 06:37:37 UTC
svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./ bval-core/
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-core/src/main/java/org/apache/bval/util/ref...
Author: mbenson
Date: Wed Oct 1 04:37:36 2014
New Revision: 1628598
URL: http://svn.apache.org/r1628598
Log:
use commons weaver/privilizer
Removed:
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
Modified:
bval/branches/bval-11/bval-core/pom.xml
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
bval/branches/bval-11/bval-jsr/ (props changed)
bval/branches/bval-11/bval-jsr/pom.xml
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
bval/branches/bval-11/bval-tck11/ (props changed)
bval/branches/bval-11/bval-xstream/pom.xml
bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
bval/branches/bval-11/pom.xml
Modified: bval/branches/bval-11/bval-core/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/pom.xml (original)
+++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
@@ -46,6 +46,10 @@
<artifactId>commons-beanutils-core</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-privilizer-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
@@ -118,6 +122,10 @@ build.timestamp=${timestamp}
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-maven-plugin</artifactId>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java Wed Oct 1 04:37:36 2014
@@ -16,13 +16,11 @@
*/
package org.apache.bval;
-import org.apache.bval.util.AccessStrategy;
-
import java.lang.annotation.ElementType;
import java.lang.reflect.Constructor;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+
+import org.apache.bval.util.AccessStrategy;
public class ConstructorAccess extends AccessStrategy {
@@ -30,18 +28,7 @@ public class ConstructorAccess extends A
public ConstructorAccess(final Constructor<?> constructor) {
this.constructor = constructor;
- if (!constructor.isAccessible()) {
- if (System.getSecurityManager() == null) {
- constructor.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- constructor.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(constructor);
}
@Override
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java Wed Oct 1 04:37:36 2014
@@ -17,6 +17,8 @@
package org.apache.bval.model;
import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import java.beans.Introspector;
import java.lang.reflect.Constructor;
@@ -34,6 +36,7 @@ import java.util.TreeMap;
*
* @see MetaProperty
*/
+@Privilizing(@CallTo(Reflection.class))
public class MetaBean extends FeaturesCapable implements Cloneable, Features.Bean {
private static final long serialVersionUID = 2L;
@@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
int i = 0;
Class<?> clazz = beanClass;
while (clazz != null && clazz != Object.class) {
- for (final Field f : Reflection.INSTANCE.getDeclaredFields(clazz)) {
+ for (final Field f : Reflection.getDeclaredFields(clazz)) {
i++;
final String name = f.getName();
if (!fields.containsKey(name)) {
@@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
protected MethodComparator(final Class<?> beanClass) {
Class<?> clazz = beanClass;
while (clazz != null && clazz != Object.class) {
- for (final Method m : Reflection.INSTANCE.getDeclaredMethods(clazz)) {
+ for (final Method m : Reflection.getDeclaredMethods(clazz)) {
methods.put(m, Arrays.hashCode(m.getParameterTypes()));
}
clazz = clazz.getSuperclass();
@@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
private final Map<Constructor<?>, Integer> constructors = new HashMap<Constructor<?>, Integer>();
protected ConstructorComparator(final Class<?> beanClass) {
- for (final Constructor<?> c : Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
+ for (final Constructor<?> c : Reflection.getDeclaredConstructors(beanClass)) {
constructors.put(c, Arrays.hashCode(c.getParameterTypes()));
}
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java Wed Oct 1 04:37:36 2014
@@ -17,8 +17,11 @@
package org.apache.bval.util;
import java.lang.annotation.ElementType;
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Type;
+import org.apache.commons.weaver.privilizer.Privileged;
+
/**
* Description: abstract class to encapsulate different strategies
* to get the value of a Property. This class is designed such that
@@ -55,4 +58,21 @@ public abstract class AccessStrategy {
* @return String
*/
public abstract String getPropertyName();
+
+ /**
+ * Set {@code accessibleObject} as being accessible
+ * @param accessibleObject
+ */
+ protected boolean setAccessible(AccessibleObject accessibleObject) {
+ if (accessibleObject.isAccessible()) {
+ return false;
+ }
+ doSetAccessible(accessibleObject);
+ return true;
+ }
+
+ @Privileged
+ private void doSetAccessible(AccessibleObject accessibleObject) {
+ accessibleObject.setAccessible(true);
+ }
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java Wed Oct 1 04:37:36 2014
@@ -18,18 +18,21 @@
*/
package org.apache.bval.util;
-import org.apache.bval.util.reflection.Reflection;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.StringTokenizer;
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
/**
* This class contains version information for BVal.
* It uses Ant's filter tokens to convert the template into a java
* file with current information.
*/
+@Privilizing(@CallTo(Reflection.class))
public class BValVersion {
/** Project name */
@@ -157,7 +160,7 @@ public class BValVersion {
* {@inheritDoc}
*/
public String toString() {
- StringBuilder buf = new StringBuilder(80 * 40);
+ final StringBuilder buf = new StringBuilder(80 * 40);
appendBanner(buf);
buf.append("\n");
@@ -169,8 +172,7 @@ public class BValVersion {
appendProperty("java.vendor", buf).append("\n\n");
buf.append("java.class.path:\n");
- StringTokenizer tok = new StringTokenizer(
- Reflection.INSTANCE.getProperty("java.class.path"));
+ final StringTokenizer tok = new StringTokenizer(Reflection.getProperty("java.class.path"));
while (tok.hasMoreTokens()) {
buf.append("\t").append(tok.nextToken());
buf.append("\n");
@@ -191,7 +193,6 @@ public class BValVersion {
}
private StringBuilder appendProperty(String prop, StringBuilder buf) {
- return buf.append(prop).append(": ").append(
- Reflection.INSTANCE.getProperty(prop));
+ return buf.append(prop).append(": ").append(Reflection.getProperty(prop));
}
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java Wed Oct 1 04:37:36 2014
@@ -19,8 +19,6 @@ package org.apache.bval.util;
import java.lang.annotation.ElementType;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
/**
* Description: direct field access strategy.<br/>
@@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
*/
public FieldAccess(final Field field) {
this.field = field;
- if (!field.isAccessible()) {
- if (System.getSecurityManager() == null) {
- field.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- field.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(field);
}
/**
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java Wed Oct 1 04:37:36 2014
@@ -16,6 +16,7 @@
*/
package org.apache.bval.util;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import java.lang.annotation.ElementType;
@@ -28,7 +29,7 @@ import java.util.Map;
/**
* {@link AccessStrategy} to get an indexed member of an {@link Iterable} or
* array object.
- */
+ */
public class IndexedAccess extends AccessStrategy {
private static final TypeVariable<?> ITERABLE_TYPE = Iterable.class.getTypeParameters()[0];
@@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
}
if (TypeUtils.isAssignable(containerType, Iterable.class)) {
Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Iterable.class);
- return typeArguments.containsKey(ITERABLE_TYPE) ? typeArguments.get(ITERABLE_TYPE) : Object.class;
+ return ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments, ITERABLE_TYPE), Object.class);
}
return null;
}
- private Type containerType;
- private Integer index;
+ private final Type containerType;
+ private final Integer index;
/**
* Create a new IndexedAccessStrategy instance.
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java Wed Oct 1 04:37:36 2014
@@ -16,6 +16,7 @@
*/
package org.apache.bval.util;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import java.lang.annotation.ElementType;
@@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
public static Type getJavaElementType(Type containerType) {
if (TypeUtils.isAssignable(containerType, Map.class)) {
Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Map.class);
- return typeArguments.containsKey(MAP_TYPEVARS[1]) ? typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
+ return ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments, MAP_TYPEVARS[1]), Object.class);
}
return null;
}
- private Type containerType;
- private Object key;
+ private final Type containerType;
+ private final Object key;
/**
* Create a new KeyedAccess instance.
@@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
if (instance instanceof Map<?, ?>) {
Map<?, ?> map = (Map<?, ?>) instance;
Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Map.class);
- Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
+ Type keyType = TypeUtils.unrollVariables(typeArguments, MAP_TYPEVARS[0]);
if (key == null || keyType == null || TypeUtils.isInstance(key, keyType)) {
return map.get(key);
}
@@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
*/
@Override
public Type getJavaType() {
- Type result = getJavaElementType(containerType);
+ final Type result = getJavaElementType(containerType);
return result == null ? Object.class : result;
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java Wed Oct 1 04:37:36 2014
@@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
/**
* Description: invoke a zero-argument method (getter)<br/>
@@ -47,18 +45,7 @@ public class MethodAccess extends Access
public MethodAccess(String propertyName, final Method method) {
this.method = method;
this.propertyName = propertyName;
- if (!method.isAccessible()) {
- if (System.getSecurityManager() == null) {
- method.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- method.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(method);
}
/**
@@ -69,21 +56,14 @@ public class MethodAccess extends Access
* the method name id not according to the JavaBeans standard.
*/
public static String getPropertyName(Method member) {
- String name = null;
- String methodName = member.getName();
+ final String methodName = member.getName();
if (methodName.startsWith("is")) {
- name = Introspector.decapitalize(methodName.substring(2));
- } /* else if ( methodName.startsWith("has")) {
- name = Introspector.decapitalize( methodName.substring( 3 ) );
- } */
- // setter annotation is NOT supported in the spec
- /* else if (method.getName().startsWith("set") && method.getParameterTypes().length == 1) {
- propName = Introspector.decapitalize(method.getName().substring(3));
- } */
- else if (methodName.startsWith("get")) {
- name = Introspector.decapitalize(methodName.substring(3));
+ return Introspector.decapitalize(methodName.substring(2));
+ }
+ if (methodName.startsWith("get")) {
+ return Introspector.decapitalize(methodName.substring(3));
}
- return name;
+ return null;
}
/**
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java (original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java Wed Oct 1 04:37:36 2014
@@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
-public interface Reflection {
- static final Reflection INSTANCE = ReflectionFactory.newInstance();
+import org.apache.commons.lang3.ClassUtils;
- Class<?> getClass(final ClassLoader classLoader, final String className) throws Exception;
-
- Object getAnnotationValue(final Annotation annotation, final String name) throws IllegalAccessException, InvocationTargetException;
+/**
+ * Security-agnostic "blueprint" class for reflection-related operations.
+ *
+ * @version $Rev$ $Date$
+ */
+public class Reflection {
+
+ private static void setAccessibility(final Field field) {
+ // FIXME 2011-03-27 jw:
+ // - Why not simply call field.setAccessible(true)?
+ // - Fields can not be abstract.
+ if (!Modifier.isPublic(field.getModifiers())
+ || (Modifier.isPublic(field.getModifiers()) && Modifier.isAbstract(field.getModifiers()))) {
+ field.setAccessible(true);
+ }
+ }
- ClassLoader getClassLoader(final Class<?> clazz);
+ public static Class<?> getClass(final ClassLoader classLoader, final String className) throws Exception {
+ return ClassUtils.getClass(classLoader, className, true);
+ }
- String getProperty(final String name);
+ public static Object getAnnotationValue(final Annotation annotation, final String name)
+ throws IllegalAccessException, InvocationTargetException {
+ Method valueMethod;
+ try {
+ valueMethod = annotation.annotationType().getDeclaredMethod(name);
+ } catch (final NoSuchMethodException ex) {
+ // do nothing
+ valueMethod = null;
+ }
+ if (null != valueMethod) {
+ if (!valueMethod.isAccessible()) {
+ valueMethod.setAccessible(true);
+ }
+ return valueMethod.invoke(annotation);
+ }
+ return null;
+ }
- Field getDeclaredField(final Class<?> clazz, final String fieldName);
+ public static ClassLoader getClassLoader(final Class<?> clazz) {
+ final ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if (cl != null) {
+ return cl;
+ }
+ return clazz.getClassLoader();
+ }
- Field[] getDeclaredFields(final Class<?> clazz);
+ public static String getProperty(final String name) {
+ return System.getProperty(name);
+ }
- Constructor<?> getDeclaredConstructor(final Class<?> clazz, final Class<?>... parameters);
+ public static Field getDeclaredField(final Class<?> clazz, final String fieldName) {
+ final Field f;
+ try {
+ f = clazz.getDeclaredField(fieldName);
+ } catch (final NoSuchFieldException e) {
+ return null;
+ }
+ setAccessibility(f);
+ return f;
+ }
- Method getDeclaredMethod(final Class<?> clazz, final String name, final Class<?>... parameters);
+ public static Field[] getDeclaredFields(final Class<?> clazz) {
+ final Field[] fields = clazz.getDeclaredFields();
+ if (fields.length > 0) {
+ for (final Field f : fields) {
+ if (!f.isAccessible()) {
+ f.setAccessible(true);
+ }
+ }
+ }
+ return fields;
+ }
- Method[] getDeclaredMethods(final Class<?> clazz);
+ public static Constructor<?> getDeclaredConstructor(final Class<?> clazz, final Class<?>... parameters) {
+ try {
+ return clazz.getDeclaredConstructor(parameters);
+ } catch (final NoSuchMethodException e) {
+ return null;
+ }
+ }
- Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
+ public static Method getDeclaredMethod(final Class<?> clazz, final String name, final Class<?>... parameters) {
+ try {
+ return clazz.getDeclaredMethod(name, parameters);
+ } catch (final NoSuchMethodException e) {
+ return null;
+ }
+ }
- Method getPublicMethod(final Class<?> clazz, final String methodName);
+ public static Method[] getDeclaredMethods(final Class<?> clazz) {
+ return clazz.getDeclaredMethods();
+ }
- <T> T newInstance(final Class<T> cls);
+ public static Constructor<?>[] getDeclaredConstructors(final Class<?> clazz) {
+ return clazz.getDeclaredConstructors();
+ }
- public static class ReflectionFactory {
- public static Reflection newInstance() {
- if (System.getSecurityManager() != null) {
- return new SecurityManagerReflection();
- }
- return new DefaultReflection();
+ public static Method getPublicMethod(final Class<?> clazz, final String methodName) {
+ try {
+ return clazz.getMethod(methodName);
+ } catch (final NoSuchMethodException e) {
+ return null;
}
+ }
- private ReflectionFactory() {
- // no-op
+ public static <T> T newInstance(final Class<T> cls) {
+ try {
+ return cls.newInstance();
+ } catch (final Exception ex) {
+ throw new RuntimeException("Cannot instantiate : " + cls, ex);
}
}
+
}
Propchange: bval/branches/bval-11/bval-jsr/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Oct 1 04:37:36 2014
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target
Propchange: bval/branches/bval-11/bval-jsr/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Oct 1 04:37:36 2014
@@ -0,0 +1,2 @@
+/bval/trunk/bval-jsr303:1598345
+/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
Modified: bval/branches/bval-11/bval-jsr/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/pom.xml (original)
+++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
@@ -79,13 +79,73 @@
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-testResources</id>
+ <phase />
+ <goals>
+ <goal>testResources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter-testResources</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <mkdir dir="${project.build.testOutputDirectory}" />
+ <condition property="slash" value="/" else="">
+ <os family="windows" />
+ </condition>
+ <copy todir="${project.build.testOutputDirectory}" overwrite="true">
+ <fileset dir="${project.basedir}/src/test/resources" excludes="java.policy" />
+ </copy>
+ <copy todir="${project.build.testOutputDirectory}" overwrite="true">
+ <fileset file="${project.basedir}/src/test/resources/java.policy" />
+ <filterchain>
+ <expandproperties />
+ <!-- append extra slash on windows only -->
+ <replacestring from="file://" to="file://${slash}" />
+ <replacestring from="${file.separator}" to="/" />
+ <!-- preserve system-specific file separator -->
+ <expandproperties>
+ <propertyset>
+ <propertyref prefix="project." />
+ <globmapper from="*" to="preserve.*" />
+ </propertyset>
+ </expandproperties>
+ </filterchain>
+ </copy>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.9.3</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
</includes>
- <argLine>-Djava.security.manager -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
+ <argLine>-Djava.security.manager -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
</configuration>
</plugin>
</plugins>
@@ -103,6 +163,10 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-privilizer-api</artifactId>
+ </dependency>
<!-- optional dependencies -->
<dependency>
<groupId>org.apache.bval</groupId>
@@ -235,6 +299,10 @@
</includes>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-maven-plugin</artifactId>
+ </plugin>
</plugins>
</build>
</project>
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java Wed Oct 1 04:37:36 2014
@@ -18,27 +18,9 @@
*/
package org.apache.bval.jsr;
-import org.apache.bval.jsr.groups.GroupsComputer;
-import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintDeclarationException;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.ConstraintTarget;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.ReportAsSingleViolation;
-import javax.validation.constraintvalidation.SupportedValidationTarget;
-import javax.validation.constraintvalidation.ValidationTarget;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -50,6 +32,24 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.validation.Constraint;
+import javax.validation.ConstraintDeclarationException;
+import javax.validation.ConstraintDefinitionException;
+import javax.validation.ConstraintTarget;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.OverridesAttribute;
+import javax.validation.Payload;
+import javax.validation.ReportAsSingleViolation;
+import javax.validation.constraintvalidation.SupportedValidationTarget;
+import javax.validation.constraintvalidation.ValidationTarget;
+
+import org.apache.bval.jsr.groups.GroupsComputer;
+import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
+import org.apache.bval.util.AccessStrategy;
+import org.apache.commons.lang3.reflect.TypeUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
+
/**
* Description: helper class that builds a {@link ConstraintValidation} or its
* composite constraint validations by parsing the jsr-annotations and
@@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
}
/** build attributes, payload, groups from 'annotation' */
+ @Privileged
private void buildFromAnnotation() {
- if (constraintValidation.getAnnotation() != null) {
- if (System.getSecurityManager() == null) {
- doBuildFromAnnotations();
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- doBuildFromAnnotations();
- return null;
- }
- });
- }
+ if (constraintValidation.getAnnotation() == null) {
+ return;
}
- }
-
- private void doBuildFromAnnotations() {
final Class<? extends Annotation> annotationType = constraintValidation.getAnnotation().annotationType();
boolean foundPayload = false;
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java Wed Oct 1 04:37:36 2014
@@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
import org.apache.bval.util.AccessStrategy;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
@@ -32,6 +34,7 @@ import javax.validation.constraintvalida
import javax.validation.constraintvalidation.ValidationTarget;
import javax.validation.groups.ConvertGroup;
import javax.validation.groups.Default;
+
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.InvocationTargetException;
@@ -44,6 +47,7 @@ import java.util.Set;
* annotations, including composed constraints and the resolution of
* {@link ConstraintValidator} implementations.
*/
+@Privilizing(@CallTo(Reflection.class))
public final class AnnotationProcessor {
/** {@link ApacheFactoryContext} used */
private final ApacheFactoryContext factoryContext;
@@ -142,7 +146,8 @@ public final class AnnotationProcessor {
* annotated by @Constraint) whose value element has a return type of an
* array of constraint annotations in a special way.
*/
- final Object result = Reflection.INSTANCE.getAnnotationValue(annotation, ConstraintAnnotationAttributes.VALUE.getAttributeName());
+ final Object result =
+ Reflection.getAnnotationValue(annotation, ConstraintAnnotationAttributes.VALUE.getAttributeName());
if (result instanceof Annotation[]) {
boolean changed = false;
for (final Annotation each : (Annotation[]) result) {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java Wed Oct 1 04:37:36 2014
@@ -18,6 +18,18 @@
*/
package org.apache.bval.jsr;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.MessageInterpolator;
+import javax.validation.ParameterNameProvider;
+import javax.validation.TraversableResolver;
+import javax.validation.ValidationException;
+import javax.validation.Validator;
+import javax.validation.ValidatorContext;
+
import org.apache.bval.IntrospectorMetaBeanFactory;
import org.apache.bval.MetaBeanBuilder;
import org.apache.bval.MetaBeanFactory;
@@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
import org.apache.bval.xml.XMLMetaBeanManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.ParameterNameProvider;
-import javax.validation.TraversableResolver;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import javax.validation.ValidatorContext;
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.commons.weaver.privilizer.Privileged;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
/**
* Description: Represents the context that is used to create
* <code>ClassValidator</code> instances.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ApacheFactoryContext implements ValidatorContext {
private final ApacheValidatorFactory factory;
private final MetaBeanFinder metaBeanFinder;
@@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
return new MetaBeanManager(new MetaBeanBuilder(builders.toArray(new MetaBeanFactory[builders.size()])));
}
+ @Privileged
private <F extends MetaBeanFactory> F createMetaBeanFactory(final Class<F> cls) {
- if (System.getSecurityManager() == null) {
- return doCreateMetaBeanFactory(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<F>() {
- public F run() {
- return doCreateMetaBeanFactory(cls);
- }
- });
- }
-
- private <F extends MetaBeanFactory> F doCreateMetaBeanFactory(final Class<F> cls) {
try {
Constructor<F> c = ConstructorUtils.getMatchingAccessibleConstructor(cls, ApacheFactoryContext.this.getClass());
if (c != null) {
@@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
private Class<?> loadClass(final String className) {
try {
- return Class.forName(className, true, Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
+ return Class.forName(className, true, Reflection.getClassLoader(ApacheFactoryContext.class));
} catch (ClassNotFoundException ex) {
throw new ValidationException("Unable to load class: " + className, ex);
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java Wed Oct 1 04:37:36 2014
@@ -18,16 +18,15 @@
*/
package org.apache.bval.jsr;
-import org.apache.commons.lang3.ClassUtils;
-
import javax.validation.Configuration;
import javax.validation.ValidationException;
import javax.validation.ValidatorFactory;
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ConfigurationState;
import javax.validation.spi.ValidationProvider;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
/**
* Description: Implementation of {@link ValidationProvider} for jsr
@@ -98,15 +97,10 @@ public class ApacheValidationProvider im
// No privileges should be required to access the constructor,
// because the classloader of ApacheValidationProvider will always
// be an ancestor of the loader of validatorFactoryClass.
- return (System.getSecurityManager() == null)
- ? instantiateValidatorFactory(validatorFactoryClass, configuration) : AccessController
- .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return instantiateValidatorFactory(validatorFactoryClass, configuration);
- }
- });
+ return instantiateValidatorFactory(validatorFactoryClass, configuration);
}
+ @Privileged
private static ValidatorFactory instantiateValidatorFactory(
final Class<? extends ValidatorFactory> validatorFactoryClass, final ConfigurationState configuration) {
try {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java Wed Oct 1 04:37:36 2014
@@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
* class is presumed have a constructor that accepts a single
* {@link ConfigurationState} argument.
*/
- String VALIDATOR_FACTORY_CLASSNAME = "apache.bval.validator-factory-classname";
+ String VALIDATOR_FACTORY_CLASSNAME = "apache.bval.validator-factory-classname";
/**
* Specifies the names, delimited by whitespace, of
@@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
* <li>default (no-args) constructor</li>
* </ol>
*/
- String METABEAN_FACTORY_CLASSNAMES = "apache.bval.metabean-factory-classnames";
+ String METABEAN_FACTORY_CLASSNAMES = "apache.bval.metabean-factory-classnames";
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java Wed Oct 1 04:37:36 2014
@@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.ConstraintValidatorFactory;
import javax.validation.MessageInterpolator;
@@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.spi.ConfigurationState;
+
import java.io.Closeable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Modifier;
@@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
* validators.<br/>
* This instance is not thread-safe.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ApacheValidatorFactory implements ValidatorFactory, Cloneable {
private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new ConstraintDefaults();
@@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
private <T> T newInstance(final Class<T> cls) {
try {
- return Reflection.INSTANCE.newInstance(cls);
+ return Reflection.newInstance(cls);
} catch (final RuntimeException e) {
throw new ValidationException(e.getCause());
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java Wed Oct 1 04:37:36 2014
@@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
import org.apache.bval.util.AccessStrategy;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintDeclarationException;
@@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
import javax.validation.metadata.ParameterDescriptor;
import javax.validation.metadata.PropertyDescriptor;
import javax.validation.metadata.ReturnValueDescriptor;
+
import java.beans.Introspector;
import java.lang.annotation.Annotation;
import java.lang.reflect.AccessibleObject;
@@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
/**
* Description: Implements {@link BeanDescriptor}.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class BeanDescriptorImpl extends ElementDescriptorImpl implements BeanDescriptor {
private static final CopyOnWriteArraySet<ConstraintValidation<?>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
private static final Validation[] EMPTY_VALIDATION = new Validation[0];
@@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
Class<?> current = prop.getParentMetaBean().getBeanClass();
while (current != null && current != Object.class && (!methodFound || !fieldFound)) {
if (!fieldFound) {
- final Field field = Reflection.INSTANCE.getDeclaredField(current, prop.getName());
+ final Field field = Reflection.getDeclaredField(current, prop.getName());
if (field != null) {
processConvertGroup(edesc, field);
fieldFound = true;
@@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
if (!methodFound) {
final String name = Character.toUpperCase(prop.getName().charAt(0)) + prop.getName().substring(1);
- Method m = Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
+ Method m = Reflection.getDeclaredMethod(current, "get" + name);
if (m != null) {
processConvertGroup(edesc, m);
methodFound = true;
} else {
- m = Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
+ m = Reflection.getDeclaredMethod(current, "is" + name);
if (m != null) {
processConvertGroup(edesc, m);
methodFound = true;
@@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
}
private void buildConstructorConstraints() throws InvocationTargetException, IllegalAccessException {
- for (final Constructor<?> cons : Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass())) {
+ for (final Constructor<?> cons : Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
final ConstructorDescriptorImpl consDesc = new ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
contructorConstraints.put(Arrays.toString(cons.getParameterTypes()), consDesc);
@@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
final List<Class<?>> classHierarchy = ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(), current);
classHierarchy.remove(current);
- for (final Method method : Reflection.INSTANCE.getDeclaredMethods(current)) {
+ for (final Method method : Reflection.getDeclaredMethods(current)) {
if (Modifier.isStatic(method.getModifiers()) || method.isSynthetic()) {
continue;
}
@@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
final Collection<Method> parents = new ArrayList<Method>();
for (final Class<?> clazz : classHierarchy) {
- final Method overriden = Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(), method.getParameterTypes());
- if (overriden != null) {
- parents.add(overriden);
- processMethod(overriden, methodDesc);
+ final Method overridden = Reflection.getDeclaredMethod(clazz, method.getName(), method.getParameterTypes());
+ if (overridden != null) {
+ parents.add(overridden);
+ processMethod(overridden, methodDesc);
}
}
@@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
final Class<?>[] interfaces = method.getDeclaringClass().getInterfaces();
final Collection<Method> itfWithThisMethod = new ArrayList<Method>();
for (final Class<?> i : interfaces) {
- final Method m = Reflection.INSTANCE.getDeclaredMethod(i, method.getName(), method.getParameterTypes());
+ final Method m = Reflection.getDeclaredMethod(i, method.getName(), method.getParameterTypes());
if (m != null) {
itfWithThisMethod.add(m);
}
@@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
returnValid++;
}
for (final Class<?> clazz : classHierarchy) {
- final Method overriden = Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(), method.getParameterTypes());
- if (overriden != null) {
- if (overriden.getAnnotation(Valid.class) != null) {
+ final Method overridden = Reflection.getDeclaredMethod(clazz, method.getName(), method.getParameterTypes());
+ if (overridden != null) {
+ if (overridden.getAnnotation(Valid.class) != null) {
returnValid++;
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java Wed Oct 1 04:37:36 2014
@@ -18,6 +18,33 @@
*/
package org.apache.bval.jsr;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+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 javax.validation.ConstraintDeclarationException;
+import javax.validation.ConstraintDefinitionException;
+import javax.validation.ConstraintTarget;
+import javax.validation.ConstraintViolation;
+import javax.validation.ElementKind;
+import javax.validation.ValidationException;
+import javax.validation.executable.ExecutableValidator;
+import javax.validation.groups.Default;
+import javax.validation.metadata.BeanDescriptor;
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.metadata.ElementDescriptor;
+import javax.validation.metadata.ParameterDescriptor;
+import javax.validation.metadata.PropertyDescriptor;
+
import org.apache.bval.DynamicMetaBean;
import org.apache.bval.MetaBeanFinder;
import org.apache.bval.jsr.groups.Group;
@@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
-
-import javax.validation.ConstraintDeclarationException;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.ConstraintTarget;
-import javax.validation.ConstraintViolation;
-import javax.validation.ElementKind;
-import javax.validation.ValidationException;
-import javax.validation.executable.ExecutableValidator;
-import javax.validation.groups.Default;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import javax.validation.metadata.ParameterDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-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 org.apache.commons.weaver.privilizer.Privileged;
// TODO: centralize treatMapsLikeBeans
@@ -312,18 +312,8 @@ public class ClassValidator implements C
return this;
}
+ @Privileged
private <T> T newInstance(final Class<T> cls) {
- if (System.getSecurityManager() == null) {
- return doNewInstance(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- return doNewInstance(cls);
- }
- });
- }
-
- private <T> T doNewInstance(final Class<T> cls) {
try {
Constructor<T> cons = cls.getConstructor(ApacheFactoryContext.class);
if (!cons.isAccessible()) {
@@ -399,6 +389,7 @@ public class ClassValidator implements C
// For each owner in the hierarchy
for (final Class<?> owner : classHierarchy) {
+
context.setCurrentOwner(owner);
int numViolations = result.violationsSize();
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java Wed Oct 1 04:37:36 2014
@@ -18,11 +18,16 @@
*/
package org.apache.bval.jsr;
-import org.apache.bval.cdi.BValExtension;
-import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
-import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
-import org.apache.bval.jsr.util.IOs;
-import org.apache.bval.jsr.xml.ValidationParser;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.validation.BootstrapConfiguration;
import javax.validation.ConstraintValidatorFactory;
@@ -36,18 +41,13 @@ import javax.validation.executable.Execu
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ConfigurationState;
import javax.validation.spi.ValidationProvider;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.bval.cdi.BValExtension;
+import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
+import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
+import org.apache.bval.jsr.util.IOs;
+import org.apache.bval.jsr.xml.ValidationParser;
+import org.apache.commons.weaver.privilizer.Privileged;
/**
* Description: used to configure apache-validation for jsr.
@@ -98,7 +98,7 @@ public class ConfigurationImpl implement
protected Collection<ExecutableType> executableValidation;
- private Collection<BValExtension.Releasable> releasables = new CopyOnWriteArrayList<BValExtension.Releasable>();
+ private Collection<BValExtension.Releasable<?>> releasables = new CopyOnWriteArrayList<BValExtension.Releasable<?>>();
private boolean beforeCdi = false;
@@ -305,27 +305,18 @@ public class ConfigurationImpl implement
* @throws ValidationException if the ValidatorFactory cannot be built
*/
public ValidatorFactory buildValidatorFactory() {
- if (System.getSecurityManager() == null) {
- return doPrivBuildValidatorFactory(this);
- }
- return AccessController.doPrivileged(new PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return doPrivBuildValidatorFactory(ConfigurationImpl.this);
- }
- });
+ return doBuildValidatorFactory();
}
- public ValidatorFactory doPrivBuildValidatorFactory(final ConfigurationImpl impl) {
+ @Privileged
+ private ValidatorFactory doBuildValidatorFactory() {
prepare();
parser.ensureValidatorFactoryCanBeBuilt();
- if (provider != null) {
- return provider.buildValidatorFactory(impl);
- } else {
- return findProvider().buildValidatorFactory(impl);
- }
+ final ValidationProvider<?> useProvider = provider == null ? findProvider() : provider;
+ return useProvider.buildValidatorFactory(this);
}
- public ConfigurationImpl prepare() {
+ private ConfigurationImpl prepare() {
if (prepared) {
return this;
}
@@ -466,38 +457,19 @@ public class ConfigurationImpl implement
};
}
+ @Privileged
private <T> T newInstance(final Class<T> cls) {
- if (System.getSecurityManager() == null) {
- return createInstance(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- return createInstance(cls);
- }
- });
- }
-
- private <T> T createInstance(final Class<T> cls) {
try {
final BValExtension.Releasable<T> releasable = BValExtension.inject(cls);
releasables.add(releasable);
return releasable.getInstance();
} catch (final Exception e) {
- try {
- return cls.newInstance();
- } catch (final InstantiationException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- } catch (final IllegalAccessException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- }
} catch (final NoClassDefFoundError error) {
- try {
- return cls.newInstance();
- } catch (final InstantiationException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- } catch (final IllegalAccessException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- }
+ }
+ try {
+ return cls.newInstance();
+ } catch (final Exception e) {
+ throw new ValidationException(e.getMessage(), e);
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java Wed Oct 1 04:37:36 2014
@@ -18,15 +18,17 @@ package org.apache.bval.jsr;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.reflect.TypeUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintTarget;
import javax.validation.Payload;
+
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
/**
* "message"
*/
- MESSAGE(false, "message"),
+ MESSAGE("message"),
/**
* "groups"
*/
- GROUPS(false, "groups"),
+ GROUPS("groups"),
/**
* "payload"
*/
- PAYLOAD(false, "payload"),
+ PAYLOAD("payload"),
/**
* "validationAppliesTo"
*/
- VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
+ VALIDATION_APPLIES_TO("validationAppliesTo"),
/**
* "value" for multi-valued constraints
*/
- VALUE(true, "value");
+ VALUE("value");
@SuppressWarnings("unused")
private static class Types {
@@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
}
private final Type type;
- private final boolean permitNullDefaultValue;
private final String attributeName;
- private ConstraintAnnotationAttributes(final boolean permitNullDefaultValue, final String name) {
- this.permitNullDefaultValue = permitNullDefaultValue;
+ private ConstraintAnnotationAttributes(final String name) {
this.attributeName = name;
try {
this.type = Types.class.getDeclaredField(getAttributeName()).getGenericType();
@@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
public <C extends Annotation> Worker<C> analyze(final Class<C> clazz) {
if (clazz.getName().startsWith("javax.validation.constraint.")) { // cache only APIs classes to avoid memory leaks
+ @SuppressWarnings("unchecked")
Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
if (w == null) {
w = new Worker<C>(clazz);
@@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
throw new RuntimeException("Impossible normally");
}
}
+
+ @Privilizing(@CallTo(Reflection.class))
public class Worker<C extends Annotation> {
public final Method method;
@@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
if (found != null) {
return found;
}
- final Method m = Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
+ final Method m = Reflection.getPublicMethod(constraintType, attributeName);
if (m == null) {
cache.putIfAbsent(attributeName, NULL_METHOD);
return null;
@@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
return method != null && method != NULL_METHOD;
}
- public Object read(final Annotation constraint) {
- if (System.getSecurityManager() == null) {
- return doInvoke(constraint);
- }
- return AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- return doInvoke(constraint);
- }
- });
+ public <T> T read(final Annotation constraint) {
+ @SuppressWarnings("unchecked")
+ final T result = (T) doInvoke(constraint);
+ return result;
}
+ @Privileged
private Object doInvoke(final Annotation constraint) {
try {
return method.invoke(constraint);
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java Wed Oct 1 04:37:36 2014
@@ -18,12 +18,9 @@
*/
package org.apache.bval.jsr;
-import javax.validation.ConstraintValidator;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -32,10 +29,17 @@ import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.validation.ConstraintValidator;
+
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
/**
* Description: Provides access to the default constraints/validator implementation classes built into the framework.
* These are configured in DefaultConstraints.properties.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ConstraintDefaults {
private static final Logger log = Logger.getLogger(ConstraintDefaults.class.getName());
private static final String DEFAULT_CONSTRAINTS =
@@ -101,31 +105,11 @@ public class ConstraintDefaults {
while (tokens.hasMoreTokens()) {
final String eachClassName = tokens.nextToken();
- Class<?> constraintValidatorClass;
- if (System.getSecurityManager() == null) {
- try {
- constraintValidatorClass = Class.forName(eachClassName, true, classloader);
- } catch (final ClassNotFoundException e) {
- log.log(Level.SEVERE, String.format("Cannot find class %s", eachClassName), e);
- constraintValidatorClass = null;
- }
- } else {
- constraintValidatorClass = AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
- public Class<?> run() {
- try {
- return Class.forName(eachClassName, true, classloader);
- } catch (final ClassNotFoundException e) {
- log.log(Level.SEVERE, String.format("Cannot find class %s", eachClassName), e);
- return null;
- }
- }
- });
- }
-
- if (constraintValidatorClass != null) {
- classes.add(constraintValidatorClass);
+ try {
+ classes.add(Reflection.getClass(classloader, eachClassName));
+ } catch (Exception e) {
+ log.log(Level.SEVERE, String.format("Cannot find class %s", eachClassName), e);
}
-
}
loadedConstraints.put((String) entry.getKey(), classes.toArray(new Class[classes.size()]));
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java Wed Oct 1 04:37:36 2014
@@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
}
private <A extends Annotation, T> ConstraintValidator<A, ? super T> getConstraintValidator(A annotation,
- Class<? extends ConstraintValidator<A, ?>>[] constraintClasses, Class<?> owner, AccessStrategy access) {
+ Class<? extends ConstraintValidator<A, ?>>[] constraintClasses, Class<?> owner, AccessStrategy access) {
if (constraintClasses != null && constraintClasses.length > 0) {
Type type = determineTargetedType(owner, access);
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java Wed Oct 1 04:37:36 2014
@@ -19,8 +19,11 @@ package org.apache.bval.jsr;
import org.apache.bval.el.MessageEvaluator;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.MessageInterpolator;
+
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
@@ -37,6 +40,7 @@ import java.util.regex.Pattern;
* into human-readable messages. It uses ResourceBundles to find the messages.
* This class is threadsafe.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class DefaultMessageInterpolator implements MessageInterpolator {
private static final Logger log = Logger.getLogger(DefaultMessageInterpolator.class.getName());
private static final boolean LOG_FINEST = log.isLoggable(Level.FINEST);
@@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
*/
private ResourceBundle getFileBasedResourceBundle(Locale locale) {
ResourceBundle rb = null;
- final ClassLoader classLoader = Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
+ final ClassLoader classLoader = Reflection.getClassLoader(DefaultMessageInterpolator.class);
if (classLoader != null) {
rb = loadBundle(classLoader, locale,
USER_VALIDATION_MESSAGES + " not found by thread local classloader");
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java Wed Oct 1 04:37:36 2014
@@ -17,19 +17,23 @@
package org.apache.bval.jsr;
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.spi.ValidationProvider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
+import javax.validation.ValidationException;
+import javax.validation.ValidationProviderResolver;
+import javax.validation.spi.ValidationProvider;
+
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
+@Privilizing(@CallTo(Reflection.class))
public class DefaultValidationProviderResolver implements ValidationProviderResolver {
//TODO - Spec recommends caching per classloader
@@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
// find all service provider cfgs
Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
while (cfgs.hasMoreElements()) {
- URL url = cfgs.nextElement();
+ final URL url = cfgs.nextElement();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(url.openStream()), 256);
@@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
if (!line.startsWith("#")) {
try {
// try loading the specified class
- final Class<?> provider = cl.loadClass(line);
+ @SuppressWarnings("rawtypes")
+ final Class<? extends ValidationProvider> providerType =
+ cl.loadClass(line).asSubclass(ValidationProvider.class);
// create an instance to return
- final ValidationProvider<?> vp;
- if (System.getSecurityManager() == null) {
- try {
- vp = (ValidationProvider<?>) provider.newInstance();
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + provider, ex);
- }
- } else {
- vp = AccessController.doPrivileged(new PrivilegedAction<ValidationProvider<?>>() {
- public ValidationProvider<?> run() {
- try {
- return (ValidationProvider<?>) provider.newInstance();
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + provider, ex);
- }
- }
- });
- }
- providers.add(vp);
+ providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
} catch (ClassNotFoundException e) {
throw new ValidationException("Failed to load provider " +
@@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
}
line = br.readLine();
}
- br.close();
} catch (IOException e) {
throw new ValidationException("Error trying to read " + url, e);
} finally {
- if (br != null)
+ if (br != null) {
br.close();
+ }
}
}
} catch (IOException e) {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java Wed Oct 1 04:37:36 2014
@@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
import org.apache.bval.util.FieldAccess;
import org.apache.bval.util.MethodAccess;
import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.ConstraintDeclarationException;
import javax.validation.GroupDefinitionException;
import javax.validation.GroupSequence;
import javax.validation.groups.ConvertGroup;
import javax.validation.groups.Default;
+
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
@@ -55,6 +58,7 @@ import java.util.logging.Logger;
* Description: process the class annotations for JSR303 constraint validations to build the MetaBean with information
* from annotations and JSR303 constraint mappings (defined in xml)<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class JsrMetaBeanFactory implements MetaBeanFactory {
/** Shared log instance */
// of dubious utility as it's static :/
@@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
processGroupSequence(beanClass, metabean);
// process class, superclasses and interfaces
- List<Class<?>> classSequence = new ArrayList<Class<?>>();
- ClassHelper.fillFullClassHierarchyAsList(classSequence, beanClass);
+ final List<Class<?>> classSequence =
+ ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(), beanClass);
// start with superclasses and go down the hierarchy so that
// the child classes are processed last to have the chance to
@@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
final Collection<String> missingValid = new ArrayList<String>();
- final Field[] fields = Reflection.INSTANCE.getDeclaredFields(beanClass);
+ final Field[] fields = Reflection.getDeclaredFields(beanClass);
for (final Field field : fields) {
MetaProperty metaProperty = metabean.getProperty(field.getName());
// create a property for those fields for which there is not yet a
@@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
}
}
}
- final Method[] methods = Reflection.INSTANCE.getDeclaredMethods(beanClass);
+ final Method[] methods = Reflection.getDeclaredMethods(beanClass);
for (final Method method : methods) {
if (method.isSynthetic() || method.isBridge()) {
continue;
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java Wed Oct 1 04:37:36 2014
@@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Path;
import javax.validation.TraversableResolver;
+
import java.lang.annotation.ElementType;
import java.util.logging.Level;
import java.util.logging.Logger;
/** @see javax.validation.TraversableResolver */
+@Privilizing(@CallTo(Reflection.class))
public class DefaultTraversableResolver implements TraversableResolver, CachingRelevant {
private static final Logger log = Logger.getLogger(DefaultTraversableResolver.class.getName());
private static final boolean LOG_FINEST = log.isLoggable(Level.FINEST);
@@ -71,9 +75,9 @@ public class DefaultTraversableResolver
/** Tries to load detect and load JPA. */
@SuppressWarnings("unchecked")
private void initJpa() {
- final ClassLoader classLoader = getClassLoader();
+ final ClassLoader classLoader = Reflection.getClassLoader(DefaultTraversableResolver.class);
try {
- Reflection.INSTANCE.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
+ Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
if (LOG_FINEST) {
log.log(Level.FINEST, String.format("Found %s on classpath.", PERSISTENCE_UTIL_CLASSNAME));
}
@@ -101,9 +105,4 @@ public class DefaultTraversableResolver
public boolean needsCaching() {
return jpaTR != null && CachingTraversableResolver.needsCaching(jpaTR);
}
-
- private static ClassLoader getClassLoader()
- {
- return Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
- }
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java (original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java Wed Oct 1 04:37:36 2014
@@ -43,6 +43,7 @@ public class ClassHelper {
* The current list of classes in the hierarchy.
* @param clazz
*/
+ @Deprecated
static public List<Class<?>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?> clazz) {
if (clazz == null || clazz == Object.class || clazz == Serializable.class || clazz == Cloneable.class) {
return allClasses;
@@ -58,26 +59,4 @@ public class ClassHelper {
return allClasses;
}
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className) throws ClassNotFoundException {
- return getClass(className, true);
- }
-
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className, boolean initialize) throws ClassNotFoundException {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if (loader == null)
- loader = ClassHelper.class.getClassLoader();
- return ClassUtils.getClass(loader, className, initialize);
- }
}
Re: Fwd: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Matt Benson <gu...@gmail.com>.
On Sat, Dec 6, 2014 at 12:32 PM, Romain Manni-Bucau
<rm...@gmail.com> wrote:
> Sure, default code shouldn't change. BTW I wonder why these
> regressions were introduced? Any idea?
>
My assumption had been that types to be validated should be public,
but a reread of section 4.1 of the BV1.1 spec shows no such
restriction. The TCK validates private classes and my recent
Reflection/accessible changes did not support these. This has been
fixed.
Additionally, I am having no trouble building with 1.8.0-ea-b124 on
Ubuntu Linux.
Matt
>
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
>
>
> 2014-12-06 19:29 GMT+01:00 Matt Benson <gu...@gmail.com>:
>> Sorry; I ran the old TCK. I'll check on this later. I think that by default
>> we should leave things as we find them. We can consider including a
>> configuration option to skip the unset for efficiency, or just skip it
>> always in environments with no SecurityManager.
>>
>> Matt
>> On Dec 6, 2014 2:11 AM, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
>>
>>> Hi Matt,
>>>
>>> I have 2 questions:
>>> 1) surely obvious but I dont get why you re-set the accessible (if
>>> (mustSet)). While we need it accessible we can keep it set to true no?
>>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
>>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>>>
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau
>>> http://www.tomitribe.com
>>> http://rmannibucau.wordpress.com
>>> https://github.com/rmannibucau
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: <mb...@apache.org>
>>> Date: 2014-10-01 6:37 GMT+02:00
>>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
>>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
>>> To: commits@bval.apache.org
>>>
>>>
>>> Author: mbenson
>>> Date: Wed Oct 1 04:37:36 2014
>>> New Revision: 1628598
>>>
>>> URL: http://svn.apache.org/r1628598
>>> Log:
>>> use commons weaver/privilizer
>>>
>>> Removed:
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
>>> Modified:
>>> bval/branches/bval-11/bval-core/pom.xml
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>>> bval/branches/bval-11/bval-jsr/ (props changed)
>>> bval/branches/bval-11/bval-jsr/pom.xml
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
>>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
>>> bval/branches/bval-11/bval-tck11/ (props changed)
>>> bval/branches/bval-11/bval-xstream/pom.xml
>>>
>>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
>>> bval/branches/bval-11/pom.xml
>>>
>>> Modified: bval/branches/bval-11/bval-core/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> --- bval/branches/bval-11/bval-core/pom.xml (original)
>>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
>>> @@ -46,6 +46,10 @@
>>> <artifactId>commons-beanutils-core</artifactId>
>>> </dependency>
>>> <dependency>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>>> + </dependency>
>>> + <dependency>
>>> <groupId>junit</groupId>
>>> <artifactId>junit</artifactId>
>>> <scope>test</scope>
>>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
>>> </execution>
>>> </executions>
>>> </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>>> + </plugin>
>>> </plugins>
>>> <pluginManagement>
>>> <plugins>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,13 +16,11 @@
>>> */
>>> package org.apache.bval;
>>>
>>> -import org.apache.bval.util.AccessStrategy;
>>> -
>>> import java.lang.annotation.ElementType;
>>> import java.lang.reflect.Constructor;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> +
>>> +import org.apache.bval.util.AccessStrategy;
>>>
>>> public class ConstructorAccess extends AccessStrategy {
>>>
>>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>>>
>>> public ConstructorAccess(final Constructor<?> constructor) {
>>> this.constructor = constructor;
>>> - if (!constructor.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - constructor.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - constructor.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(constructor);
>>> }
>>>
>>> @Override
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -17,6 +17,8 @@
>>> package org.apache.bval.model;
>>>
>>> import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import java.beans.Introspector;
>>> import java.lang.reflect.Constructor;
>>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
>>> *
>>> * @see MetaProperty
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class MetaBean extends FeaturesCapable implements Cloneable,
>>> Features.Bean {
>>> private static final long serialVersionUID = 2L;
>>>
>>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
>>> int i = 0;
>>> Class<?> clazz = beanClass;
>>> while (clazz != null && clazz != Object.class) {
>>> - for (final Field f :
>>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
>>> + for (final Field f : Reflection.getDeclaredFields(clazz))
>>> {
>>> i++;
>>> final String name = f.getName();
>>> if (!fields.containsKey(name)) {
>>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
>>> protected MethodComparator(final Class<?> beanClass) {
>>> Class<?> clazz = beanClass;
>>> while (clazz != null && clazz != Object.class) {
>>> - for (final Method m :
>>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
>>> + for (final Method m :
>>> Reflection.getDeclaredMethods(clazz)) {
>>> methods.put(m,
>>> Arrays.hashCode(m.getParameterTypes()));
>>> }
>>> clazz = clazz.getSuperclass();
>>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
>>> private final Map<Constructor<?>, Integer> constructors = new
>>> HashMap<Constructor<?>, Integer>();
>>>
>>> protected ConstructorComparator(final Class<?> beanClass) {
>>> - for (final Constructor<?> c :
>>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
>>> + for (final Constructor<?> c :
>>> Reflection.getDeclaredConstructors(beanClass)) {
>>> constructors.put(c,
>>> Arrays.hashCode(c.getParameterTypes()));
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -17,8 +17,11 @@
>>> package org.apache.bval.util;
>>>
>>> import java.lang.annotation.ElementType;
>>> +import java.lang.reflect.AccessibleObject;
>>> import java.lang.reflect.Type;
>>>
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +
>>> /**
>>> * Description: abstract class to encapsulate different strategies
>>> * to get the value of a Property. This class is designed such that
>>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
>>> * @return String
>>> */
>>> public abstract String getPropertyName();
>>> +
>>> + /**
>>> + * Set {@code accessibleObject} as being accessible
>>> + * @param accessibleObject
>>> + */
>>> + protected boolean setAccessible(AccessibleObject accessibleObject) {
>>> + if (accessibleObject.isAccessible()) {
>>> + return false;
>>> + }
>>> + doSetAccessible(accessibleObject);
>>> + return true;
>>> + }
>>> +
>>> + @Privileged
>>> + private void doSetAccessible(AccessibleObject accessibleObject) {
>>> + accessibleObject.setAccessible(true);
>>> + }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,18 +18,21 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> -import org.apache.bval.util.reflection.Reflection;
>>> -
>>> import java.io.IOException;
>>> import java.io.InputStream;
>>> import java.util.Properties;
>>> import java.util.StringTokenizer;
>>>
>>> +import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>> +
>>> /**
>>> * This class contains version information for BVal.
>>> * It uses Ant's filter tokens to convert the template into a java
>>> * file with current information.
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class BValVersion {
>>>
>>> /** Project name */
>>> @@ -157,7 +160,7 @@ public class BValVersion {
>>> * {@inheritDoc}
>>> */
>>> public String toString() {
>>> - StringBuilder buf = new StringBuilder(80 * 40);
>>> + final StringBuilder buf = new StringBuilder(80 * 40);
>>> appendBanner(buf);
>>> buf.append("\n");
>>>
>>> @@ -169,8 +172,7 @@ public class BValVersion {
>>> appendProperty("java.vendor", buf).append("\n\n");
>>>
>>> buf.append("java.class.path:\n");
>>> - StringTokenizer tok = new StringTokenizer(
>>> - Reflection.INSTANCE.getProperty("java.class.path"));
>>> + final StringTokenizer tok = new
>>> StringTokenizer(Reflection.getProperty("java.class.path"));
>>> while (tok.hasMoreTokens()) {
>>> buf.append("\t").append(tok.nextToken());
>>> buf.append("\n");
>>> @@ -191,7 +193,6 @@ public class BValVersion {
>>> }
>>>
>>> private StringBuilder appendProperty(String prop, StringBuilder buf) {
>>> - return buf.append(prop).append(": ").append(
>>> - Reflection.INSTANCE.getProperty(prop));
>>> + return buf.append(prop).append(":
>>> ").append(Reflection.getProperty(prop));
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
>>> import java.lang.annotation.ElementType;
>>> import java.lang.reflect.Field;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>>
>>> /**
>>> * Description: direct field access strategy.<br/>
>>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
>>> */
>>> public FieldAccess(final Field field) {
>>> this.field = field;
>>> - if (!field.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - field.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - field.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(field);
>>> }
>>>
>>> /**
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,6 +16,7 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> +import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>>
>>> import java.lang.annotation.ElementType;
>>> @@ -28,7 +29,7 @@ import java.util.Map;
>>> /**
>>> * {@link AccessStrategy} to get an indexed member of an {@link Iterable}
>>> or
>>> * array object.
>>> - */
>>> + */
>>> public class IndexedAccess extends AccessStrategy {
>>> private static final TypeVariable<?> ITERABLE_TYPE =
>>> Iterable.class.getTypeParameters()[0];
>>>
>>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
>>> }
>>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Iterable.class);
>>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
>>> typeArguments.get(ITERABLE_TYPE) : Object.class;
>>> + return
>>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>>> ITERABLE_TYPE), Object.class);
>>> }
>>> return null;
>>> }
>>>
>>> - private Type containerType;
>>> - private Integer index;
>>> + private final Type containerType;
>>> + private final Integer index;
>>>
>>> /**
>>> * Create a new IndexedAccessStrategy instance.
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,6 +16,7 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> +import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>>
>>> import java.lang.annotation.ElementType;
>>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
>>> public static Type getJavaElementType(Type containerType) {
>>> if (TypeUtils.isAssignable(containerType, Map.class)) {
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Map.class);
>>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
>>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
>>> + return
>>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>>> MAP_TYPEVARS[1]), Object.class);
>>> }
>>> return null;
>>> }
>>>
>>> - private Type containerType;
>>> - private Object key;
>>> + private final Type containerType;
>>> + private final Object key;
>>>
>>> /**
>>> * Create a new KeyedAccess instance.
>>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
>>> if (instance instanceof Map<?, ?>) {
>>> Map<?, ?> map = (Map<?, ?>) instance;
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Map.class);
>>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
>>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
>>> MAP_TYPEVARS[0]);
>>> if (key == null || keyType == null ||
>>> TypeUtils.isInstance(key, keyType)) {
>>> return map.get(key);
>>> }
>>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
>>> */
>>> @Override
>>> public Type getJavaType() {
>>> - Type result = getJavaElementType(containerType);
>>> + final Type result = getJavaElementType(containerType);
>>> return result == null ? Object.class : result;
>>> }
>>>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>>
>>> /**
>>> * Description: invoke a zero-argument method (getter)<br/>
>>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
>>> public MethodAccess(String propertyName, final Method method) {
>>> this.method = method;
>>> this.propertyName = propertyName;
>>> - if (!method.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - method.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - method.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(method);
>>> }
>>>
>>> /**
>>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
>>> * the method name id not according to the JavaBeans standard.
>>> */
>>> public static String getPropertyName(Method member) {
>>> - String name = null;
>>> - String methodName = member.getName();
>>> + final String methodName = member.getName();
>>> if (methodName.startsWith("is")) {
>>> - name = Introspector.decapitalize(methodName.substring(2));
>>> - } /* else if ( methodName.startsWith("has")) {
>>> - name = Introspector.decapitalize(
>>> methodName.substring( 3 ) );
>>> - } */
>>> - // setter annotation is NOT supported in the spec
>>> - /* else if (method.getName().startsWith("set") &&
>>> method.getParameterTypes().length == 1) {
>>> - propName =
>>> Introspector.decapitalize(method.getName().substring(3));
>>> - } */
>>> - else if (methodName.startsWith("get")) {
>>> - name = Introspector.decapitalize(methodName.substring(3));
>>> + return Introspector.decapitalize(methodName.substring(2));
>>> + }
>>> + if (methodName.startsWith("get")) {
>>> + return Introspector.decapitalize(methodName.substring(3));
>>> }
>>> - return name;
>>> + return null;
>>> }
>>>
>>> /**
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
>>> import java.lang.reflect.Field;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> +import java.lang.reflect.Modifier;
>>>
>>> -public interface Reflection {
>>> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
>>> +import org.apache.commons.lang3.ClassUtils;
>>>
>>> - Class<?> getClass(final ClassLoader classLoader, final String
>>> className) throws Exception;
>>> -
>>> - Object getAnnotationValue(final Annotation annotation, final
>>> String name) throws IllegalAccessException, InvocationTargetException;
>>> +/**
>>> + * Security-agnostic "blueprint" class for reflection-related operations.
>>> + *
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class Reflection {
>>> +
>>> + private static void setAccessibility(final Field field) {
>>> + // FIXME 2011-03-27 jw:
>>> + // - Why not simply call field.setAccessible(true)?
>>> + // - Fields can not be abstract.
>>> + if (!Modifier.isPublic(field.getModifiers())
>>> + || (Modifier.isPublic(field.getModifiers()) &&
>>> Modifier.isAbstract(field.getModifiers()))) {
>>> + field.setAccessible(true);
>>> + }
>>> + }
>>>
>>> - ClassLoader getClassLoader(final Class<?> clazz);
>>> + public static Class<?> getClass(final ClassLoader classLoader,
>>> final String className) throws Exception {
>>> + return ClassUtils.getClass(classLoader, className, true);
>>> + }
>>>
>>> - String getProperty(final String name);
>>> + public static Object getAnnotationValue(final Annotation
>>> annotation, final String name)
>>> + throws IllegalAccessException, InvocationTargetException {
>>> + Method valueMethod;
>>> + try {
>>> + valueMethod =
>>> annotation.annotationType().getDeclaredMethod(name);
>>> + } catch (final NoSuchMethodException ex) {
>>> + // do nothing
>>> + valueMethod = null;
>>> + }
>>> + if (null != valueMethod) {
>>> + if (!valueMethod.isAccessible()) {
>>> + valueMethod.setAccessible(true);
>>> + }
>>> + return valueMethod.invoke(annotation);
>>> + }
>>> + return null;
>>> + }
>>>
>>> - Field getDeclaredField(final Class<?> clazz, final String fieldName);
>>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
>>> + final ClassLoader cl =
>>> Thread.currentThread().getContextClassLoader();
>>> + if (cl != null) {
>>> + return cl;
>>> + }
>>> + return clazz.getClassLoader();
>>> + }
>>>
>>> - Field[] getDeclaredFields(final Class<?> clazz);
>>> + public static String getProperty(final String name) {
>>> + return System.getProperty(name);
>>> + }
>>>
>>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
>>> Class<?>... parameters);
>>> + public static Field getDeclaredField(final Class<?> clazz, final
>>> String fieldName) {
>>> + final Field f;
>>> + try {
>>> + f = clazz.getDeclaredField(fieldName);
>>> + } catch (final NoSuchFieldException e) {
>>> + return null;
>>> + }
>>> + setAccessibility(f);
>>> + return f;
>>> + }
>>>
>>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
>>> final Class<?>... parameters);
>>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
>>> + final Field[] fields = clazz.getDeclaredFields();
>>> + if (fields.length > 0) {
>>> + for (final Field f : fields) {
>>> + if (!f.isAccessible()) {
>>> + f.setAccessible(true);
>>> + }
>>> + }
>>> + }
>>> + return fields;
>>> + }
>>>
>>> - Method[] getDeclaredMethods(final Class<?> clazz);
>>> + public static Constructor<?> getDeclaredConstructor(final
>>> Class<?> clazz, final Class<?>... parameters) {
>>> + try {
>>> + return clazz.getDeclaredConstructor(parameters);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> + }
>>> + }
>>>
>>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
>>> + public static Method getDeclaredMethod(final Class<?> clazz,
>>> final String name, final Class<?>... parameters) {
>>> + try {
>>> + return clazz.getDeclaredMethod(name, parameters);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> + }
>>> + }
>>>
>>> - Method getPublicMethod(final Class<?> clazz, final String methodName);
>>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
>>> + return clazz.getDeclaredMethods();
>>> + }
>>>
>>> - <T> T newInstance(final Class<T> cls);
>>> + public static Constructor<?>[] getDeclaredConstructors(final
>>> Class<?> clazz) {
>>> + return clazz.getDeclaredConstructors();
>>> + }
>>>
>>> - public static class ReflectionFactory {
>>> - public static Reflection newInstance() {
>>> - if (System.getSecurityManager() != null) {
>>> - return new SecurityManagerReflection();
>>> - }
>>> - return new DefaultReflection();
>>> + public static Method getPublicMethod(final Class<?> clazz, final
>>> String methodName) {
>>> + try {
>>> + return clazz.getMethod(methodName);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> }
>>> + }
>>>
>>> - private ReflectionFactory() {
>>> - // no-op
>>> + public static <T> T newInstance(final Class<T> cls) {
>>> + try {
>>> + return cls.newInstance();
>>> + } catch (final Exception ex) {
>>> + throw new RuntimeException("Cannot instantiate : " + cls, ex);
>>> }
>>> }
>>> +
>>> }
>>>
>>> Propchange: bval/branches/bval-11/bval-jsr/
>>>
>>> ------------------------------------------------------------------------------
>>> --- svn:ignore (added)
>>> +++ svn:ignore Wed Oct 1 04:37:36 2014
>>> @@ -0,0 +1,4 @@
>>> +.classpath
>>> +.project
>>> +.settings
>>> +target
>>>
>>> Propchange: bval/branches/bval-11/bval-jsr/
>>>
>>> ------------------------------------------------------------------------------
>>> --- svn:mergeinfo (added)
>>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
>>> @@ -0,0 +1,2 @@
>>> +/bval/trunk/bval-jsr303:1598345
>>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>>>
>>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
>>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
>>> @@ -79,13 +79,73 @@
>>> <plugins>
>>> <plugin>
>>> <groupId>org.apache.maven.plugins</groupId>
>>> + <artifactId>maven-resources-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> + <id>default-testResources</id>
>>> + <phase />
>>> + <goals>
>>> + <goal>testResources</goal>
>>> + </goals>
>>> + </execution>
>>> + </executions>
>>> + </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.maven.plugins</groupId>
>>> + <artifactId>maven-antrun-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> + <id>filter-testResources</id>
>>> + <phase>process-test-resources</phase>
>>> + <goals>
>>> + <goal>run</goal>
>>> + </goals>
>>> + <configuration>
>>> + <target>
>>> + <mkdir
>>> dir="${project.build.testOutputDirectory}" />
>>> + <condition property="slash"
>>> value="/" else="">
>>> + <os family="windows" />
>>> + </condition>
>>> + <copy
>>> todir="${project.build.testOutputDirectory}" overwrite="true">
>>> + <fileset
>>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
>>> + </copy>
>>> + <copy
>>> todir="${project.build.testOutputDirectory}" overwrite="true">
>>> + <fileset
>>> file="${project.basedir}/src/test/resources/java.policy" />
>>> + <filterchain>
>>> + <expandproperties />
>>> + <!-- append extra
>>> slash on windows only -->
>>> + <replacestring
>>> from="file://" to="file://${slash}" />
>>> + <replacestring
>>> from="${file.separator}" to="/" />
>>> + <!-- preserve
>>> system-specific file separator -->
>>> + <expandproperties>
>>> + <propertyset>
>>> + <propertyref
>>> prefix="project." />
>>> + <globmapper
>>> from="*" to="preserve.*" />
>>> + </propertyset>
>>> + </expandproperties>
>>> + </filterchain>
>>> + </copy>
>>> + </target>
>>> + </configuration>
>>> + </execution>
>>> + </executions>
>>> + <dependencies>
>>> + <dependency>
>>> + <groupId>org.apache.ant</groupId>
>>> + <artifactId>ant</artifactId>
>>> + <version>1.9.3</version>
>>> + </dependency>
>>> + </dependencies>
>>> + </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.maven.plugins</groupId>
>>> <artifactId>maven-surefire-plugin</artifactId>
>>> <configuration>
>>> <includes>
>>> <include>**/*Test.java</include>
>>> <include>**/*TestCase.java</include>
>>> </includes>
>>> - <argLine>-Djava.security.manager
>>>
>>> -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
>>> + <argLine>-Djava.security.manager
>>>
>>> -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
>>> </configuration>
>>> </plugin>
>>> </plugins>
>>> @@ -103,6 +163,10 @@
>>> <groupId>org.apache.commons</groupId>
>>> <artifactId>commons-lang3</artifactId>
>>> </dependency>
>>> + <dependency>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>>> + </dependency>
>>> <!-- optional dependencies -->
>>> <dependency>
>>> <groupId>org.apache.bval</groupId>
>>> @@ -235,6 +299,10 @@
>>> </includes>
>>> </configuration>
>>> </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>>> + </plugin>
>>> </plugins>
>>> </build>
>>> </project>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,27 +18,9 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import org.apache.bval.jsr.groups.GroupsComputer;
>>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>> -import org.apache.bval.util.AccessStrategy;
>>> -import org.apache.commons.lang3.reflect.TypeUtils;
>>> -
>>> -import javax.validation.Constraint;
>>> -import javax.validation.ConstraintDeclarationException;
>>> -import javax.validation.ConstraintDefinitionException;
>>> -import javax.validation.ConstraintTarget;
>>> -import javax.validation.ConstraintValidator;
>>> -import javax.validation.ConstraintValidatorFactory;
>>> -import javax.validation.OverridesAttribute;
>>> -import javax.validation.Payload;
>>> -import javax.validation.ReportAsSingleViolation;
>>> -import javax.validation.constraintvalidation.SupportedValidationTarget;
>>> -import javax.validation.constraintvalidation.ValidationTarget;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> import java.util.Arrays;
>>> import java.util.Collections;
>>> import java.util.HashMap;
>>> @@ -50,6 +32,24 @@ import java.util.Set;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> +import javax.validation.Constraint;
>>> +import javax.validation.ConstraintDeclarationException;
>>> +import javax.validation.ConstraintDefinitionException;
>>> +import javax.validation.ConstraintTarget;
>>> +import javax.validation.ConstraintValidator;
>>> +import javax.validation.ConstraintValidatorFactory;
>>> +import javax.validation.OverridesAttribute;
>>> +import javax.validation.Payload;
>>> +import javax.validation.ReportAsSingleViolation;
>>> +import javax.validation.constraintvalidation.SupportedValidationTarget;
>>> +import javax.validation.constraintvalidation.ValidationTarget;
>>> +
>>> +import org.apache.bval.jsr.groups.GroupsComputer;
>>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>> +import org.apache.bval.util.AccessStrategy;
>>> +import org.apache.commons.lang3.reflect.TypeUtils;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +
>>> /**
>>> * Description: helper class that builds a {@link ConstraintValidation}
>>> or its
>>> * composite constraint validations by parsing the jsr-annotations and
>>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
>>> }
>>>
>>> /** build attributes, payload, groups from 'annotation' */
>>> + @Privileged
>>> private void buildFromAnnotation() {
>>> - if (constraintValidation.getAnnotation() != null) {
>>> - if (System.getSecurityManager() == null) {
>>> - doBuildFromAnnotations();
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Object>() {
>>> - public Object run() {
>>> - doBuildFromAnnotations();
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> + if (constraintValidation.getAnnotation() == null) {
>>> + return;
>>> }
>>> - }
>>> -
>>> - private void doBuildFromAnnotations() {
>>> final Class<? extends Annotation> annotationType =
>>> constraintValidation.getAnnotation().annotationType();
>>>
>>> boolean foundPayload = false;
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
>>> import org.apache.bval.util.AccessStrategy;
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ArrayUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Constraint;
>>> import javax.validation.ConstraintValidator;
>>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
>>> import javax.validation.constraintvalidation.ValidationTarget;
>>> import javax.validation.groups.ConvertGroup;
>>> import javax.validation.groups.Default;
>>> +
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.AnnotatedElement;
>>> import java.lang.reflect.InvocationTargetException;
>>> @@ -44,6 +47,7 @@ import java.util.Set;
>>> * annotations, including composed constraints and the resolution of
>>> * {@link ConstraintValidator} implementations.
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public final class AnnotationProcessor {
>>> /** {@link ApacheFactoryContext} used */
>>> private final ApacheFactoryContext factoryContext;
>>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
>>> * annotated by @Constraint) whose value element has a return
>>> type of an
>>> * array of constraint annotations in a special way.
>>> */
>>> - final Object result =
>>> Reflection.INSTANCE.getAnnotationValue(annotation,
>>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>>> + final Object result =
>>> + Reflection.getAnnotationValue(annotation,
>>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>>> if (result instanceof Annotation[]) {
>>> boolean changed = false;
>>> for (final Annotation each : (Annotation[]) result) {
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,6 +18,18 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> +import java.lang.reflect.Constructor;
>>> +import java.util.ArrayList;
>>> +import java.util.List;
>>> +
>>> +import javax.validation.ConstraintValidatorFactory;
>>> +import javax.validation.MessageInterpolator;
>>> +import javax.validation.ParameterNameProvider;
>>> +import javax.validation.TraversableResolver;
>>> +import javax.validation.ValidationException;
>>> +import javax.validation.Validator;
>>> +import javax.validation.ValidatorContext;
>>> +
>>> import org.apache.bval.IntrospectorMetaBeanFactory;
>>> import org.apache.bval.MetaBeanBuilder;
>>> import org.apache.bval.MetaBeanFactory;
>>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
>>> import org.apache.bval.xml.XMLMetaBeanManager;
>>> import org.apache.commons.lang3.StringUtils;
>>> import org.apache.commons.lang3.reflect.ConstructorUtils;
>>> -
>>> -import javax.validation.ConstraintValidatorFactory;
>>> -import javax.validation.MessageInterpolator;
>>> -import javax.validation.ParameterNameProvider;
>>> -import javax.validation.TraversableResolver;
>>> -import javax.validation.ValidationException;
>>> -import javax.validation.Validator;
>>> -import javax.validation.ValidatorContext;
>>> -import java.lang.reflect.Constructor;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> -import java.util.ArrayList;
>>> -import java.util.List;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> /**
>>> * Description: Represents the context that is used to create
>>> * <code>ClassValidator</code> instances.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class ApacheFactoryContext implements ValidatorContext {
>>> private final ApacheValidatorFactory factory;
>>> private final MetaBeanFinder metaBeanFinder;
>>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
>>> return new MetaBeanManager(new
>>> MetaBeanBuilder(builders.toArray(new
>>> MetaBeanFactory[builders.size()])));
>>> }
>>>
>>> + @Privileged
>>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>>> Class<F> cls) {
>>> - if (System.getSecurityManager() == null) {
>>> - return doCreateMetaBeanFactory(cls);
>>> - }
>>> - return AccessController.doPrivileged(new PrivilegedAction<F>() {
>>> - public F run() {
>>> - return doCreateMetaBeanFactory(cls);
>>> - }
>>> - });
>>> - }
>>> -
>>> - private <F extends MetaBeanFactory> F
>>> doCreateMetaBeanFactory(final Class<F> cls) {
>>> try {
>>> Constructor<F> c =
>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>> ApacheFactoryContext.this.getClass());
>>> if (c != null) {
>>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>>>
>>> private Class<?> loadClass(final String className) {
>>> try {
>>> - return Class.forName(className, true,
>>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
>>> + return Class.forName(className, true,
>>> Reflection.getClassLoader(ApacheFactoryContext.class));
>>> } catch (ClassNotFoundException ex) {
>>> throw new ValidationException("Unable to load class: " +
>>> className, ex);
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,16 +18,15 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import org.apache.commons.lang3.ClassUtils;
>>> -
>>> import javax.validation.Configuration;
>>> import javax.validation.ValidationException;
>>> import javax.validation.ValidatorFactory;
>>> import javax.validation.spi.BootstrapState;
>>> import javax.validation.spi.ConfigurationState;
>>> import javax.validation.spi.ValidationProvider;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> +
>>> +import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>>
>>> /**
>>> * Description: Implementation of {@link ValidationProvider} for jsr
>>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
>>> // No privileges should be required to access the constructor,
>>> // because the classloader of ApacheValidationProvider will always
>>> // be an ancestor of the loader of validatorFactoryClass.
>>> - return (System.getSecurityManager() == null)
>>> - ? instantiateValidatorFactory(validatorFactoryClass,
>>> configuration) : AccessController
>>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
>>> - public ValidatorFactory run() {
>>> - return
>>> instantiateValidatorFactory(validatorFactoryClass, configuration);
>>> - }
>>> - });
>>> + return instantiateValidatorFactory(validatorFactoryClass,
>>> configuration);
>>> }
>>>
>>> + @Privileged
>>> private static ValidatorFactory instantiateValidatorFactory(
>>> final Class<? extends ValidatorFactory>
>>> validatorFactoryClass, final ConfigurationState configuration) {
>>> try {
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
>>> * class is presumed have a constructor that accepts a single
>>> * {@link ConfigurationState} argument.
>>> */
>>> - String VALIDATOR_FACTORY_CLASSNAME =
>>> "apache.bval.validator-factory-classname";
>>> + String VALIDATOR_FACTORY_CLASSNAME =
>>> "apache.bval.validator-factory-classname";
>>>
>>> /**
>>> * Specifies the names, delimited by whitespace, of
>>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
>>> * <li>default (no-args) constructor</li>
>>> * </ol>
>>> */
>>> - String METABEAN_FACTORY_CLASSNAMES =
>>> "apache.bval.metabean-factory-classnames";
>>> + String METABEAN_FACTORY_CLASSNAMES =
>>> "apache.bval.metabean-factory-classnames";
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ArrayUtils;
>>> import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.ConstraintValidatorFactory;
>>> import javax.validation.MessageInterpolator;
>>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
>>> import javax.validation.Validator;
>>> import javax.validation.ValidatorFactory;
>>> import javax.validation.spi.ConfigurationState;
>>> +
>>> import java.io.Closeable;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.Modifier;
>>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
>>> * validators.<br/>
>>> * This instance is not thread-safe.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class ApacheValidatorFactory implements ValidatorFactory,
>>> Cloneable {
>>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
>>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
>>> ConstraintDefaults();
>>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>>>
>>> private <T> T newInstance(final Class<T> cls) {
>>> try {
>>> - return Reflection.INSTANCE.newInstance(cls);
>>> + return Reflection.newInstance(cls);
>>> } catch (final RuntimeException e) {
>>> throw new ValidationException(e.getCause());
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
>>> import org.apache.bval.util.AccessStrategy;
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Constraint;
>>> import javax.validation.ConstraintDeclarationException;
>>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
>>> import javax.validation.metadata.ParameterDescriptor;
>>> import javax.validation.metadata.PropertyDescriptor;
>>> import javax.validation.metadata.ReturnValueDescriptor;
>>> +
>>> import java.beans.Introspector;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.AccessibleObject;
>>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
>>> /**
>>> * Description: Implements {@link BeanDescriptor}.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class BeanDescriptorImpl extends ElementDescriptorImpl
>>> implements BeanDescriptor {
>>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
>>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
>>> private static final Validation[] EMPTY_VALIDATION = new
>>> Validation[0];
>>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
>>> Class<?> current = prop.getParentMetaBean().getBeanClass();
>>> while (current != null && current != Object.class &&
>>> (!methodFound || !fieldFound)) {
>>> if (!fieldFound) {
>>> - final Field field =
>>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
>>> + final Field field =
>>> Reflection.getDeclaredField(current, prop.getName());
>>> if (field != null) {
>>> processConvertGroup(edesc, field);
>>> fieldFound = true;
>>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>>>
>>> if (!methodFound) {
>>> final String name =
>>> Character.toUpperCase(prop.getName().charAt(0)) +
>>> prop.getName().substring(1);
>>> - Method m =
>>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
>>> + Method m = Reflection.getDeclaredMethod(current, "get" +
>>> name);
>>> if (m != null) {
>>> processConvertGroup(edesc, m);
>>> methodFound = true;
>>> } else {
>>> - m =
>>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
>>> + m = Reflection.getDeclaredMethod(current, "is" +
>>> name);
>>> if (m != null) {
>>> processConvertGroup(edesc, m);
>>> methodFound = true;
>>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
>>> }
>>>
>>> private void buildConstructorConstraints() throws
>>> InvocationTargetException, IllegalAccessException {
>>> - for (final Constructor<?> cons :
>>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
>>> {
>>> + for (final Constructor<?> cons :
>>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
>>> final ConstructorDescriptorImpl consDesc = new
>>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>>>
>>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
>>> consDesc);
>>>
>>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
>>> final List<Class<?>> classHierarchy =
>>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
>>> current);
>>> classHierarchy.remove(current);
>>>
>>> - for (final Method method :
>>> Reflection.INSTANCE.getDeclaredMethods(current)) {
>>> + for (final Method method :
>>> Reflection.getDeclaredMethods(current)) {
>>> if (Modifier.isStatic(method.getModifiers()) ||
>>> method.isSynthetic()) {
>>> continue;
>>> }
>>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>>>
>>> final Collection<Method> parents = new
>>> ArrayList<Method>();
>>> for (final Class<?> clazz : classHierarchy) {
>>> - final Method overriden =
>>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> - if (overriden != null) {
>>> - parents.add(overriden);
>>> - processMethod(overriden, methodDesc);
>>> + final Method overridden =
>>> Reflection.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> + if (overridden != null) {
>>> + parents.add(overridden);
>>> + processMethod(overridden, methodDesc);
>>> }
>>> }
>>>
>>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
>>> final Class<?>[] interfaces =
>>> method.getDeclaringClass().getInterfaces();
>>> final Collection<Method> itfWithThisMethod = new
>>> ArrayList<Method>();
>>> for (final Class<?> i : interfaces) {
>>> - final Method m =
>>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
>>> method.getParameterTypes());
>>> + final Method m =
>>> Reflection.getDeclaredMethod(i, method.getName(),
>>> method.getParameterTypes());
>>> if (m != null) {
>>> itfWithThisMethod.add(m);
>>> }
>>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
>>> returnValid++;
>>> }
>>> for (final Class<?> clazz : classHierarchy) {
>>> - final Method overriden =
>>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> - if (overriden != null) {
>>> - if (overriden.getAnnotation(Valid.class) !=
>>> null) {
>>> + final Method overridden =
>>> Reflection.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> + if (overridden != null) {
>>> + if (overridden.getAnnotation(Valid.class)
>>> != null) {
>>> returnValid++;
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,6 +18,33 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> +import java.lang.reflect.Constructor;
>>> +import java.lang.reflect.Member;
>>> +import java.lang.reflect.Method;
>>> +import java.lang.reflect.Modifier;
>>> +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 javax.validation.ConstraintDeclarationException;
>>> +import javax.validation.ConstraintDefinitionException;
>>> +import javax.validation.ConstraintTarget;
>>> +import javax.validation.ConstraintViolation;
>>> +import javax.validation.ElementKind;
>>> +import javax.validation.ValidationException;
>>> +import javax.validation.executable.ExecutableValidator;
>>> +import javax.validation.groups.Default;
>>> +import javax.validation.metadata.BeanDescriptor;
>>> +import javax.validation.metadata.ConstraintDescriptor;
>>> +import javax.validation.metadata.ElementDescriptor;
>>> +import javax.validation.metadata.ParameterDescriptor;
>>> +import javax.validation.metadata.PropertyDescriptor;
>>> +
>>> import org.apache.bval.DynamicMetaBean;
>>> import org.apache.bval.MetaBeanFinder;
>>> import org.apache.bval.jsr.groups.Group;
>>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
>>> import org.apache.commons.lang3.ClassUtils;
>>> import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>> -
>>> -import javax.validation.ConstraintDeclarationException;
>>> -import javax.validation.ConstraintDefinitionException;
>>> -import javax.validation.ConstraintTarget;
>>> -import javax.validation.ConstraintViolation;
>>> -import javax.validation.ElementKind;
>>> -import javax.validation.ValidationException;
>>> -import javax.validation.executable.ExecutableValidator;
>>> -import javax.validation.groups.Default;
>>> -import javax.validation.metadata.BeanDescriptor;
>>> -import javax.validation.metadata.ConstraintDescriptor;
>>> -import javax.validation.metadata.ElementDescriptor;
>>> -import javax.validation.metadata.ParameterDescriptor;
>>> -import javax.validation.metadata.PropertyDescriptor;
>>> -import java.lang.reflect.Constructor;
>>> -import java.lang.reflect.Member;
>>> -import java.lang.reflect.Method;
>>> -import java.lang.reflect.Modifier;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> -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 org.apache.commons.weaver.privilizer.Privileged;
>>>
>>> // TODO: centralize treatMapsLikeBeans
>>>
>>> @@ -312,18 +312,8 @@ public class ClassValidator implements C
>>> return this;
>>> }
>>>
>>> + @Privileged
>>> private <T> T newInstance(final Class<T> cls) {
>>> - if (System.getSecurityManager() == null) {
>>> - return doNewInstance(cls);
>>> - }
>>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>>> - public T run() {
>>> - return doNewInstance(cls);
>>> - }
>>> - });
>>> - }
>>> -
>>> - private <T> T doNewInstance(final Class<T> cls) {
>>> try {
>>> Constructor<T> cons =
>>> cls.getConstructor(ApacheFactoryContext.class);
>>> if (!cons.isAccessible()) {
>>> @@ -399,6 +389,7 @@ public class ClassValidator implements C
>>>
>>> // For each owner in the hierarchy
>>> for (final Class<?> owner : classHierarchy) {
>>> +
>>> context.setCurrentOwner(owner);
>>>
>>> int numViolations = result.violationsSize();
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,11 +18,16 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import org.apache.bval.cdi.BValExtension;
>>> -import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>>> -import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>>> -import org.apache.bval.jsr.util.IOs;
>>> -import org.apache.bval.jsr.xml.ValidationParser;
>>> +import java.io.Closeable;
>>> +import java.io.IOException;
>>> +import java.io.InputStream;
>>> +import java.util.Collection;
>>> +import java.util.HashMap;
>>> +import java.util.HashSet;
>>> +import java.util.List;
>>> +import java.util.Map;
>>> +import java.util.Set;
>>> +import java.util.concurrent.CopyOnWriteArrayList;
>>>
>>> import javax.validation.BootstrapConfiguration;
>>> import javax.validation.ConstraintValidatorFactory;
>>> @@ -36,18 +41,13 @@ import javax.validation.executable.Execu
>>> import javax.validation.spi.BootstrapState;
>>> import javax.validation.spi.ConfigurationState;
>>> import javax.validation.spi.ValidationProvider;
>>> -import java.io.Closeable;
>>> -import java.io.IOException;
>>> -import java.io.InputStream;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> -import java.util.Collection;
>>> -import java.util.HashMap;
>>> -import java.util.HashSet;
>>> -import java.util.List;
>>> -import java.util.Map;
>>> -import java.util.Set;
>>> -import java.util.concurrent.CopyOnWriteArrayList;
>>> +
>>> +import org.apache.bval.cdi.BValExtension;
>>> +import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>>> +import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>>> +import org.apache.bval.jsr.util.IOs;
>>> +import org.apache.bval.jsr.xml.ValidationParser;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>>
>>> /**
>>> * Description: used to configure apache-validation for jsr.
>>> @@ -98,7 +98,7 @@ public class ConfigurationImpl implement
>>>
>>> protected Collection<ExecutableType> executableValidation;
>>>
>>> - private Collection<BValExtension.Releasable> releasables = new
>>> CopyOnWriteArrayList<BValExtension.Releasable>();
>>> + private Collection<BValExtension.Releasable<?>> releasables = new
>>> CopyOnWriteArrayList<BValExtension.Releasable<?>>();
>>>
>>> private boolean beforeCdi = false;
>>>
>>> @@ -305,27 +305,18 @@ public class ConfigurationImpl implement
>>> * @throws ValidationException if the ValidatorFactory cannot be built
>>> */
>>> public ValidatorFactory buildValidatorFactory() {
>>> - if (System.getSecurityManager() == null) {
>>> - return doPrivBuildValidatorFactory(this);
>>> - }
>>> - return AccessController.doPrivileged(new
>>> PrivilegedAction<ValidatorFactory>() {
>>> - public ValidatorFactory run() {
>>> - return
>>> doPrivBuildValidatorFactory(ConfigurationImpl.this);
>>> - }
>>> - });
>>> + return doBuildValidatorFactory();
>>> }
>>>
>>> - public ValidatorFactory doPrivBuildValidatorFactory(final
>>> ConfigurationImpl impl) {
>>> + @Privileged
>>> + private ValidatorFactory doBuildValidatorFactory() {
>>> prepare();
>>> parser.ensureValidatorFactoryCanBeBuilt();
>>> - if (provider != null) {
>>> - return provider.buildValidatorFactory(impl);
>>> - } else {
>>> - return findProvider().buildValidatorFactory(impl);
>>> - }
>>> + final ValidationProvider<?> useProvider = provider == null ?
>>> findProvider() : provider;
>>> + return useProvider.buildValidatorFactory(this);
>>> }
>>>
>>> - public ConfigurationImpl prepare() {
>>> + private ConfigurationImpl prepare() {
>>> if (prepared) {
>>> return this;
>>> }
>>> @@ -466,38 +457,19 @@ public class ConfigurationImpl implement
>>> };
>>> }
>>>
>>> + @Privileged
>>> private <T> T newInstance(final Class<T> cls) {
>>> - if (System.getSecurityManager() == null) {
>>> - return createInstance(cls);
>>> - }
>>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>>> - public T run() {
>>> - return createInstance(cls);
>>> - }
>>> - });
>>> - }
>>> -
>>> - private <T> T createInstance(final Class<T> cls) {
>>> try {
>>> final BValExtension.Releasable<T> releasable =
>>> BValExtension.inject(cls);
>>> releasables.add(releasable);
>>> return releasable.getInstance();
>>> } catch (final Exception e) {
>>> - try {
>>> - return cls.newInstance();
>>> - } catch (final InstantiationException e1) {
>>> - throw new ValidationException(e1.getMessage(), e1);
>>> - } catch (final IllegalAccessException e1) {
>>> - throw new ValidationException(e1.getMessage(), e1);
>>> - }
>>> } catch (final NoClassDefFoundError error) {
>>> - try {
>>> - return cls.newInstance();
>>> - } catch (final InstantiationException e1) {
>>> - throw new ValidationException(e1.getMessage(), e1);
>>> - } catch (final IllegalAccessException e1) {
>>> - throw new ValidationException(e1.getMessage(), e1);
>>> - }
>>> + }
>>> + try {
>>> + return cls.newInstance();
>>> + } catch (final Exception e) {
>>> + throw new ValidationException(e.getMessage(), e);
>>> }
>>> }
>>>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,15 +18,17 @@ package org.apache.bval.jsr;
>>>
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Constraint;
>>> import javax.validation.ConstraintTarget;
>>> import javax.validation.Payload;
>>> +
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.Method;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> import java.util.Map;
>>> import java.util.concurrent.ConcurrentHashMap;
>>> import java.util.concurrent.ConcurrentMap;
>>> @@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
>>> /**
>>> * "message"
>>> */
>>> - MESSAGE(false, "message"),
>>> + MESSAGE("message"),
>>>
>>> /**
>>> * "groups"
>>> */
>>> - GROUPS(false, "groups"),
>>> + GROUPS("groups"),
>>>
>>> /**
>>> * "payload"
>>> */
>>> - PAYLOAD(false, "payload"),
>>> + PAYLOAD("payload"),
>>>
>>> /**
>>> * "validationAppliesTo"
>>> */
>>> - VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
>>> + VALIDATION_APPLIES_TO("validationAppliesTo"),
>>>
>>> /**
>>> * "value" for multi-valued constraints
>>> */
>>> - VALUE(true, "value");
>>> + VALUE("value");
>>>
>>> @SuppressWarnings("unused")
>>> private static class Types {
>>> @@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
>>> }
>>>
>>> private final Type type;
>>> - private final boolean permitNullDefaultValue;
>>> private final String attributeName;
>>>
>>> - private ConstraintAnnotationAttributes(final boolean
>>> permitNullDefaultValue, final String name) {
>>> - this.permitNullDefaultValue = permitNullDefaultValue;
>>> + private ConstraintAnnotationAttributes(final String name) {
>>> this.attributeName = name;
>>> try {
>>> this.type =
>>> Types.class.getDeclaredField(getAttributeName()).getGenericType();
>>> @@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
>>>
>>> public <C extends Annotation> Worker<C> analyze(final Class<C> clazz)
>>> {
>>> if (clazz.getName().startsWith("javax.validation.constraint."))
>>> { // cache only APIs classes to avoid memory leaks
>>> + @SuppressWarnings("unchecked")
>>> Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
>>> if (w == null) {
>>> w = new Worker<C>(clazz);
>>> @@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
>>> throw new RuntimeException("Impossible normally");
>>> }
>>> }
>>> +
>>> + @Privilizing(@CallTo(Reflection.class))
>>> public class Worker<C extends Annotation> {
>>>
>>> public final Method method;
>>> @@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
>>> if (found != null) {
>>> return found;
>>> }
>>> - final Method m =
>>> Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
>>> + final Method m =
>>> Reflection.getPublicMethod(constraintType, attributeName);
>>> if (m == null) {
>>> cache.putIfAbsent(attributeName, NULL_METHOD);
>>> return null;
>>> @@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
>>> return method != null && method != NULL_METHOD;
>>> }
>>>
>>> - public Object read(final Annotation constraint) {
>>> - if (System.getSecurityManager() == null) {
>>> - return doInvoke(constraint);
>>> - }
>>> - return AccessController.doPrivileged(new
>>> PrivilegedAction<Object>() {
>>> - public Object run() {
>>> - return doInvoke(constraint);
>>> - }
>>> - });
>>> + public <T> T read(final Annotation constraint) {
>>> + @SuppressWarnings("unchecked")
>>> + final T result = (T) doInvoke(constraint);
>>> + return result;
>>> }
>>>
>>> + @Privileged
>>> private Object doInvoke(final Annotation constraint) {
>>> try {
>>> return method.invoke(constraint);
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,12 +18,9 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import javax.validation.ConstraintValidator;
>>> import java.io.IOException;
>>> import java.io.InputStream;
>>> import java.lang.annotation.Annotation;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> import java.util.HashMap;
>>> import java.util.LinkedList;
>>> import java.util.Map;
>>> @@ -32,10 +29,17 @@ import java.util.StringTokenizer;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> +import javax.validation.ConstraintValidator;
>>> +
>>> +import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>> +
>>> /**
>>> * Description: Provides access to the default constraints/validator
>>> implementation classes built into the framework.
>>> * These are configured in DefaultConstraints.properties.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class ConstraintDefaults {
>>> private static final Logger log =
>>> Logger.getLogger(ConstraintDefaults.class.getName());
>>> private static final String DEFAULT_CONSTRAINTS =
>>> @@ -101,31 +105,11 @@ public class ConstraintDefaults {
>>> while (tokens.hasMoreTokens()) {
>>> final String eachClassName = tokens.nextToken();
>>>
>>> - Class<?> constraintValidatorClass;
>>> - if (System.getSecurityManager() == null) {
>>> - try {
>>> - constraintValidatorClass =
>>> Class.forName(eachClassName, true, classloader);
>>> - } catch (final ClassNotFoundException e) {
>>> - log.log(Level.SEVERE, String.format("Cannot
>>> find class %s", eachClassName), e);
>>> - constraintValidatorClass = null;
>>> - }
>>> - } else {
>>> - constraintValidatorClass =
>>> AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
>>> - public Class<?> run() {
>>> - try {
>>> - return Class.forName(eachClassName,
>>> true, classloader);
>>> - } catch (final ClassNotFoundException e) {
>>> - log.log(Level.SEVERE,
>>> String.format("Cannot find class %s", eachClassName), e);
>>> - return null;
>>> - }
>>> - }
>>> - });
>>> - }
>>> -
>>> - if (constraintValidatorClass != null) {
>>> - classes.add(constraintValidatorClass);
>>> + try {
>>> + classes.add(Reflection.getClass(classloader,
>>> eachClassName));
>>> + } catch (Exception e) {
>>> + log.log(Level.SEVERE, String.format("Cannot find
>>> class %s", eachClassName), e);
>>> }
>>> -
>>> }
>>>
>>> loadedConstraints.put((String) entry.getKey(),
>>> classes.toArray(new Class[classes.size()]));
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
>>> }
>>>
>>> private <A extends Annotation, T> ConstraintValidator<A, ? super
>>> T> getConstraintValidator(A annotation,
>>> -
>>> Class<? extends ConstraintValidator<A, ?>>[]
>>> constraintClasses, Class<?> owner, AccessStrategy access) {
>>> + Class<? extends ConstraintValidator<A, ?>>[]
>>> constraintClasses, Class<?> owner, AccessStrategy access) {
>>> if (constraintClasses != null && constraintClasses.length > 0) {
>>> Type type = determineTargetedType(owner, access);
>>>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -19,8 +19,11 @@ package org.apache.bval.jsr;
>>> import org.apache.bval.el.MessageEvaluator;
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ArrayUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.MessageInterpolator;
>>> +
>>> import java.util.Locale;
>>> import java.util.Map;
>>> import java.util.MissingResourceException;
>>> @@ -37,6 +40,7 @@ import java.util.regex.Pattern;
>>> * into human-readable messages. It uses ResourceBundles to find the
>>> messages.
>>> * This class is threadsafe.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class DefaultMessageInterpolator implements MessageInterpolator {
>>> private static final Logger log =
>>> Logger.getLogger(DefaultMessageInterpolator.class.getName());
>>> private static final boolean LOG_FINEST =
>>> log.isLoggable(Level.FINEST);
>>> @@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
>>> */
>>> private ResourceBundle getFileBasedResourceBundle(Locale locale) {
>>> ResourceBundle rb = null;
>>> - final ClassLoader classLoader =
>>> Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
>>> + final ClassLoader classLoader =
>>> Reflection.getClassLoader(DefaultMessageInterpolator.class);
>>> if (classLoader != null) {
>>> rb = loadBundle(classLoader, locale,
>>> USER_VALIDATION_MESSAGES + " not found by thread
>>> local classloader");
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -17,19 +17,23 @@
>>> package org.apache.bval.jsr;
>>>
>>>
>>> -import javax.validation.ValidationException;
>>> -import javax.validation.ValidationProviderResolver;
>>> -import javax.validation.spi.ValidationProvider;
>>> import java.io.BufferedReader;
>>> import java.io.IOException;
>>> import java.io.InputStreamReader;
>>> import java.net.URL;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> import java.util.ArrayList;
>>> import java.util.Enumeration;
>>> import java.util.List;
>>>
>>> +import javax.validation.ValidationException;
>>> +import javax.validation.ValidationProviderResolver;
>>> +import javax.validation.spi.ValidationProvider;
>>> +
>>> +import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>> +
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class DefaultValidationProviderResolver implements
>>> ValidationProviderResolver {
>>>
>>> //TODO - Spec recommends caching per classloader
>>> @@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
>>> // find all service provider cfgs
>>> Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
>>> while (cfgs.hasMoreElements()) {
>>> - URL url = cfgs.nextElement();
>>> + final URL url = cfgs.nextElement();
>>> BufferedReader br = null;
>>> try {
>>> br = new BufferedReader(new
>>> InputStreamReader(url.openStream()), 256);
>>> @@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
>>> if (!line.startsWith("#")) {
>>> try {
>>> // try loading the specified class
>>> - final Class<?> provider =
>>> cl.loadClass(line);
>>> + @SuppressWarnings("rawtypes")
>>> + final Class<? extends
>>> ValidationProvider> providerType =
>>> +
>>> cl.loadClass(line).asSubclass(ValidationProvider.class);
>>> // create an instance to return
>>> - final ValidationProvider<?> vp;
>>> - if (System.getSecurityManager() == null) {
>>> - try {
>>> - vp = (ValidationProvider<?>)
>>> provider.newInstance();
>>> - } catch (final Exception ex) {
>>> - throw new
>>> ValidationException("Cannot instantiate : " + provider, ex);
>>> - }
>>> - } else {
>>> - vp =
>>> AccessController.doPrivileged(new
>>> PrivilegedAction<ValidationProvider<?>>() {
>>> - public ValidationProvider<?>
>>> run() {
>>> - try {
>>> - return
>>> (ValidationProvider<?>) provider.newInstance();
>>> - } catch (final Exception ex) {
>>> - throw new
>>> ValidationException("Cannot instantiate : " + provider, ex);
>>> - }
>>> - }
>>> - });
>>> - }
>>> - providers.add(vp);
>>> +
>>>
>>> providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
>>>
>>> } catch (ClassNotFoundException e) {
>>> throw new ValidationException("Failed
>>> to load provider " +
>>> @@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
>>> }
>>> line = br.readLine();
>>> }
>>> - br.close();
>>> } catch (IOException e) {
>>> throw new ValidationException("Error trying to
>>> read " + url, e);
>>> } finally {
>>> - if (br != null)
>>> + if (br != null) {
>>> br.close();
>>> + }
>>> }
>>> }
>>> } catch (IOException e) {
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
>>> import org.apache.bval.util.FieldAccess;
>>> import org.apache.bval.util.MethodAccess;
>>> import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.ConstraintDeclarationException;
>>> import javax.validation.GroupDefinitionException;
>>> import javax.validation.GroupSequence;
>>> import javax.validation.groups.ConvertGroup;
>>> import javax.validation.groups.Default;
>>> +
>>> import java.io.Serializable;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.annotation.ElementType;
>>> @@ -55,6 +58,7 @@ import java.util.logging.Logger;
>>> * Description: process the class annotations for JSR303 constraint
>>> validations to build the MetaBean with information
>>> * from annotations and JSR303 constraint mappings (defined in xml)<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class JsrMetaBeanFactory implements MetaBeanFactory {
>>> /** Shared log instance */
>>> // of dubious utility as it's static :/
>>> @@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
>>> processGroupSequence(beanClass, metabean);
>>>
>>> // process class, superclasses and interfaces
>>> - List<Class<?>> classSequence = new ArrayList<Class<?>>();
>>> - ClassHelper.fillFullClassHierarchyAsList(classSequence,
>>> beanClass);
>>> + final List<Class<?>> classSequence =
>>> + ClassHelper.fillFullClassHierarchyAsList(new
>>> ArrayList<Class<?>>(), beanClass);
>>>
>>> // start with superclasses and go down the hierarchy so that
>>> // the child classes are processed last to have the chance to
>>> @@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
>>>
>>> final Collection<String> missingValid = new ArrayList<String>();
>>>
>>> - final Field[] fields =
>>> Reflection.INSTANCE.getDeclaredFields(beanClass);
>>> + final Field[] fields = Reflection.getDeclaredFields(beanClass);
>>> for (final Field field : fields) {
>>> MetaProperty metaProperty =
>>> metabean.getProperty(field.getName());
>>> // create a property for those fields for which there is not
>>> yet a
>>> @@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
>>> }
>>> }
>>> }
>>> - final Method[] methods =
>>> Reflection.INSTANCE.getDeclaredMethods(beanClass);
>>> + final Method[] methods = Reflection.getDeclaredMethods(beanClass);
>>> for (final Method method : methods) {
>>> if (method.isSynthetic() || method.isBridge()) {
>>> continue;
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
>>>
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Path;
>>> import javax.validation.TraversableResolver;
>>> +
>>> import java.lang.annotation.ElementType;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> /** @see javax.validation.TraversableResolver */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class DefaultTraversableResolver implements
>>> TraversableResolver, CachingRelevant {
>>> private static final Logger log =
>>> Logger.getLogger(DefaultTraversableResolver.class.getName());
>>> private static final boolean LOG_FINEST =
>>> log.isLoggable(Level.FINEST);
>>> @@ -71,9 +75,9 @@ public class DefaultTraversableResolver
>>> /** Tries to load detect and load JPA. */
>>> @SuppressWarnings("unchecked")
>>> private void initJpa() {
>>> - final ClassLoader classLoader = getClassLoader();
>>> + final ClassLoader classLoader =
>>> Reflection.getClassLoader(DefaultTraversableResolver.class);
>>> try {
>>> - Reflection.INSTANCE.getClass(classLoader,
>>> PERSISTENCE_UTIL_CLASSNAME);
>>> + Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
>>> if (LOG_FINEST) {
>>> log.log(Level.FINEST, String.format("Found %s on
>>> classpath.", PERSISTENCE_UTIL_CLASSNAME));
>>> }
>>> @@ -101,9 +105,4 @@ public class DefaultTraversableResolver
>>> public boolean needsCaching() {
>>> return jpaTR != null &&
>>> CachingTraversableResolver.needsCaching(jpaTR);
>>> }
>>> -
>>> - private static ClassLoader getClassLoader()
>>> - {
>>> - return
>>> Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
>>> - }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -43,6 +43,7 @@ public class ClassHelper {
>>> * The current list of classes in the hierarchy.
>>> * @param clazz
>>> */
>>> + @Deprecated
>>> static public List<Class<?>>
>>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
>>> clazz) {
>>> if (clazz == null || clazz == Object.class || clazz ==
>>> Serializable.class || clazz == Cloneable.class) {
>>> return allClasses;
>>> @@ -58,26 +59,4 @@ public class ClassHelper {
>>> return allClasses;
>>> }
>>>
>>> - /**
>>> - * @deprecated Will be removed for security reasons.
>>> - *
>>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>>> - */
>>> - @Deprecated
>>> - public static Class<?> getClass(String className) throws
>>> ClassNotFoundException {
>>> - return getClass(className, true);
>>> - }
>>> -
>>> - /**
>>> - * @deprecated Will be removed for security reasons.
>>> - *
>>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>>> - */
>>> - @Deprecated
>>> - public static Class<?> getClass(String className, boolean
>>> initialize) throws ClassNotFoundException {
>>> - ClassLoader loader =
>>> Thread.currentThread().getContextClassLoader();
>>> - if (loader == null)
>>> - loader = ClassHelper.class.getClassLoader();
>>> - return ClassUtils.getClass(loader, className, initialize);
>>> - }
>>> }
>>>
Re: Fwd: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Sure, default code shouldn't change. BTW I wonder why these
regressions were introduced? Any idea?
Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau
2014-12-06 19:29 GMT+01:00 Matt Benson <gu...@gmail.com>:
> Sorry; I ran the old TCK. I'll check on this later. I think that by default
> we should leave things as we find them. We can consider including a
> configuration option to skip the unset for efficiency, or just skip it
> always in environments with no SecurityManager.
>
> Matt
> On Dec 6, 2014 2:11 AM, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
>
>> Hi Matt,
>>
>> I have 2 questions:
>> 1) surely obvious but I dont get why you re-set the accessible (if
>> (mustSet)). While we need it accessible we can keep it set to true no?
>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>>
>>
>> Romain Manni-Bucau
>> @rmannibucau
>> http://www.tomitribe.com
>> http://rmannibucau.wordpress.com
>> https://github.com/rmannibucau
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: <mb...@apache.org>
>> Date: 2014-10-01 6:37 GMT+02:00
>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
>> To: commits@bval.apache.org
>>
>>
>> Author: mbenson
>> Date: Wed Oct 1 04:37:36 2014
>> New Revision: 1628598
>>
>> URL: http://svn.apache.org/r1628598
>> Log:
>> use commons weaver/privilizer
>>
>> Removed:
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
>> Modified:
>> bval/branches/bval-11/bval-core/pom.xml
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> bval/branches/bval-11/bval-jsr/ (props changed)
>> bval/branches/bval-11/bval-jsr/pom.xml
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
>>
>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
>> bval/branches/bval-11/bval-tck11/ (props changed)
>> bval/branches/bval-11/bval-xstream/pom.xml
>>
>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
>> bval/branches/bval-11/pom.xml
>>
>> Modified: bval/branches/bval-11/bval-core/pom.xml
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> --- bval/branches/bval-11/bval-core/pom.xml (original)
>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
>> @@ -46,6 +46,10 @@
>> <artifactId>commons-beanutils-core</artifactId>
>> </dependency>
>> <dependency>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> + </dependency>
>> + <dependency>
>> <groupId>junit</groupId>
>> <artifactId>junit</artifactId>
>> <scope>test</scope>
>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
>> </execution>
>> </executions>
>> </plugin>
>> + <plugin>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> + </plugin>
>> </plugins>
>> <pluginManagement>
>> <plugins>
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,13 +16,11 @@
>> */
>> package org.apache.bval;
>>
>> -import org.apache.bval.util.AccessStrategy;
>> -
>> import java.lang.annotation.ElementType;
>> import java.lang.reflect.Constructor;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> +
>> +import org.apache.bval.util.AccessStrategy;
>>
>> public class ConstructorAccess extends AccessStrategy {
>>
>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>>
>> public ConstructorAccess(final Constructor<?> constructor) {
>> this.constructor = constructor;
>> - if (!constructor.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - constructor.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - constructor.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(constructor);
>> }
>>
>> @Override
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,6 +17,8 @@
>> package org.apache.bval.model;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import java.beans.Introspector;
>> import java.lang.reflect.Constructor;
>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
>> *
>> * @see MetaProperty
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class MetaBean extends FeaturesCapable implements Cloneable,
>> Features.Bean {
>> private static final long serialVersionUID = 2L;
>>
>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
>> int i = 0;
>> Class<?> clazz = beanClass;
>> while (clazz != null && clazz != Object.class) {
>> - for (final Field f :
>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
>> + for (final Field f : Reflection.getDeclaredFields(clazz))
>> {
>> i++;
>> final String name = f.getName();
>> if (!fields.containsKey(name)) {
>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
>> protected MethodComparator(final Class<?> beanClass) {
>> Class<?> clazz = beanClass;
>> while (clazz != null && clazz != Object.class) {
>> - for (final Method m :
>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
>> + for (final Method m :
>> Reflection.getDeclaredMethods(clazz)) {
>> methods.put(m,
>> Arrays.hashCode(m.getParameterTypes()));
>> }
>> clazz = clazz.getSuperclass();
>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
>> private final Map<Constructor<?>, Integer> constructors = new
>> HashMap<Constructor<?>, Integer>();
>>
>> protected ConstructorComparator(final Class<?> beanClass) {
>> - for (final Constructor<?> c :
>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
>> + for (final Constructor<?> c :
>> Reflection.getDeclaredConstructors(beanClass)) {
>> constructors.put(c,
>> Arrays.hashCode(c.getParameterTypes()));
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,8 +17,11 @@
>> package org.apache.bval.util;
>>
>> import java.lang.annotation.ElementType;
>> +import java.lang.reflect.AccessibleObject;
>> import java.lang.reflect.Type;
>>
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +
>> /**
>> * Description: abstract class to encapsulate different strategies
>> * to get the value of a Property. This class is designed such that
>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
>> * @return String
>> */
>> public abstract String getPropertyName();
>> +
>> + /**
>> + * Set {@code accessibleObject} as being accessible
>> + * @param accessibleObject
>> + */
>> + protected boolean setAccessible(AccessibleObject accessibleObject) {
>> + if (accessibleObject.isAccessible()) {
>> + return false;
>> + }
>> + doSetAccessible(accessibleObject);
>> + return true;
>> + }
>> +
>> + @Privileged
>> + private void doSetAccessible(AccessibleObject accessibleObject) {
>> + accessibleObject.setAccessible(true);
>> + }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,18 +18,21 @@
>> */
>> package org.apache.bval.util;
>>
>> -import org.apache.bval.util.reflection.Reflection;
>> -
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.util.Properties;
>> import java.util.StringTokenizer;
>>
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> /**
>> * This class contains version information for BVal.
>> * It uses Ant's filter tokens to convert the template into a java
>> * file with current information.
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class BValVersion {
>>
>> /** Project name */
>> @@ -157,7 +160,7 @@ public class BValVersion {
>> * {@inheritDoc}
>> */
>> public String toString() {
>> - StringBuilder buf = new StringBuilder(80 * 40);
>> + final StringBuilder buf = new StringBuilder(80 * 40);
>> appendBanner(buf);
>> buf.append("\n");
>>
>> @@ -169,8 +172,7 @@ public class BValVersion {
>> appendProperty("java.vendor", buf).append("\n\n");
>>
>> buf.append("java.class.path:\n");
>> - StringTokenizer tok = new StringTokenizer(
>> - Reflection.INSTANCE.getProperty("java.class.path"));
>> + final StringTokenizer tok = new
>> StringTokenizer(Reflection.getProperty("java.class.path"));
>> while (tok.hasMoreTokens()) {
>> buf.append("\t").append(tok.nextToken());
>> buf.append("\n");
>> @@ -191,7 +193,6 @@ public class BValVersion {
>> }
>>
>> private StringBuilder appendProperty(String prop, StringBuilder buf) {
>> - return buf.append(prop).append(": ").append(
>> - Reflection.INSTANCE.getProperty(prop));
>> + return buf.append(prop).append(":
>> ").append(Reflection.getProperty(prop));
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
>> import java.lang.annotation.ElementType;
>> import java.lang.reflect.Field;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>>
>> /**
>> * Description: direct field access strategy.<br/>
>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
>> */
>> public FieldAccess(final Field field) {
>> this.field = field;
>> - if (!field.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - field.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - field.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(field);
>> }
>>
>> /**
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,6 +16,7 @@
>> */
>> package org.apache.bval.util;
>>
>> +import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>>
>> import java.lang.annotation.ElementType;
>> @@ -28,7 +29,7 @@ import java.util.Map;
>> /**
>> * {@link AccessStrategy} to get an indexed member of an {@link Iterable}
>> or
>> * array object.
>> - */
>> + */
>> public class IndexedAccess extends AccessStrategy {
>> private static final TypeVariable<?> ITERABLE_TYPE =
>> Iterable.class.getTypeParameters()[0];
>>
>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
>> }
>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Iterable.class);
>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
>> typeArguments.get(ITERABLE_TYPE) : Object.class;
>> + return
>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> ITERABLE_TYPE), Object.class);
>> }
>> return null;
>> }
>>
>> - private Type containerType;
>> - private Integer index;
>> + private final Type containerType;
>> + private final Integer index;
>>
>> /**
>> * Create a new IndexedAccessStrategy instance.
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,6 +16,7 @@
>> */
>> package org.apache.bval.util;
>>
>> +import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>>
>> import java.lang.annotation.ElementType;
>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
>> public static Type getJavaElementType(Type containerType) {
>> if (TypeUtils.isAssignable(containerType, Map.class)) {
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Map.class);
>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
>> + return
>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> MAP_TYPEVARS[1]), Object.class);
>> }
>> return null;
>> }
>>
>> - private Type containerType;
>> - private Object key;
>> + private final Type containerType;
>> + private final Object key;
>>
>> /**
>> * Create a new KeyedAccess instance.
>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
>> if (instance instanceof Map<?, ?>) {
>> Map<?, ?> map = (Map<?, ?>) instance;
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Map.class);
>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
>> MAP_TYPEVARS[0]);
>> if (key == null || keyType == null ||
>> TypeUtils.isInstance(key, keyType)) {
>> return map.get(key);
>> }
>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
>> */
>> @Override
>> public Type getJavaType() {
>> - Type result = getJavaElementType(containerType);
>> + final Type result = getJavaElementType(containerType);
>> return result == null ? Object.class : result;
>> }
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>>
>> /**
>> * Description: invoke a zero-argument method (getter)<br/>
>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
>> public MethodAccess(String propertyName, final Method method) {
>> this.method = method;
>> this.propertyName = propertyName;
>> - if (!method.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - method.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - method.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(method);
>> }
>>
>> /**
>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
>> * the method name id not according to the JavaBeans standard.
>> */
>> public static String getPropertyName(Method member) {
>> - String name = null;
>> - String methodName = member.getName();
>> + final String methodName = member.getName();
>> if (methodName.startsWith("is")) {
>> - name = Introspector.decapitalize(methodName.substring(2));
>> - } /* else if ( methodName.startsWith("has")) {
>> - name = Introspector.decapitalize(
>> methodName.substring( 3 ) );
>> - } */
>> - // setter annotation is NOT supported in the spec
>> - /* else if (method.getName().startsWith("set") &&
>> method.getParameterTypes().length == 1) {
>> - propName =
>> Introspector.decapitalize(method.getName().substring(3));
>> - } */
>> - else if (methodName.startsWith("get")) {
>> - name = Introspector.decapitalize(methodName.substring(3));
>> + return Introspector.decapitalize(methodName.substring(2));
>> + }
>> + if (methodName.startsWith("get")) {
>> + return Introspector.decapitalize(methodName.substring(3));
>> }
>> - return name;
>> + return null;
>> }
>>
>> /**
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> Wed Oct 1 04:37:36 2014
>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
>> import java.lang.reflect.Field;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> +import java.lang.reflect.Modifier;
>>
>> -public interface Reflection {
>> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
>> +import org.apache.commons.lang3.ClassUtils;
>>
>> - Class<?> getClass(final ClassLoader classLoader, final String
>> className) throws Exception;
>> -
>> - Object getAnnotationValue(final Annotation annotation, final
>> String name) throws IllegalAccessException, InvocationTargetException;
>> +/**
>> + * Security-agnostic "blueprint" class for reflection-related operations.
>> + *
>> + * @version $Rev$ $Date$
>> + */
>> +public class Reflection {
>> +
>> + private static void setAccessibility(final Field field) {
>> + // FIXME 2011-03-27 jw:
>> + // - Why not simply call field.setAccessible(true)?
>> + // - Fields can not be abstract.
>> + if (!Modifier.isPublic(field.getModifiers())
>> + || (Modifier.isPublic(field.getModifiers()) &&
>> Modifier.isAbstract(field.getModifiers()))) {
>> + field.setAccessible(true);
>> + }
>> + }
>>
>> - ClassLoader getClassLoader(final Class<?> clazz);
>> + public static Class<?> getClass(final ClassLoader classLoader,
>> final String className) throws Exception {
>> + return ClassUtils.getClass(classLoader, className, true);
>> + }
>>
>> - String getProperty(final String name);
>> + public static Object getAnnotationValue(final Annotation
>> annotation, final String name)
>> + throws IllegalAccessException, InvocationTargetException {
>> + Method valueMethod;
>> + try {
>> + valueMethod =
>> annotation.annotationType().getDeclaredMethod(name);
>> + } catch (final NoSuchMethodException ex) {
>> + // do nothing
>> + valueMethod = null;
>> + }
>> + if (null != valueMethod) {
>> + if (!valueMethod.isAccessible()) {
>> + valueMethod.setAccessible(true);
>> + }
>> + return valueMethod.invoke(annotation);
>> + }
>> + return null;
>> + }
>>
>> - Field getDeclaredField(final Class<?> clazz, final String fieldName);
>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
>> + final ClassLoader cl =
>> Thread.currentThread().getContextClassLoader();
>> + if (cl != null) {
>> + return cl;
>> + }
>> + return clazz.getClassLoader();
>> + }
>>
>> - Field[] getDeclaredFields(final Class<?> clazz);
>> + public static String getProperty(final String name) {
>> + return System.getProperty(name);
>> + }
>>
>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
>> Class<?>... parameters);
>> + public static Field getDeclaredField(final Class<?> clazz, final
>> String fieldName) {
>> + final Field f;
>> + try {
>> + f = clazz.getDeclaredField(fieldName);
>> + } catch (final NoSuchFieldException e) {
>> + return null;
>> + }
>> + setAccessibility(f);
>> + return f;
>> + }
>>
>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
>> final Class<?>... parameters);
>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
>> + final Field[] fields = clazz.getDeclaredFields();
>> + if (fields.length > 0) {
>> + for (final Field f : fields) {
>> + if (!f.isAccessible()) {
>> + f.setAccessible(true);
>> + }
>> + }
>> + }
>> + return fields;
>> + }
>>
>> - Method[] getDeclaredMethods(final Class<?> clazz);
>> + public static Constructor<?> getDeclaredConstructor(final
>> Class<?> clazz, final Class<?>... parameters) {
>> + try {
>> + return clazz.getDeclaredConstructor(parameters);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> + }
>> + }
>>
>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
>> + public static Method getDeclaredMethod(final Class<?> clazz,
>> final String name, final Class<?>... parameters) {
>> + try {
>> + return clazz.getDeclaredMethod(name, parameters);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> + }
>> + }
>>
>> - Method getPublicMethod(final Class<?> clazz, final String methodName);
>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
>> + return clazz.getDeclaredMethods();
>> + }
>>
>> - <T> T newInstance(final Class<T> cls);
>> + public static Constructor<?>[] getDeclaredConstructors(final
>> Class<?> clazz) {
>> + return clazz.getDeclaredConstructors();
>> + }
>>
>> - public static class ReflectionFactory {
>> - public static Reflection newInstance() {
>> - if (System.getSecurityManager() != null) {
>> - return new SecurityManagerReflection();
>> - }
>> - return new DefaultReflection();
>> + public static Method getPublicMethod(final Class<?> clazz, final
>> String methodName) {
>> + try {
>> + return clazz.getMethod(methodName);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> }
>> + }
>>
>> - private ReflectionFactory() {
>> - // no-op
>> + public static <T> T newInstance(final Class<T> cls) {
>> + try {
>> + return cls.newInstance();
>> + } catch (final Exception ex) {
>> + throw new RuntimeException("Cannot instantiate : " + cls, ex);
>> }
>> }
>> +
>> }
>>
>> Propchange: bval/branches/bval-11/bval-jsr/
>>
>> ------------------------------------------------------------------------------
>> --- svn:ignore (added)
>> +++ svn:ignore Wed Oct 1 04:37:36 2014
>> @@ -0,0 +1,4 @@
>> +.classpath
>> +.project
>> +.settings
>> +target
>>
>> Propchange: bval/branches/bval-11/bval-jsr/
>>
>> ------------------------------------------------------------------------------
>> --- svn:mergeinfo (added)
>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
>> @@ -0,0 +1,2 @@
>> +/bval/trunk/bval-jsr303:1598345
>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>>
>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
>> @@ -79,13 +79,73 @@
>> <plugins>
>> <plugin>
>> <groupId>org.apache.maven.plugins</groupId>
>> + <artifactId>maven-resources-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <id>default-testResources</id>
>> + <phase />
>> + <goals>
>> + <goal>testResources</goal>
>> + </goals>
>> + </execution>
>> + </executions>
>> + </plugin>
>> + <plugin>
>> + <groupId>org.apache.maven.plugins</groupId>
>> + <artifactId>maven-antrun-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <id>filter-testResources</id>
>> + <phase>process-test-resources</phase>
>> + <goals>
>> + <goal>run</goal>
>> + </goals>
>> + <configuration>
>> + <target>
>> + <mkdir
>> dir="${project.build.testOutputDirectory}" />
>> + <condition property="slash"
>> value="/" else="">
>> + <os family="windows" />
>> + </condition>
>> + <copy
>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> + <fileset
>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
>> + </copy>
>> + <copy
>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> + <fileset
>> file="${project.basedir}/src/test/resources/java.policy" />
>> + <filterchain>
>> + <expandproperties />
>> + <!-- append extra
>> slash on windows only -->
>> + <replacestring
>> from="file://" to="file://${slash}" />
>> + <replacestring
>> from="${file.separator}" to="/" />
>> + <!-- preserve
>> system-specific file separator -->
>> + <expandproperties>
>> + <propertyset>
>> + <propertyref
>> prefix="project." />
>> + <globmapper
>> from="*" to="preserve.*" />
>> + </propertyset>
>> + </expandproperties>
>> + </filterchain>
>> + </copy>
>> + </target>
>> + </configuration>
>> + </execution>
>> + </executions>
>> + <dependencies>
>> + <dependency>
>> + <groupId>org.apache.ant</groupId>
>> + <artifactId>ant</artifactId>
>> + <version>1.9.3</version>
>> + </dependency>
>> + </dependencies>
>> + </plugin>
>> + <plugin>
>> + <groupId>org.apache.maven.plugins</groupId>
>> <artifactId>maven-surefire-plugin</artifactId>
>> <configuration>
>> <includes>
>> <include>**/*Test.java</include>
>> <include>**/*TestCase.java</include>
>> </includes>
>> - <argLine>-Djava.security.manager
>>
>> -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
>> + <argLine>-Djava.security.manager
>>
>> -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
>> </configuration>
>> </plugin>
>> </plugins>
>> @@ -103,6 +163,10 @@
>> <groupId>org.apache.commons</groupId>
>> <artifactId>commons-lang3</artifactId>
>> </dependency>
>> + <dependency>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> + </dependency>
>> <!-- optional dependencies -->
>> <dependency>
>> <groupId>org.apache.bval</groupId>
>> @@ -235,6 +299,10 @@
>> </includes>
>> </configuration>
>> </plugin>
>> + <plugin>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> + </plugin>
>> </plugins>
>> </build>
>> </project>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,27 +18,9 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.bval.jsr.groups.GroupsComputer;
>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> -import org.apache.bval.util.AccessStrategy;
>> -import org.apache.commons.lang3.reflect.TypeUtils;
>> -
>> -import javax.validation.Constraint;
>> -import javax.validation.ConstraintDeclarationException;
>> -import javax.validation.ConstraintDefinitionException;
>> -import javax.validation.ConstraintTarget;
>> -import javax.validation.ConstraintValidator;
>> -import javax.validation.ConstraintValidatorFactory;
>> -import javax.validation.OverridesAttribute;
>> -import javax.validation.Payload;
>> -import javax.validation.ReportAsSingleViolation;
>> -import javax.validation.constraintvalidation.SupportedValidationTarget;
>> -import javax.validation.constraintvalidation.ValidationTarget;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.Arrays;
>> import java.util.Collections;
>> import java.util.HashMap;
>> @@ -50,6 +32,24 @@ import java.util.Set;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> +import javax.validation.Constraint;
>> +import javax.validation.ConstraintDeclarationException;
>> +import javax.validation.ConstraintDefinitionException;
>> +import javax.validation.ConstraintTarget;
>> +import javax.validation.ConstraintValidator;
>> +import javax.validation.ConstraintValidatorFactory;
>> +import javax.validation.OverridesAttribute;
>> +import javax.validation.Payload;
>> +import javax.validation.ReportAsSingleViolation;
>> +import javax.validation.constraintvalidation.SupportedValidationTarget;
>> +import javax.validation.constraintvalidation.ValidationTarget;
>> +
>> +import org.apache.bval.jsr.groups.GroupsComputer;
>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> +import org.apache.bval.util.AccessStrategy;
>> +import org.apache.commons.lang3.reflect.TypeUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +
>> /**
>> * Description: helper class that builds a {@link ConstraintValidation}
>> or its
>> * composite constraint validations by parsing the jsr-annotations and
>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
>> }
>>
>> /** build attributes, payload, groups from 'annotation' */
>> + @Privileged
>> private void buildFromAnnotation() {
>> - if (constraintValidation.getAnnotation() != null) {
>> - if (System.getSecurityManager() == null) {
>> - doBuildFromAnnotations();
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Object>() {
>> - public Object run() {
>> - doBuildFromAnnotations();
>> - return null;
>> - }
>> - });
>> - }
>> + if (constraintValidation.getAnnotation() == null) {
>> + return;
>> }
>> - }
>> -
>> - private void doBuildFromAnnotations() {
>> final Class<? extends Annotation> annotationType =
>> constraintValidation.getAnnotation().annotationType();
>>
>> boolean foundPayload = false;
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> Wed Oct 1 04:37:36 2014
>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
>> import org.apache.bval.util.AccessStrategy;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintValidator;
>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
>> import javax.validation.constraintvalidation.ValidationTarget;
>> import javax.validation.groups.ConvertGroup;
>> import javax.validation.groups.Default;
>> +
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.AnnotatedElement;
>> import java.lang.reflect.InvocationTargetException;
>> @@ -44,6 +47,7 @@ import java.util.Set;
>> * annotations, including composed constraints and the resolution of
>> * {@link ConstraintValidator} implementations.
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public final class AnnotationProcessor {
>> /** {@link ApacheFactoryContext} used */
>> private final ApacheFactoryContext factoryContext;
>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
>> * annotated by @Constraint) whose value element has a return
>> type of an
>> * array of constraint annotations in a special way.
>> */
>> - final Object result =
>> Reflection.INSTANCE.getAnnotationValue(annotation,
>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> + final Object result =
>> + Reflection.getAnnotationValue(annotation,
>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> if (result instanceof Annotation[]) {
>> boolean changed = false;
>> for (final Annotation each : (Annotation[]) result) {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,6 +18,18 @@
>> */
>> package org.apache.bval.jsr;
>>
>> +import java.lang.reflect.Constructor;
>> +import java.util.ArrayList;
>> +import java.util.List;
>> +
>> +import javax.validation.ConstraintValidatorFactory;
>> +import javax.validation.MessageInterpolator;
>> +import javax.validation.ParameterNameProvider;
>> +import javax.validation.TraversableResolver;
>> +import javax.validation.ValidationException;
>> +import javax.validation.Validator;
>> +import javax.validation.ValidatorContext;
>> +
>> import org.apache.bval.IntrospectorMetaBeanFactory;
>> import org.apache.bval.MetaBeanBuilder;
>> import org.apache.bval.MetaBeanFactory;
>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
>> import org.apache.bval.xml.XMLMetaBeanManager;
>> import org.apache.commons.lang3.StringUtils;
>> import org.apache.commons.lang3.reflect.ConstructorUtils;
>> -
>> -import javax.validation.ConstraintValidatorFactory;
>> -import javax.validation.MessageInterpolator;
>> -import javax.validation.ParameterNameProvider;
>> -import javax.validation.TraversableResolver;
>> -import javax.validation.ValidationException;
>> -import javax.validation.Validator;
>> -import javax.validation.ValidatorContext;
>> -import java.lang.reflect.Constructor;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -import java.util.ArrayList;
>> -import java.util.List;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> /**
>> * Description: Represents the context that is used to create
>> * <code>ClassValidator</code> instances.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ApacheFactoryContext implements ValidatorContext {
>> private final ApacheValidatorFactory factory;
>> private final MetaBeanFinder metaBeanFinder;
>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
>> return new MetaBeanManager(new
>> MetaBeanBuilder(builders.toArray(new
>> MetaBeanFactory[builders.size()])));
>> }
>>
>> + @Privileged
>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>> Class<F> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return doCreateMetaBeanFactory(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<F>() {
>> - public F run() {
>> - return doCreateMetaBeanFactory(cls);
>> - }
>> - });
>> - }
>> -
>> - private <F extends MetaBeanFactory> F
>> doCreateMetaBeanFactory(final Class<F> cls) {
>> try {
>> Constructor<F> c =
>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> ApacheFactoryContext.this.getClass());
>> if (c != null) {
>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>>
>> private Class<?> loadClass(final String className) {
>> try {
>> - return Class.forName(className, true,
>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
>> + return Class.forName(className, true,
>> Reflection.getClassLoader(ApacheFactoryContext.class));
>> } catch (ClassNotFoundException ex) {
>> throw new ValidationException("Unable to load class: " +
>> className, ex);
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,16 +18,15 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.commons.lang3.ClassUtils;
>> -
>> import javax.validation.Configuration;
>> import javax.validation.ValidationException;
>> import javax.validation.ValidatorFactory;
>> import javax.validation.spi.BootstrapState;
>> import javax.validation.spi.ConfigurationState;
>> import javax.validation.spi.ValidationProvider;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> +
>> +import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>>
>> /**
>> * Description: Implementation of {@link ValidationProvider} for jsr
>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
>> // No privileges should be required to access the constructor,
>> // because the classloader of ApacheValidationProvider will always
>> // be an ancestor of the loader of validatorFactoryClass.
>> - return (System.getSecurityManager() == null)
>> - ? instantiateValidatorFactory(validatorFactoryClass,
>> configuration) : AccessController
>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
>> - public ValidatorFactory run() {
>> - return
>> instantiateValidatorFactory(validatorFactoryClass, configuration);
>> - }
>> - });
>> + return instantiateValidatorFactory(validatorFactoryClass,
>> configuration);
>> }
>>
>> + @Privileged
>> private static ValidatorFactory instantiateValidatorFactory(
>> final Class<? extends ValidatorFactory>
>> validatorFactoryClass, final ConfigurationState configuration) {
>> try {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> Wed Oct 1 04:37:36 2014
>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
>> * class is presumed have a constructor that accepts a single
>> * {@link ConfigurationState} argument.
>> */
>> - String VALIDATOR_FACTORY_CLASSNAME =
>> "apache.bval.validator-factory-classname";
>> + String VALIDATOR_FACTORY_CLASSNAME =
>> "apache.bval.validator-factory-classname";
>>
>> /**
>> * Specifies the names, delimited by whitespace, of
>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
>> * <li>default (no-args) constructor</li>
>> * </ol>
>> */
>> - String METABEAN_FACTORY_CLASSNAMES =
>> "apache.bval.metabean-factory-classnames";
>> + String METABEAN_FACTORY_CLASSNAMES =
>> "apache.bval.metabean-factory-classnames";
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> Wed Oct 1 04:37:36 2014
>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.ConstraintValidatorFactory;
>> import javax.validation.MessageInterpolator;
>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
>> import javax.validation.Validator;
>> import javax.validation.ValidatorFactory;
>> import javax.validation.spi.ConfigurationState;
>> +
>> import java.io.Closeable;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Modifier;
>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
>> * validators.<br/>
>> * This instance is not thread-safe.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ApacheValidatorFactory implements ValidatorFactory,
>> Cloneable {
>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
>> ConstraintDefaults();
>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>>
>> private <T> T newInstance(final Class<T> cls) {
>> try {
>> - return Reflection.INSTANCE.newInstance(cls);
>> + return Reflection.newInstance(cls);
>> } catch (final RuntimeException e) {
>> throw new ValidationException(e.getCause());
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> Wed Oct 1 04:37:36 2014
>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
>> import org.apache.bval.util.AccessStrategy;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintDeclarationException;
>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
>> import javax.validation.metadata.ParameterDescriptor;
>> import javax.validation.metadata.PropertyDescriptor;
>> import javax.validation.metadata.ReturnValueDescriptor;
>> +
>> import java.beans.Introspector;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.AccessibleObject;
>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
>> /**
>> * Description: Implements {@link BeanDescriptor}.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class BeanDescriptorImpl extends ElementDescriptorImpl
>> implements BeanDescriptor {
>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
>> private static final Validation[] EMPTY_VALIDATION = new
>> Validation[0];
>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
>> Class<?> current = prop.getParentMetaBean().getBeanClass();
>> while (current != null && current != Object.class &&
>> (!methodFound || !fieldFound)) {
>> if (!fieldFound) {
>> - final Field field =
>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
>> + final Field field =
>> Reflection.getDeclaredField(current, prop.getName());
>> if (field != null) {
>> processConvertGroup(edesc, field);
>> fieldFound = true;
>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>>
>> if (!methodFound) {
>> final String name =
>> Character.toUpperCase(prop.getName().charAt(0)) +
>> prop.getName().substring(1);
>> - Method m =
>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
>> + Method m = Reflection.getDeclaredMethod(current, "get" +
>> name);
>> if (m != null) {
>> processConvertGroup(edesc, m);
>> methodFound = true;
>> } else {
>> - m =
>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
>> + m = Reflection.getDeclaredMethod(current, "is" +
>> name);
>> if (m != null) {
>> processConvertGroup(edesc, m);
>> methodFound = true;
>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
>> }
>>
>> private void buildConstructorConstraints() throws
>> InvocationTargetException, IllegalAccessException {
>> - for (final Constructor<?> cons :
>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
>> {
>> + for (final Constructor<?> cons :
>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
>> final ConstructorDescriptorImpl consDesc = new
>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>>
>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
>> consDesc);
>>
>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
>> final List<Class<?>> classHierarchy =
>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
>> current);
>> classHierarchy.remove(current);
>>
>> - for (final Method method :
>> Reflection.INSTANCE.getDeclaredMethods(current)) {
>> + for (final Method method :
>> Reflection.getDeclaredMethods(current)) {
>> if (Modifier.isStatic(method.getModifiers()) ||
>> method.isSynthetic()) {
>> continue;
>> }
>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>>
>> final Collection<Method> parents = new
>> ArrayList<Method>();
>> for (final Class<?> clazz : classHierarchy) {
>> - final Method overriden =
>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> - if (overriden != null) {
>> - parents.add(overriden);
>> - processMethod(overriden, methodDesc);
>> + final Method overridden =
>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> + if (overridden != null) {
>> + parents.add(overridden);
>> + processMethod(overridden, methodDesc);
>> }
>> }
>>
>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
>> final Class<?>[] interfaces =
>> method.getDeclaringClass().getInterfaces();
>> final Collection<Method> itfWithThisMethod = new
>> ArrayList<Method>();
>> for (final Class<?> i : interfaces) {
>> - final Method m =
>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
>> method.getParameterTypes());
>> + final Method m =
>> Reflection.getDeclaredMethod(i, method.getName(),
>> method.getParameterTypes());
>> if (m != null) {
>> itfWithThisMethod.add(m);
>> }
>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
>> returnValid++;
>> }
>> for (final Class<?> clazz : classHierarchy) {
>> - final Method overriden =
>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> - if (overriden != null) {
>> - if (overriden.getAnnotation(Valid.class) !=
>> null) {
>> + final Method overridden =
>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> + if (overridden != null) {
>> + if (overridden.getAnnotation(Valid.class)
>> != null) {
>> returnValid++;
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,6 +18,33 @@
>> */
>> package org.apache.bval.jsr;
>>
>> +import java.lang.reflect.Constructor;
>> +import java.lang.reflect.Member;
>> +import java.lang.reflect.Method;
>> +import java.lang.reflect.Modifier;
>> +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 javax.validation.ConstraintDeclarationException;
>> +import javax.validation.ConstraintDefinitionException;
>> +import javax.validation.ConstraintTarget;
>> +import javax.validation.ConstraintViolation;
>> +import javax.validation.ElementKind;
>> +import javax.validation.ValidationException;
>> +import javax.validation.executable.ExecutableValidator;
>> +import javax.validation.groups.Default;
>> +import javax.validation.metadata.BeanDescriptor;
>> +import javax.validation.metadata.ConstraintDescriptor;
>> +import javax.validation.metadata.ElementDescriptor;
>> +import javax.validation.metadata.ParameterDescriptor;
>> +import javax.validation.metadata.PropertyDescriptor;
>> +
>> import org.apache.bval.DynamicMetaBean;
>> import org.apache.bval.MetaBeanFinder;
>> import org.apache.bval.jsr.groups.Group;
>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
>> import org.apache.commons.lang3.ClassUtils;
>> import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>> -
>> -import javax.validation.ConstraintDeclarationException;
>> -import javax.validation.ConstraintDefinitionException;
>> -import javax.validation.ConstraintTarget;
>> -import javax.validation.ConstraintViolation;
>> -import javax.validation.ElementKind;
>> -import javax.validation.ValidationException;
>> -import javax.validation.executable.ExecutableValidator;
>> -import javax.validation.groups.Default;
>> -import javax.validation.metadata.BeanDescriptor;
>> -import javax.validation.metadata.ConstraintDescriptor;
>> -import javax.validation.metadata.ElementDescriptor;
>> -import javax.validation.metadata.ParameterDescriptor;
>> -import javax.validation.metadata.PropertyDescriptor;
>> -import java.lang.reflect.Constructor;
>> -import java.lang.reflect.Member;
>> -import java.lang.reflect.Method;
>> -import java.lang.reflect.Modifier;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -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 org.apache.commons.weaver.privilizer.Privileged;
>>
>> // TODO: centralize treatMapsLikeBeans
>>
>> @@ -312,18 +312,8 @@ public class ClassValidator implements C
>> return this;
>> }
>>
>> + @Privileged
>> private <T> T newInstance(final Class<T> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return doNewInstance(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>> - public T run() {
>> - return doNewInstance(cls);
>> - }
>> - });
>> - }
>> -
>> - private <T> T doNewInstance(final Class<T> cls) {
>> try {
>> Constructor<T> cons =
>> cls.getConstructor(ApacheFactoryContext.class);
>> if (!cons.isAccessible()) {
>> @@ -399,6 +389,7 @@ public class ClassValidator implements C
>>
>> // For each owner in the hierarchy
>> for (final Class<?> owner : classHierarchy) {
>> +
>> context.setCurrentOwner(owner);
>>
>> int numViolations = result.violationsSize();
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,11 +18,16 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.bval.cdi.BValExtension;
>> -import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>> -import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>> -import org.apache.bval.jsr.util.IOs;
>> -import org.apache.bval.jsr.xml.ValidationParser;
>> +import java.io.Closeable;
>> +import java.io.IOException;
>> +import java.io.InputStream;
>> +import java.util.Collection;
>> +import java.util.HashMap;
>> +import java.util.HashSet;
>> +import java.util.List;
>> +import java.util.Map;
>> +import java.util.Set;
>> +import java.util.concurrent.CopyOnWriteArrayList;
>>
>> import javax.validation.BootstrapConfiguration;
>> import javax.validation.ConstraintValidatorFactory;
>> @@ -36,18 +41,13 @@ import javax.validation.executable.Execu
>> import javax.validation.spi.BootstrapState;
>> import javax.validation.spi.ConfigurationState;
>> import javax.validation.spi.ValidationProvider;
>> -import java.io.Closeable;
>> -import java.io.IOException;
>> -import java.io.InputStream;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -import java.util.Collection;
>> -import java.util.HashMap;
>> -import java.util.HashSet;
>> -import java.util.List;
>> -import java.util.Map;
>> -import java.util.Set;
>> -import java.util.concurrent.CopyOnWriteArrayList;
>> +
>> +import org.apache.bval.cdi.BValExtension;
>> +import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>> +import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>> +import org.apache.bval.jsr.util.IOs;
>> +import org.apache.bval.jsr.xml.ValidationParser;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>>
>> /**
>> * Description: used to configure apache-validation for jsr.
>> @@ -98,7 +98,7 @@ public class ConfigurationImpl implement
>>
>> protected Collection<ExecutableType> executableValidation;
>>
>> - private Collection<BValExtension.Releasable> releasables = new
>> CopyOnWriteArrayList<BValExtension.Releasable>();
>> + private Collection<BValExtension.Releasable<?>> releasables = new
>> CopyOnWriteArrayList<BValExtension.Releasable<?>>();
>>
>> private boolean beforeCdi = false;
>>
>> @@ -305,27 +305,18 @@ public class ConfigurationImpl implement
>> * @throws ValidationException if the ValidatorFactory cannot be built
>> */
>> public ValidatorFactory buildValidatorFactory() {
>> - if (System.getSecurityManager() == null) {
>> - return doPrivBuildValidatorFactory(this);
>> - }
>> - return AccessController.doPrivileged(new
>> PrivilegedAction<ValidatorFactory>() {
>> - public ValidatorFactory run() {
>> - return
>> doPrivBuildValidatorFactory(ConfigurationImpl.this);
>> - }
>> - });
>> + return doBuildValidatorFactory();
>> }
>>
>> - public ValidatorFactory doPrivBuildValidatorFactory(final
>> ConfigurationImpl impl) {
>> + @Privileged
>> + private ValidatorFactory doBuildValidatorFactory() {
>> prepare();
>> parser.ensureValidatorFactoryCanBeBuilt();
>> - if (provider != null) {
>> - return provider.buildValidatorFactory(impl);
>> - } else {
>> - return findProvider().buildValidatorFactory(impl);
>> - }
>> + final ValidationProvider<?> useProvider = provider == null ?
>> findProvider() : provider;
>> + return useProvider.buildValidatorFactory(this);
>> }
>>
>> - public ConfigurationImpl prepare() {
>> + private ConfigurationImpl prepare() {
>> if (prepared) {
>> return this;
>> }
>> @@ -466,38 +457,19 @@ public class ConfigurationImpl implement
>> };
>> }
>>
>> + @Privileged
>> private <T> T newInstance(final Class<T> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return createInstance(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>> - public T run() {
>> - return createInstance(cls);
>> - }
>> - });
>> - }
>> -
>> - private <T> T createInstance(final Class<T> cls) {
>> try {
>> final BValExtension.Releasable<T> releasable =
>> BValExtension.inject(cls);
>> releasables.add(releasable);
>> return releasable.getInstance();
>> } catch (final Exception e) {
>> - try {
>> - return cls.newInstance();
>> - } catch (final InstantiationException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - } catch (final IllegalAccessException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - }
>> } catch (final NoClassDefFoundError error) {
>> - try {
>> - return cls.newInstance();
>> - } catch (final InstantiationException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - } catch (final IllegalAccessException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - }
>> + }
>> + try {
>> + return cls.newInstance();
>> + } catch (final Exception e) {
>> + throw new ValidationException(e.getMessage(), e);
>> }
>> }
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,15 +18,17 @@ package org.apache.bval.jsr;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintTarget;
>> import javax.validation.Payload;
>> +
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Method;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.Map;
>> import java.util.concurrent.ConcurrentHashMap;
>> import java.util.concurrent.ConcurrentMap;
>> @@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
>> /**
>> * "message"
>> */
>> - MESSAGE(false, "message"),
>> + MESSAGE("message"),
>>
>> /**
>> * "groups"
>> */
>> - GROUPS(false, "groups"),
>> + GROUPS("groups"),
>>
>> /**
>> * "payload"
>> */
>> - PAYLOAD(false, "payload"),
>> + PAYLOAD("payload"),
>>
>> /**
>> * "validationAppliesTo"
>> */
>> - VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
>> + VALIDATION_APPLIES_TO("validationAppliesTo"),
>>
>> /**
>> * "value" for multi-valued constraints
>> */
>> - VALUE(true, "value");
>> + VALUE("value");
>>
>> @SuppressWarnings("unused")
>> private static class Types {
>> @@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
>> }
>>
>> private final Type type;
>> - private final boolean permitNullDefaultValue;
>> private final String attributeName;
>>
>> - private ConstraintAnnotationAttributes(final boolean
>> permitNullDefaultValue, final String name) {
>> - this.permitNullDefaultValue = permitNullDefaultValue;
>> + private ConstraintAnnotationAttributes(final String name) {
>> this.attributeName = name;
>> try {
>> this.type =
>> Types.class.getDeclaredField(getAttributeName()).getGenericType();
>> @@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
>>
>> public <C extends Annotation> Worker<C> analyze(final Class<C> clazz)
>> {
>> if (clazz.getName().startsWith("javax.validation.constraint."))
>> { // cache only APIs classes to avoid memory leaks
>> + @SuppressWarnings("unchecked")
>> Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
>> if (w == null) {
>> w = new Worker<C>(clazz);
>> @@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
>> throw new RuntimeException("Impossible normally");
>> }
>> }
>> +
>> + @Privilizing(@CallTo(Reflection.class))
>> public class Worker<C extends Annotation> {
>>
>> public final Method method;
>> @@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
>> if (found != null) {
>> return found;
>> }
>> - final Method m =
>> Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
>> + final Method m =
>> Reflection.getPublicMethod(constraintType, attributeName);
>> if (m == null) {
>> cache.putIfAbsent(attributeName, NULL_METHOD);
>> return null;
>> @@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
>> return method != null && method != NULL_METHOD;
>> }
>>
>> - public Object read(final Annotation constraint) {
>> - if (System.getSecurityManager() == null) {
>> - return doInvoke(constraint);
>> - }
>> - return AccessController.doPrivileged(new
>> PrivilegedAction<Object>() {
>> - public Object run() {
>> - return doInvoke(constraint);
>> - }
>> - });
>> + public <T> T read(final Annotation constraint) {
>> + @SuppressWarnings("unchecked")
>> + final T result = (T) doInvoke(constraint);
>> + return result;
>> }
>>
>> + @Privileged
>> private Object doInvoke(final Annotation constraint) {
>> try {
>> return method.invoke(constraint);
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,12 +18,9 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import javax.validation.ConstraintValidator;
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.lang.annotation.Annotation;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.HashMap;
>> import java.util.LinkedList;
>> import java.util.Map;
>> @@ -32,10 +29,17 @@ import java.util.StringTokenizer;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> +import javax.validation.ConstraintValidator;
>> +
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> /**
>> * Description: Provides access to the default constraints/validator
>> implementation classes built into the framework.
>> * These are configured in DefaultConstraints.properties.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ConstraintDefaults {
>> private static final Logger log =
>> Logger.getLogger(ConstraintDefaults.class.getName());
>> private static final String DEFAULT_CONSTRAINTS =
>> @@ -101,31 +105,11 @@ public class ConstraintDefaults {
>> while (tokens.hasMoreTokens()) {
>> final String eachClassName = tokens.nextToken();
>>
>> - Class<?> constraintValidatorClass;
>> - if (System.getSecurityManager() == null) {
>> - try {
>> - constraintValidatorClass =
>> Class.forName(eachClassName, true, classloader);
>> - } catch (final ClassNotFoundException e) {
>> - log.log(Level.SEVERE, String.format("Cannot
>> find class %s", eachClassName), e);
>> - constraintValidatorClass = null;
>> - }
>> - } else {
>> - constraintValidatorClass =
>> AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
>> - public Class<?> run() {
>> - try {
>> - return Class.forName(eachClassName,
>> true, classloader);
>> - } catch (final ClassNotFoundException e) {
>> - log.log(Level.SEVERE,
>> String.format("Cannot find class %s", eachClassName), e);
>> - return null;
>> - }
>> - }
>> - });
>> - }
>> -
>> - if (constraintValidatorClass != null) {
>> - classes.add(constraintValidatorClass);
>> + try {
>> + classes.add(Reflection.getClass(classloader,
>> eachClassName));
>> + } catch (Exception e) {
>> + log.log(Level.SEVERE, String.format("Cannot find
>> class %s", eachClassName), e);
>> }
>> -
>> }
>>
>> loadedConstraints.put((String) entry.getKey(),
>> classes.toArray(new Class[classes.size()]));
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> Wed Oct 1 04:37:36 2014
>> @@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
>> }
>>
>> private <A extends Annotation, T> ConstraintValidator<A, ? super
>> T> getConstraintValidator(A annotation,
>> -
>> Class<? extends ConstraintValidator<A, ?>>[]
>> constraintClasses, Class<?> owner, AccessStrategy access) {
>> + Class<? extends ConstraintValidator<A, ?>>[]
>> constraintClasses, Class<?> owner, AccessStrategy access) {
>> if (constraintClasses != null && constraintClasses.length > 0) {
>> Type type = determineTargetedType(owner, access);
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> Wed Oct 1 04:37:36 2014
>> @@ -19,8 +19,11 @@ package org.apache.bval.jsr;
>> import org.apache.bval.el.MessageEvaluator;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.MessageInterpolator;
>> +
>> import java.util.Locale;
>> import java.util.Map;
>> import java.util.MissingResourceException;
>> @@ -37,6 +40,7 @@ import java.util.regex.Pattern;
>> * into human-readable messages. It uses ResourceBundles to find the
>> messages.
>> * This class is threadsafe.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultMessageInterpolator implements MessageInterpolator {
>> private static final Logger log =
>> Logger.getLogger(DefaultMessageInterpolator.class.getName());
>> private static final boolean LOG_FINEST =
>> log.isLoggable(Level.FINEST);
>> @@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
>> */
>> private ResourceBundle getFileBasedResourceBundle(Locale locale) {
>> ResourceBundle rb = null;
>> - final ClassLoader classLoader =
>> Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
>> + final ClassLoader classLoader =
>> Reflection.getClassLoader(DefaultMessageInterpolator.class);
>> if (classLoader != null) {
>> rb = loadBundle(classLoader, locale,
>> USER_VALIDATION_MESSAGES + " not found by thread
>> local classloader");
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,19 +17,23 @@
>> package org.apache.bval.jsr;
>>
>>
>> -import javax.validation.ValidationException;
>> -import javax.validation.ValidationProviderResolver;
>> -import javax.validation.spi.ValidationProvider;
>> import java.io.BufferedReader;
>> import java.io.IOException;
>> import java.io.InputStreamReader;
>> import java.net.URL;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.ArrayList;
>> import java.util.Enumeration;
>> import java.util.List;
>>
>> +import javax.validation.ValidationException;
>> +import javax.validation.ValidationProviderResolver;
>> +import javax.validation.spi.ValidationProvider;
>> +
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultValidationProviderResolver implements
>> ValidationProviderResolver {
>>
>> //TODO - Spec recommends caching per classloader
>> @@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
>> // find all service provider cfgs
>> Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
>> while (cfgs.hasMoreElements()) {
>> - URL url = cfgs.nextElement();
>> + final URL url = cfgs.nextElement();
>> BufferedReader br = null;
>> try {
>> br = new BufferedReader(new
>> InputStreamReader(url.openStream()), 256);
>> @@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
>> if (!line.startsWith("#")) {
>> try {
>> // try loading the specified class
>> - final Class<?> provider =
>> cl.loadClass(line);
>> + @SuppressWarnings("rawtypes")
>> + final Class<? extends
>> ValidationProvider> providerType =
>> +
>> cl.loadClass(line).asSubclass(ValidationProvider.class);
>> // create an instance to return
>> - final ValidationProvider<?> vp;
>> - if (System.getSecurityManager() == null) {
>> - try {
>> - vp = (ValidationProvider<?>)
>> provider.newInstance();
>> - } catch (final Exception ex) {
>> - throw new
>> ValidationException("Cannot instantiate : " + provider, ex);
>> - }
>> - } else {
>> - vp =
>> AccessController.doPrivileged(new
>> PrivilegedAction<ValidationProvider<?>>() {
>> - public ValidationProvider<?>
>> run() {
>> - try {
>> - return
>> (ValidationProvider<?>) provider.newInstance();
>> - } catch (final Exception ex) {
>> - throw new
>> ValidationException("Cannot instantiate : " + provider, ex);
>> - }
>> - }
>> - });
>> - }
>> - providers.add(vp);
>> +
>>
>> providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
>>
>> } catch (ClassNotFoundException e) {
>> throw new ValidationException("Failed
>> to load provider " +
>> @@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
>> }
>> line = br.readLine();
>> }
>> - br.close();
>> } catch (IOException e) {
>> throw new ValidationException("Error trying to
>> read " + url, e);
>> } finally {
>> - if (br != null)
>> + if (br != null) {
>> br.close();
>> + }
>> }
>> }
>> } catch (IOException e) {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> Wed Oct 1 04:37:36 2014
>> @@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
>> import org.apache.bval.util.FieldAccess;
>> import org.apache.bval.util.MethodAccess;
>> import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.ConstraintDeclarationException;
>> import javax.validation.GroupDefinitionException;
>> import javax.validation.GroupSequence;
>> import javax.validation.groups.ConvertGroup;
>> import javax.validation.groups.Default;
>> +
>> import java.io.Serializable;
>> import java.lang.annotation.Annotation;
>> import java.lang.annotation.ElementType;
>> @@ -55,6 +58,7 @@ import java.util.logging.Logger;
>> * Description: process the class annotations for JSR303 constraint
>> validations to build the MetaBean with information
>> * from annotations and JSR303 constraint mappings (defined in xml)<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class JsrMetaBeanFactory implements MetaBeanFactory {
>> /** Shared log instance */
>> // of dubious utility as it's static :/
>> @@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
>> processGroupSequence(beanClass, metabean);
>>
>> // process class, superclasses and interfaces
>> - List<Class<?>> classSequence = new ArrayList<Class<?>>();
>> - ClassHelper.fillFullClassHierarchyAsList(classSequence,
>> beanClass);
>> + final List<Class<?>> classSequence =
>> + ClassHelper.fillFullClassHierarchyAsList(new
>> ArrayList<Class<?>>(), beanClass);
>>
>> // start with superclasses and go down the hierarchy so that
>> // the child classes are processed last to have the chance to
>> @@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
>>
>> final Collection<String> missingValid = new ArrayList<String>();
>>
>> - final Field[] fields =
>> Reflection.INSTANCE.getDeclaredFields(beanClass);
>> + final Field[] fields = Reflection.getDeclaredFields(beanClass);
>> for (final Field field : fields) {
>> MetaProperty metaProperty =
>> metabean.getProperty(field.getName());
>> // create a property for those fields for which there is not
>> yet a
>> @@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
>> }
>> }
>> }
>> - final Method[] methods =
>> Reflection.INSTANCE.getDeclaredMethods(beanClass);
>> + final Method[] methods = Reflection.getDeclaredMethods(beanClass);
>> for (final Method method : methods) {
>> if (method.isSynthetic() || method.isBridge()) {
>> continue;
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Path;
>> import javax.validation.TraversableResolver;
>> +
>> import java.lang.annotation.ElementType;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> /** @see javax.validation.TraversableResolver */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultTraversableResolver implements
>> TraversableResolver, CachingRelevant {
>> private static final Logger log =
>> Logger.getLogger(DefaultTraversableResolver.class.getName());
>> private static final boolean LOG_FINEST =
>> log.isLoggable(Level.FINEST);
>> @@ -71,9 +75,9 @@ public class DefaultTraversableResolver
>> /** Tries to load detect and load JPA. */
>> @SuppressWarnings("unchecked")
>> private void initJpa() {
>> - final ClassLoader classLoader = getClassLoader();
>> + final ClassLoader classLoader =
>> Reflection.getClassLoader(DefaultTraversableResolver.class);
>> try {
>> - Reflection.INSTANCE.getClass(classLoader,
>> PERSISTENCE_UTIL_CLASSNAME);
>> + Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
>> if (LOG_FINEST) {
>> log.log(Level.FINEST, String.format("Found %s on
>> classpath.", PERSISTENCE_UTIL_CLASSNAME));
>> }
>> @@ -101,9 +105,4 @@ public class DefaultTraversableResolver
>> public boolean needsCaching() {
>> return jpaTR != null &&
>> CachingTraversableResolver.needsCaching(jpaTR);
>> }
>> -
>> - private static ClassLoader getClassLoader()
>> - {
>> - return
>> Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
>> - }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> Wed Oct 1 04:37:36 2014
>> @@ -43,6 +43,7 @@ public class ClassHelper {
>> * The current list of classes in the hierarchy.
>> * @param clazz
>> */
>> + @Deprecated
>> static public List<Class<?>>
>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
>> clazz) {
>> if (clazz == null || clazz == Object.class || clazz ==
>> Serializable.class || clazz == Cloneable.class) {
>> return allClasses;
>> @@ -58,26 +59,4 @@ public class ClassHelper {
>> return allClasses;
>> }
>>
>> - /**
>> - * @deprecated Will be removed for security reasons.
>> - *
>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>> - */
>> - @Deprecated
>> - public static Class<?> getClass(String className) throws
>> ClassNotFoundException {
>> - return getClass(className, true);
>> - }
>> -
>> - /**
>> - * @deprecated Will be removed for security reasons.
>> - *
>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>> - */
>> - @Deprecated
>> - public static Class<?> getClass(String className, boolean
>> initialize) throws ClassNotFoundException {
>> - ClassLoader loader =
>> Thread.currentThread().getContextClassLoader();
>> - if (loader == null)
>> - loader = ClassHelper.class.getClassLoader();
>> - return ClassUtils.getClass(loader, className, initialize);
>> - }
>> }
>>
Re: Fwd: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Matt Benson <gu...@gmail.com>.
Sorry; I ran the old TCK. I'll check on this later. I think that by default
we should leave things as we find them. We can consider including a
configuration option to skip the unset for efficiency, or just skip it
always in environments with no SecurityManager.
Matt
On Dec 6, 2014 2:11 AM, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
> Hi Matt,
>
> I have 2 questions:
> 1) surely obvious but I dont get why you re-set the accessible (if
> (mustSet)). While we need it accessible we can keep it set to true no?
> 2) more important: tck are broken now Tests run: 758, Failures: 13,
> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>
>
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
>
>
>
> ---------- Forwarded message ----------
> From: <mb...@apache.org>
> Date: 2014-10-01 6:37 GMT+02:00
> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
> To: commits@bval.apache.org
>
>
> Author: mbenson
> Date: Wed Oct 1 04:37:36 2014
> New Revision: 1628598
>
> URL: http://svn.apache.org/r1628598
> Log:
> use commons weaver/privilizer
>
> Removed:
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
> Modified:
> bval/branches/bval-11/bval-core/pom.xml
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> bval/branches/bval-11/bval-jsr/ (props changed)
> bval/branches/bval-11/bval-jsr/pom.xml
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
>
> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
> bval/branches/bval-11/bval-tck11/ (props changed)
> bval/branches/bval-11/bval-xstream/pom.xml
>
> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
> bval/branches/bval-11/pom.xml
>
> Modified: bval/branches/bval-11/bval-core/pom.xml
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> --- bval/branches/bval-11/bval-core/pom.xml (original)
> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
> @@ -46,6 +46,10 @@
> <artifactId>commons-beanutils-core</artifactId>
> </dependency>
> <dependency>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-privilizer-api</artifactId>
> + </dependency>
> + <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <scope>test</scope>
> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
> </execution>
> </executions>
> </plugin>
> + <plugin>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-maven-plugin</artifactId>
> + </plugin>
> </plugins>
> <pluginManagement>
> <plugins>
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,13 +16,11 @@
> */
> package org.apache.bval;
>
> -import org.apache.bval.util.AccessStrategy;
> -
> import java.lang.annotation.ElementType;
> import java.lang.reflect.Constructor;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> +
> +import org.apache.bval.util.AccessStrategy;
>
> public class ConstructorAccess extends AccessStrategy {
>
> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>
> public ConstructorAccess(final Constructor<?> constructor) {
> this.constructor = constructor;
> - if (!constructor.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - constructor.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - constructor.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(constructor);
> }
>
> @Override
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> Wed Oct 1 04:37:36 2014
> @@ -17,6 +17,8 @@
> package org.apache.bval.model;
>
> import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import java.beans.Introspector;
> import java.lang.reflect.Constructor;
> @@ -34,6 +36,7 @@ import java.util.TreeMap;
> *
> * @see MetaProperty
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class MetaBean extends FeaturesCapable implements Cloneable,
> Features.Bean {
> private static final long serialVersionUID = 2L;
>
> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
> int i = 0;
> Class<?> clazz = beanClass;
> while (clazz != null && clazz != Object.class) {
> - for (final Field f :
> Reflection.INSTANCE.getDeclaredFields(clazz)) {
> + for (final Field f : Reflection.getDeclaredFields(clazz))
> {
> i++;
> final String name = f.getName();
> if (!fields.containsKey(name)) {
> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
> protected MethodComparator(final Class<?> beanClass) {
> Class<?> clazz = beanClass;
> while (clazz != null && clazz != Object.class) {
> - for (final Method m :
> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
> + for (final Method m :
> Reflection.getDeclaredMethods(clazz)) {
> methods.put(m,
> Arrays.hashCode(m.getParameterTypes()));
> }
> clazz = clazz.getSuperclass();
> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
> private final Map<Constructor<?>, Integer> constructors = new
> HashMap<Constructor<?>, Integer>();
>
> protected ConstructorComparator(final Class<?> beanClass) {
> - for (final Constructor<?> c :
> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
> + for (final Constructor<?> c :
> Reflection.getDeclaredConstructors(beanClass)) {
> constructors.put(c,
> Arrays.hashCode(c.getParameterTypes()));
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> Wed Oct 1 04:37:36 2014
> @@ -17,8 +17,11 @@
> package org.apache.bval.util;
>
> import java.lang.annotation.ElementType;
> +import java.lang.reflect.AccessibleObject;
> import java.lang.reflect.Type;
>
> +import org.apache.commons.weaver.privilizer.Privileged;
> +
> /**
> * Description: abstract class to encapsulate different strategies
> * to get the value of a Property. This class is designed such that
> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
> * @return String
> */
> public abstract String getPropertyName();
> +
> + /**
> + * Set {@code accessibleObject} as being accessible
> + * @param accessibleObject
> + */
> + protected boolean setAccessible(AccessibleObject accessibleObject) {
> + if (accessibleObject.isAccessible()) {
> + return false;
> + }
> + doSetAccessible(accessibleObject);
> + return true;
> + }
> +
> + @Privileged
> + private void doSetAccessible(AccessibleObject accessibleObject) {
> + accessibleObject.setAccessible(true);
> + }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> Wed Oct 1 04:37:36 2014
> @@ -18,18 +18,21 @@
> */
> package org.apache.bval.util;
>
> -import org.apache.bval.util.reflection.Reflection;
> -
> import java.io.IOException;
> import java.io.InputStream;
> import java.util.Properties;
> import java.util.StringTokenizer;
>
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> /**
> * This class contains version information for BVal.
> * It uses Ant's filter tokens to convert the template into a java
> * file with current information.
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class BValVersion {
>
> /** Project name */
> @@ -157,7 +160,7 @@ public class BValVersion {
> * {@inheritDoc}
> */
> public String toString() {
> - StringBuilder buf = new StringBuilder(80 * 40);
> + final StringBuilder buf = new StringBuilder(80 * 40);
> appendBanner(buf);
> buf.append("\n");
>
> @@ -169,8 +172,7 @@ public class BValVersion {
> appendProperty("java.vendor", buf).append("\n\n");
>
> buf.append("java.class.path:\n");
> - StringTokenizer tok = new StringTokenizer(
> - Reflection.INSTANCE.getProperty("java.class.path"));
> + final StringTokenizer tok = new
> StringTokenizer(Reflection.getProperty("java.class.path"));
> while (tok.hasMoreTokens()) {
> buf.append("\t").append(tok.nextToken());
> buf.append("\n");
> @@ -191,7 +193,6 @@ public class BValVersion {
> }
>
> private StringBuilder appendProperty(String prop, StringBuilder buf) {
> - return buf.append(prop).append(": ").append(
> - Reflection.INSTANCE.getProperty(prop));
> + return buf.append(prop).append(":
> ").append(Reflection.getProperty(prop));
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -19,8 +19,6 @@ package org.apache.bval.util;
> import java.lang.annotation.ElementType;
> import java.lang.reflect.Field;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
>
> /**
> * Description: direct field access strategy.<br/>
> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
> */
> public FieldAccess(final Field field) {
> this.field = field;
> - if (!field.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - field.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - field.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(field);
> }
>
> /**
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,6 +16,7 @@
> */
> package org.apache.bval.util;
>
> +import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
>
> import java.lang.annotation.ElementType;
> @@ -28,7 +29,7 @@ import java.util.Map;
> /**
> * {@link AccessStrategy} to get an indexed member of an {@link Iterable}
> or
> * array object.
> - */
> + */
> public class IndexedAccess extends AccessStrategy {
> private static final TypeVariable<?> ITERABLE_TYPE =
> Iterable.class.getTypeParameters()[0];
>
> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
> }
> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Iterable.class);
> - return typeArguments.containsKey(ITERABLE_TYPE) ?
> typeArguments.get(ITERABLE_TYPE) : Object.class;
> + return
> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> ITERABLE_TYPE), Object.class);
> }
> return null;
> }
>
> - private Type containerType;
> - private Integer index;
> + private final Type containerType;
> + private final Integer index;
>
> /**
> * Create a new IndexedAccessStrategy instance.
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,6 +16,7 @@
> */
> package org.apache.bval.util;
>
> +import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
>
> import java.lang.annotation.ElementType;
> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
> public static Type getJavaElementType(Type containerType) {
> if (TypeUtils.isAssignable(containerType, Map.class)) {
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Map.class);
> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
> + return
> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> MAP_TYPEVARS[1]), Object.class);
> }
> return null;
> }
>
> - private Type containerType;
> - private Object key;
> + private final Type containerType;
> + private final Object key;
>
> /**
> * Create a new KeyedAccess instance.
> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
> if (instance instanceof Map<?, ?>) {
> Map<?, ?> map = (Map<?, ?>) instance;
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Map.class);
> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
> + Type keyType = TypeUtils.unrollVariables(typeArguments,
> MAP_TYPEVARS[0]);
> if (key == null || keyType == null ||
> TypeUtils.isInstance(key, keyType)) {
> return map.get(key);
> }
> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
> */
> @Override
> public Type getJavaType() {
> - Type result = getJavaElementType(containerType);
> + final Type result = getJavaElementType(containerType);
> return result == null ? Object.class : result;
> }
>
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
>
> /**
> * Description: invoke a zero-argument method (getter)<br/>
> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
> public MethodAccess(String propertyName, final Method method) {
> this.method = method;
> this.propertyName = propertyName;
> - if (!method.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - method.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - method.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(method);
> }
>
> /**
> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
> * the method name id not according to the JavaBeans standard.
> */
> public static String getPropertyName(Method member) {
> - String name = null;
> - String methodName = member.getName();
> + final String methodName = member.getName();
> if (methodName.startsWith("is")) {
> - name = Introspector.decapitalize(methodName.substring(2));
> - } /* else if ( methodName.startsWith("has")) {
> - name = Introspector.decapitalize(
> methodName.substring( 3 ) );
> - } */
> - // setter annotation is NOT supported in the spec
> - /* else if (method.getName().startsWith("set") &&
> method.getParameterTypes().length == 1) {
> - propName =
> Introspector.decapitalize(method.getName().substring(3));
> - } */
> - else if (methodName.startsWith("get")) {
> - name = Introspector.decapitalize(methodName.substring(3));
> + return Introspector.decapitalize(methodName.substring(2));
> + }
> + if (methodName.startsWith("get")) {
> + return Introspector.decapitalize(methodName.substring(3));
> }
> - return name;
> + return null;
> }
>
> /**
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> Wed Oct 1 04:37:36 2014
> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
> import java.lang.reflect.Field;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> +import java.lang.reflect.Modifier;
>
> -public interface Reflection {
> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
> +import org.apache.commons.lang3.ClassUtils;
>
> - Class<?> getClass(final ClassLoader classLoader, final String
> className) throws Exception;
> -
> - Object getAnnotationValue(final Annotation annotation, final
> String name) throws IllegalAccessException, InvocationTargetException;
> +/**
> + * Security-agnostic "blueprint" class for reflection-related operations.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class Reflection {
> +
> + private static void setAccessibility(final Field field) {
> + // FIXME 2011-03-27 jw:
> + // - Why not simply call field.setAccessible(true)?
> + // - Fields can not be abstract.
> + if (!Modifier.isPublic(field.getModifiers())
> + || (Modifier.isPublic(field.getModifiers()) &&
> Modifier.isAbstract(field.getModifiers()))) {
> + field.setAccessible(true);
> + }
> + }
>
> - ClassLoader getClassLoader(final Class<?> clazz);
> + public static Class<?> getClass(final ClassLoader classLoader,
> final String className) throws Exception {
> + return ClassUtils.getClass(classLoader, className, true);
> + }
>
> - String getProperty(final String name);
> + public static Object getAnnotationValue(final Annotation
> annotation, final String name)
> + throws IllegalAccessException, InvocationTargetException {
> + Method valueMethod;
> + try {
> + valueMethod =
> annotation.annotationType().getDeclaredMethod(name);
> + } catch (final NoSuchMethodException ex) {
> + // do nothing
> + valueMethod = null;
> + }
> + if (null != valueMethod) {
> + if (!valueMethod.isAccessible()) {
> + valueMethod.setAccessible(true);
> + }
> + return valueMethod.invoke(annotation);
> + }
> + return null;
> + }
>
> - Field getDeclaredField(final Class<?> clazz, final String fieldName);
> + public static ClassLoader getClassLoader(final Class<?> clazz) {
> + final ClassLoader cl =
> Thread.currentThread().getContextClassLoader();
> + if (cl != null) {
> + return cl;
> + }
> + return clazz.getClassLoader();
> + }
>
> - Field[] getDeclaredFields(final Class<?> clazz);
> + public static String getProperty(final String name) {
> + return System.getProperty(name);
> + }
>
> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
> Class<?>... parameters);
> + public static Field getDeclaredField(final Class<?> clazz, final
> String fieldName) {
> + final Field f;
> + try {
> + f = clazz.getDeclaredField(fieldName);
> + } catch (final NoSuchFieldException e) {
> + return null;
> + }
> + setAccessibility(f);
> + return f;
> + }
>
> - Method getDeclaredMethod(final Class<?> clazz, final String name,
> final Class<?>... parameters);
> + public static Field[] getDeclaredFields(final Class<?> clazz) {
> + final Field[] fields = clazz.getDeclaredFields();
> + if (fields.length > 0) {
> + for (final Field f : fields) {
> + if (!f.isAccessible()) {
> + f.setAccessible(true);
> + }
> + }
> + }
> + return fields;
> + }
>
> - Method[] getDeclaredMethods(final Class<?> clazz);
> + public static Constructor<?> getDeclaredConstructor(final
> Class<?> clazz, final Class<?>... parameters) {
> + try {
> + return clazz.getDeclaredConstructor(parameters);
> + } catch (final NoSuchMethodException e) {
> + return null;
> + }
> + }
>
> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
> + public static Method getDeclaredMethod(final Class<?> clazz,
> final String name, final Class<?>... parameters) {
> + try {
> + return clazz.getDeclaredMethod(name, parameters);
> + } catch (final NoSuchMethodException e) {
> + return null;
> + }
> + }
>
> - Method getPublicMethod(final Class<?> clazz, final String methodName);
> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
> + return clazz.getDeclaredMethods();
> + }
>
> - <T> T newInstance(final Class<T> cls);
> + public static Constructor<?>[] getDeclaredConstructors(final
> Class<?> clazz) {
> + return clazz.getDeclaredConstructors();
> + }
>
> - public static class ReflectionFactory {
> - public static Reflection newInstance() {
> - if (System.getSecurityManager() != null) {
> - return new SecurityManagerReflection();
> - }
> - return new DefaultReflection();
> + public static Method getPublicMethod(final Class<?> clazz, final
> String methodName) {
> + try {
> + return clazz.getMethod(methodName);
> + } catch (final NoSuchMethodException e) {
> + return null;
> }
> + }
>
> - private ReflectionFactory() {
> - // no-op
> + public static <T> T newInstance(final Class<T> cls) {
> + try {
> + return cls.newInstance();
> + } catch (final Exception ex) {
> + throw new RuntimeException("Cannot instantiate : " + cls, ex);
> }
> }
> +
> }
>
> Propchange: bval/branches/bval-11/bval-jsr/
>
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Wed Oct 1 04:37:36 2014
> @@ -0,0 +1,4 @@
> +.classpath
> +.project
> +.settings
> +target
>
> Propchange: bval/branches/bval-11/bval-jsr/
>
> ------------------------------------------------------------------------------
> --- svn:mergeinfo (added)
> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
> @@ -0,0 +1,2 @@
> +/bval/trunk/bval-jsr303:1598345
> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>
> Modified: bval/branches/bval-11/bval-jsr/pom.xml
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
> @@ -79,13 +79,73 @@
> <plugins>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> + <artifactId>maven-resources-plugin</artifactId>
> + <executions>
> + <execution>
> + <id>default-testResources</id>
> + <phase />
> + <goals>
> + <goal>testResources</goal>
> + </goals>
> + </execution>
> + </executions>
> + </plugin>
> + <plugin>
> + <groupId>org.apache.maven.plugins</groupId>
> + <artifactId>maven-antrun-plugin</artifactId>
> + <executions>
> + <execution>
> + <id>filter-testResources</id>
> + <phase>process-test-resources</phase>
> + <goals>
> + <goal>run</goal>
> + </goals>
> + <configuration>
> + <target>
> + <mkdir
> dir="${project.build.testOutputDirectory}" />
> + <condition property="slash"
> value="/" else="">
> + <os family="windows" />
> + </condition>
> + <copy
> todir="${project.build.testOutputDirectory}" overwrite="true">
> + <fileset
> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
> + </copy>
> + <copy
> todir="${project.build.testOutputDirectory}" overwrite="true">
> + <fileset
> file="${project.basedir}/src/test/resources/java.policy" />
> + <filterchain>
> + <expandproperties />
> + <!-- append extra
> slash on windows only -->
> + <replacestring
> from="file://" to="file://${slash}" />
> + <replacestring
> from="${file.separator}" to="/" />
> + <!-- preserve
> system-specific file separator -->
> + <expandproperties>
> + <propertyset>
> + <propertyref
> prefix="project." />
> + <globmapper
> from="*" to="preserve.*" />
> + </propertyset>
> + </expandproperties>
> + </filterchain>
> + </copy>
> + </target>
> + </configuration>
> + </execution>
> + </executions>
> + <dependencies>
> + <dependency>
> + <groupId>org.apache.ant</groupId>
> + <artifactId>ant</artifactId>
> + <version>1.9.3</version>
> + </dependency>
> + </dependencies>
> + </plugin>
> + <plugin>
> + <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-surefire-plugin</artifactId>
> <configuration>
> <includes>
> <include>**/*Test.java</include>
> <include>**/*TestCase.java</include>
> </includes>
> - <argLine>-Djava.security.manager
>
> -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
> + <argLine>-Djava.security.manager
>
> -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
> </configuration>
> </plugin>
> </plugins>
> @@ -103,6 +163,10 @@
> <groupId>org.apache.commons</groupId>
> <artifactId>commons-lang3</artifactId>
> </dependency>
> + <dependency>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-privilizer-api</artifactId>
> + </dependency>
> <!-- optional dependencies -->
> <dependency>
> <groupId>org.apache.bval</groupId>
> @@ -235,6 +299,10 @@
> </includes>
> </configuration>
> </plugin>
> + <plugin>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-maven-plugin</artifactId>
> + </plugin>
> </plugins>
> </build>
> </project>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> Wed Oct 1 04:37:36 2014
> @@ -18,27 +18,9 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.bval.jsr.groups.GroupsComputer;
> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> -import org.apache.bval.util.AccessStrategy;
> -import org.apache.commons.lang3.reflect.TypeUtils;
> -
> -import javax.validation.Constraint;
> -import javax.validation.ConstraintDeclarationException;
> -import javax.validation.ConstraintDefinitionException;
> -import javax.validation.ConstraintTarget;
> -import javax.validation.ConstraintValidator;
> -import javax.validation.ConstraintValidatorFactory;
> -import javax.validation.OverridesAttribute;
> -import javax.validation.Payload;
> -import javax.validation.ReportAsSingleViolation;
> -import javax.validation.constraintvalidation.SupportedValidationTarget;
> -import javax.validation.constraintvalidation.ValidationTarget;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.Arrays;
> import java.util.Collections;
> import java.util.HashMap;
> @@ -50,6 +32,24 @@ import java.util.Set;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> +import javax.validation.Constraint;
> +import javax.validation.ConstraintDeclarationException;
> +import javax.validation.ConstraintDefinitionException;
> +import javax.validation.ConstraintTarget;
> +import javax.validation.ConstraintValidator;
> +import javax.validation.ConstraintValidatorFactory;
> +import javax.validation.OverridesAttribute;
> +import javax.validation.Payload;
> +import javax.validation.ReportAsSingleViolation;
> +import javax.validation.constraintvalidation.SupportedValidationTarget;
> +import javax.validation.constraintvalidation.ValidationTarget;
> +
> +import org.apache.bval.jsr.groups.GroupsComputer;
> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> +import org.apache.bval.util.AccessStrategy;
> +import org.apache.commons.lang3.reflect.TypeUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +
> /**
> * Description: helper class that builds a {@link ConstraintValidation}
> or its
> * composite constraint validations by parsing the jsr-annotations and
> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
> }
>
> /** build attributes, payload, groups from 'annotation' */
> + @Privileged
> private void buildFromAnnotation() {
> - if (constraintValidation.getAnnotation() != null) {
> - if (System.getSecurityManager() == null) {
> - doBuildFromAnnotations();
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Object>() {
> - public Object run() {
> - doBuildFromAnnotations();
> - return null;
> - }
> - });
> - }
> + if (constraintValidation.getAnnotation() == null) {
> + return;
> }
> - }
> -
> - private void doBuildFromAnnotations() {
> final Class<? extends Annotation> annotationType =
> constraintValidation.getAnnotation().annotationType();
>
> boolean foundPayload = false;
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> Wed Oct 1 04:37:36 2014
> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
> import org.apache.bval.util.AccessStrategy;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintValidator;
> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
> import javax.validation.constraintvalidation.ValidationTarget;
> import javax.validation.groups.ConvertGroup;
> import javax.validation.groups.Default;
> +
> import java.lang.annotation.Annotation;
> import java.lang.reflect.AnnotatedElement;
> import java.lang.reflect.InvocationTargetException;
> @@ -44,6 +47,7 @@ import java.util.Set;
> * annotations, including composed constraints and the resolution of
> * {@link ConstraintValidator} implementations.
> */
> +@Privilizing(@CallTo(Reflection.class))
> public final class AnnotationProcessor {
> /** {@link ApacheFactoryContext} used */
> private final ApacheFactoryContext factoryContext;
> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
> * annotated by @Constraint) whose value element has a return
> type of an
> * array of constraint annotations in a special way.
> */
> - final Object result =
> Reflection.INSTANCE.getAnnotationValue(annotation,
> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> + final Object result =
> + Reflection.getAnnotationValue(annotation,
> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> if (result instanceof Annotation[]) {
> boolean changed = false;
> for (final Annotation each : (Annotation[]) result) {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> Wed Oct 1 04:37:36 2014
> @@ -18,6 +18,18 @@
> */
> package org.apache.bval.jsr;
>
> +import java.lang.reflect.Constructor;
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +import javax.validation.ConstraintValidatorFactory;
> +import javax.validation.MessageInterpolator;
> +import javax.validation.ParameterNameProvider;
> +import javax.validation.TraversableResolver;
> +import javax.validation.ValidationException;
> +import javax.validation.Validator;
> +import javax.validation.ValidatorContext;
> +
> import org.apache.bval.IntrospectorMetaBeanFactory;
> import org.apache.bval.MetaBeanBuilder;
> import org.apache.bval.MetaBeanFactory;
> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
> import org.apache.bval.xml.XMLMetaBeanManager;
> import org.apache.commons.lang3.StringUtils;
> import org.apache.commons.lang3.reflect.ConstructorUtils;
> -
> -import javax.validation.ConstraintValidatorFactory;
> -import javax.validation.MessageInterpolator;
> -import javax.validation.ParameterNameProvider;
> -import javax.validation.TraversableResolver;
> -import javax.validation.ValidationException;
> -import javax.validation.Validator;
> -import javax.validation.ValidatorContext;
> -import java.lang.reflect.Constructor;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -import java.util.ArrayList;
> -import java.util.List;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> /**
> * Description: Represents the context that is used to create
> * <code>ClassValidator</code> instances.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ApacheFactoryContext implements ValidatorContext {
> private final ApacheValidatorFactory factory;
> private final MetaBeanFinder metaBeanFinder;
> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
> return new MetaBeanManager(new
> MetaBeanBuilder(builders.toArray(new
> MetaBeanFactory[builders.size()])));
> }
>
> + @Privileged
> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
> Class<F> cls) {
> - if (System.getSecurityManager() == null) {
> - return doCreateMetaBeanFactory(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<F>() {
> - public F run() {
> - return doCreateMetaBeanFactory(cls);
> - }
> - });
> - }
> -
> - private <F extends MetaBeanFactory> F
> doCreateMetaBeanFactory(final Class<F> cls) {
> try {
> Constructor<F> c =
> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> ApacheFactoryContext.this.getClass());
> if (c != null) {
> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>
> private Class<?> loadClass(final String className) {
> try {
> - return Class.forName(className, true,
> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
> + return Class.forName(className, true,
> Reflection.getClassLoader(ApacheFactoryContext.class));
> } catch (ClassNotFoundException ex) {
> throw new ValidationException("Unable to load class: " +
> className, ex);
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> Wed Oct 1 04:37:36 2014
> @@ -18,16 +18,15 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.commons.lang3.ClassUtils;
> -
> import javax.validation.Configuration;
> import javax.validation.ValidationException;
> import javax.validation.ValidatorFactory;
> import javax.validation.spi.BootstrapState;
> import javax.validation.spi.ConfigurationState;
> import javax.validation.spi.ValidationProvider;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> +
> +import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
>
> /**
> * Description: Implementation of {@link ValidationProvider} for jsr
> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
> // No privileges should be required to access the constructor,
> // because the classloader of ApacheValidationProvider will always
> // be an ancestor of the loader of validatorFactoryClass.
> - return (System.getSecurityManager() == null)
> - ? instantiateValidatorFactory(validatorFactoryClass,
> configuration) : AccessController
> - .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
> - public ValidatorFactory run() {
> - return
> instantiateValidatorFactory(validatorFactoryClass, configuration);
> - }
> - });
> + return instantiateValidatorFactory(validatorFactoryClass,
> configuration);
> }
>
> + @Privileged
> private static ValidatorFactory instantiateValidatorFactory(
> final Class<? extends ValidatorFactory>
> validatorFactoryClass, final ConfigurationState configuration) {
> try {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> Wed Oct 1 04:37:36 2014
> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
> * class is presumed have a constructor that accepts a single
> * {@link ConfigurationState} argument.
> */
> - String VALIDATOR_FACTORY_CLASSNAME =
> "apache.bval.validator-factory-classname";
> + String VALIDATOR_FACTORY_CLASSNAME =
> "apache.bval.validator-factory-classname";
>
> /**
> * Specifies the names, delimited by whitespace, of
> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
> * <li>default (no-args) constructor</li>
> * </ol>
> */
> - String METABEAN_FACTORY_CLASSNAMES =
> "apache.bval.metabean-factory-classnames";
> + String METABEAN_FACTORY_CLASSNAMES =
> "apache.bval.metabean-factory-classnames";
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> Wed Oct 1 04:37:36 2014
> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.ConstraintValidatorFactory;
> import javax.validation.MessageInterpolator;
> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
> import javax.validation.Validator;
> import javax.validation.ValidatorFactory;
> import javax.validation.spi.ConfigurationState;
> +
> import java.io.Closeable;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Modifier;
> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
> * validators.<br/>
> * This instance is not thread-safe.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ApacheValidatorFactory implements ValidatorFactory,
> Cloneable {
> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
> ConstraintDefaults();
> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>
> private <T> T newInstance(final Class<T> cls) {
> try {
> - return Reflection.INSTANCE.newInstance(cls);
> + return Reflection.newInstance(cls);
> } catch (final RuntimeException e) {
> throw new ValidationException(e.getCause());
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> Wed Oct 1 04:37:36 2014
> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
> import org.apache.bval.util.AccessStrategy;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintDeclarationException;
> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
> import javax.validation.metadata.ParameterDescriptor;
> import javax.validation.metadata.PropertyDescriptor;
> import javax.validation.metadata.ReturnValueDescriptor;
> +
> import java.beans.Introspector;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.AccessibleObject;
> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
> /**
> * Description: Implements {@link BeanDescriptor}.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class BeanDescriptorImpl extends ElementDescriptorImpl
> implements BeanDescriptor {
> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
> private static final Validation[] EMPTY_VALIDATION = new
> Validation[0];
> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
> Class<?> current = prop.getParentMetaBean().getBeanClass();
> while (current != null && current != Object.class &&
> (!methodFound || !fieldFound)) {
> if (!fieldFound) {
> - final Field field =
> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
> + final Field field =
> Reflection.getDeclaredField(current, prop.getName());
> if (field != null) {
> processConvertGroup(edesc, field);
> fieldFound = true;
> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>
> if (!methodFound) {
> final String name =
> Character.toUpperCase(prop.getName().charAt(0)) +
> prop.getName().substring(1);
> - Method m =
> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
> + Method m = Reflection.getDeclaredMethod(current, "get" +
> name);
> if (m != null) {
> processConvertGroup(edesc, m);
> methodFound = true;
> } else {
> - m =
> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
> + m = Reflection.getDeclaredMethod(current, "is" +
> name);
> if (m != null) {
> processConvertGroup(edesc, m);
> methodFound = true;
> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
> }
>
> private void buildConstructorConstraints() throws
> InvocationTargetException, IllegalAccessException {
> - for (final Constructor<?> cons :
> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
> {
> + for (final Constructor<?> cons :
> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
> final ConstructorDescriptorImpl consDesc = new
> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>
> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
> consDesc);
>
> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
> final List<Class<?>> classHierarchy =
> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
> current);
> classHierarchy.remove(current);
>
> - for (final Method method :
> Reflection.INSTANCE.getDeclaredMethods(current)) {
> + for (final Method method :
> Reflection.getDeclaredMethods(current)) {
> if (Modifier.isStatic(method.getModifiers()) ||
> method.isSynthetic()) {
> continue;
> }
> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>
> final Collection<Method> parents = new
> ArrayList<Method>();
> for (final Class<?> clazz : classHierarchy) {
> - final Method overriden =
> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> - if (overriden != null) {
> - parents.add(overriden);
> - processMethod(overriden, methodDesc);
> + final Method overridden =
> Reflection.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> + if (overridden != null) {
> + parents.add(overridden);
> + processMethod(overridden, methodDesc);
> }
> }
>
> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
> final Class<?>[] interfaces =
> method.getDeclaringClass().getInterfaces();
> final Collection<Method> itfWithThisMethod = new
> ArrayList<Method>();
> for (final Class<?> i : interfaces) {
> - final Method m =
> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
> method.getParameterTypes());
> + final Method m =
> Reflection.getDeclaredMethod(i, method.getName(),
> method.getParameterTypes());
> if (m != null) {
> itfWithThisMethod.add(m);
> }
> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
> returnValid++;
> }
> for (final Class<?> clazz : classHierarchy) {
> - final Method overriden =
> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> - if (overriden != null) {
> - if (overriden.getAnnotation(Valid.class) !=
> null) {
> + final Method overridden =
> Reflection.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> + if (overridden != null) {
> + if (overridden.getAnnotation(Valid.class)
> != null) {
> returnValid++;
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> Wed Oct 1 04:37:36 2014
> @@ -18,6 +18,33 @@
> */
> package org.apache.bval.jsr;
>
> +import java.lang.reflect.Constructor;
> +import java.lang.reflect.Member;
> +import java.lang.reflect.Method;
> +import java.lang.reflect.Modifier;
> +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 javax.validation.ConstraintDeclarationException;
> +import javax.validation.ConstraintDefinitionException;
> +import javax.validation.ConstraintTarget;
> +import javax.validation.ConstraintViolation;
> +import javax.validation.ElementKind;
> +import javax.validation.ValidationException;
> +import javax.validation.executable.ExecutableValidator;
> +import javax.validation.groups.Default;
> +import javax.validation.metadata.BeanDescriptor;
> +import javax.validation.metadata.ConstraintDescriptor;
> +import javax.validation.metadata.ElementDescriptor;
> +import javax.validation.metadata.ParameterDescriptor;
> +import javax.validation.metadata.PropertyDescriptor;
> +
> import org.apache.bval.DynamicMetaBean;
> import org.apache.bval.MetaBeanFinder;
> import org.apache.bval.jsr.groups.Group;
> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
> import org.apache.commons.lang3.ClassUtils;
> import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
> -
> -import javax.validation.ConstraintDeclarationException;
> -import javax.validation.ConstraintDefinitionException;
> -import javax.validation.ConstraintTarget;
> -import javax.validation.ConstraintViolation;
> -import javax.validation.ElementKind;
> -import javax.validation.ValidationException;
> -import javax.validation.executable.ExecutableValidator;
> -import javax.validation.groups.Default;
> -import javax.validation.metadata.BeanDescriptor;
> -import javax.validation.metadata.ConstraintDescriptor;
> -import javax.validation.metadata.ElementDescriptor;
> -import javax.validation.metadata.ParameterDescriptor;
> -import javax.validation.metadata.PropertyDescriptor;
> -import java.lang.reflect.Constructor;
> -import java.lang.reflect.Member;
> -import java.lang.reflect.Method;
> -import java.lang.reflect.Modifier;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -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 org.apache.commons.weaver.privilizer.Privileged;
>
> // TODO: centralize treatMapsLikeBeans
>
> @@ -312,18 +312,8 @@ public class ClassValidator implements C
> return this;
> }
>
> + @Privileged
> private <T> T newInstance(final Class<T> cls) {
> - if (System.getSecurityManager() == null) {
> - return doNewInstance(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
> - public T run() {
> - return doNewInstance(cls);
> - }
> - });
> - }
> -
> - private <T> T doNewInstance(final Class<T> cls) {
> try {
> Constructor<T> cons =
> cls.getConstructor(ApacheFactoryContext.class);
> if (!cons.isAccessible()) {
> @@ -399,6 +389,7 @@ public class ClassValidator implements C
>
> // For each owner in the hierarchy
> for (final Class<?> owner : classHierarchy) {
> +
> context.setCurrentOwner(owner);
>
> int numViolations = result.violationsSize();
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> Wed Oct 1 04:37:36 2014
> @@ -18,11 +18,16 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.bval.cdi.BValExtension;
> -import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
> -import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
> -import org.apache.bval.jsr.util.IOs;
> -import org.apache.bval.jsr.xml.ValidationParser;
> +import java.io.Closeable;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.util.Collection;
> +import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.Set;
> +import java.util.concurrent.CopyOnWriteArrayList;
>
> import javax.validation.BootstrapConfiguration;
> import javax.validation.ConstraintValidatorFactory;
> @@ -36,18 +41,13 @@ import javax.validation.executable.Execu
> import javax.validation.spi.BootstrapState;
> import javax.validation.spi.ConfigurationState;
> import javax.validation.spi.ValidationProvider;
> -import java.io.Closeable;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -import java.util.Collection;
> -import java.util.HashMap;
> -import java.util.HashSet;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.Set;
> -import java.util.concurrent.CopyOnWriteArrayList;
> +
> +import org.apache.bval.cdi.BValExtension;
> +import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
> +import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
> +import org.apache.bval.jsr.util.IOs;
> +import org.apache.bval.jsr.xml.ValidationParser;
> +import org.apache.commons.weaver.privilizer.Privileged;
>
> /**
> * Description: used to configure apache-validation for jsr.
> @@ -98,7 +98,7 @@ public class ConfigurationImpl implement
>
> protected Collection<ExecutableType> executableValidation;
>
> - private Collection<BValExtension.Releasable> releasables = new
> CopyOnWriteArrayList<BValExtension.Releasable>();
> + private Collection<BValExtension.Releasable<?>> releasables = new
> CopyOnWriteArrayList<BValExtension.Releasable<?>>();
>
> private boolean beforeCdi = false;
>
> @@ -305,27 +305,18 @@ public class ConfigurationImpl implement
> * @throws ValidationException if the ValidatorFactory cannot be built
> */
> public ValidatorFactory buildValidatorFactory() {
> - if (System.getSecurityManager() == null) {
> - return doPrivBuildValidatorFactory(this);
> - }
> - return AccessController.doPrivileged(new
> PrivilegedAction<ValidatorFactory>() {
> - public ValidatorFactory run() {
> - return
> doPrivBuildValidatorFactory(ConfigurationImpl.this);
> - }
> - });
> + return doBuildValidatorFactory();
> }
>
> - public ValidatorFactory doPrivBuildValidatorFactory(final
> ConfigurationImpl impl) {
> + @Privileged
> + private ValidatorFactory doBuildValidatorFactory() {
> prepare();
> parser.ensureValidatorFactoryCanBeBuilt();
> - if (provider != null) {
> - return provider.buildValidatorFactory(impl);
> - } else {
> - return findProvider().buildValidatorFactory(impl);
> - }
> + final ValidationProvider<?> useProvider = provider == null ?
> findProvider() : provider;
> + return useProvider.buildValidatorFactory(this);
> }
>
> - public ConfigurationImpl prepare() {
> + private ConfigurationImpl prepare() {
> if (prepared) {
> return this;
> }
> @@ -466,38 +457,19 @@ public class ConfigurationImpl implement
> };
> }
>
> + @Privileged
> private <T> T newInstance(final Class<T> cls) {
> - if (System.getSecurityManager() == null) {
> - return createInstance(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
> - public T run() {
> - return createInstance(cls);
> - }
> - });
> - }
> -
> - private <T> T createInstance(final Class<T> cls) {
> try {
> final BValExtension.Releasable<T> releasable =
> BValExtension.inject(cls);
> releasables.add(releasable);
> return releasable.getInstance();
> } catch (final Exception e) {
> - try {
> - return cls.newInstance();
> - } catch (final InstantiationException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - } catch (final IllegalAccessException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - }
> } catch (final NoClassDefFoundError error) {
> - try {
> - return cls.newInstance();
> - } catch (final InstantiationException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - } catch (final IllegalAccessException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - }
> + }
> + try {
> + return cls.newInstance();
> + } catch (final Exception e) {
> + throw new ValidationException(e.getMessage(), e);
> }
> }
>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> Wed Oct 1 04:37:36 2014
> @@ -18,15 +18,17 @@ package org.apache.bval.jsr;
>
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.reflect.TypeUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintTarget;
> import javax.validation.Payload;
> +
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Method;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.Map;
> import java.util.concurrent.ConcurrentHashMap;
> import java.util.concurrent.ConcurrentMap;
> @@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
> /**
> * "message"
> */
> - MESSAGE(false, "message"),
> + MESSAGE("message"),
>
> /**
> * "groups"
> */
> - GROUPS(false, "groups"),
> + GROUPS("groups"),
>
> /**
> * "payload"
> */
> - PAYLOAD(false, "payload"),
> + PAYLOAD("payload"),
>
> /**
> * "validationAppliesTo"
> */
> - VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
> + VALIDATION_APPLIES_TO("validationAppliesTo"),
>
> /**
> * "value" for multi-valued constraints
> */
> - VALUE(true, "value");
> + VALUE("value");
>
> @SuppressWarnings("unused")
> private static class Types {
> @@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
> }
>
> private final Type type;
> - private final boolean permitNullDefaultValue;
> private final String attributeName;
>
> - private ConstraintAnnotationAttributes(final boolean
> permitNullDefaultValue, final String name) {
> - this.permitNullDefaultValue = permitNullDefaultValue;
> + private ConstraintAnnotationAttributes(final String name) {
> this.attributeName = name;
> try {
> this.type =
> Types.class.getDeclaredField(getAttributeName()).getGenericType();
> @@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
>
> public <C extends Annotation> Worker<C> analyze(final Class<C> clazz)
> {
> if (clazz.getName().startsWith("javax.validation.constraint."))
> { // cache only APIs classes to avoid memory leaks
> + @SuppressWarnings("unchecked")
> Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
> if (w == null) {
> w = new Worker<C>(clazz);
> @@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
> throw new RuntimeException("Impossible normally");
> }
> }
> +
> + @Privilizing(@CallTo(Reflection.class))
> public class Worker<C extends Annotation> {
>
> public final Method method;
> @@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
> if (found != null) {
> return found;
> }
> - final Method m =
> Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
> + final Method m =
> Reflection.getPublicMethod(constraintType, attributeName);
> if (m == null) {
> cache.putIfAbsent(attributeName, NULL_METHOD);
> return null;
> @@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
> return method != null && method != NULL_METHOD;
> }
>
> - public Object read(final Annotation constraint) {
> - if (System.getSecurityManager() == null) {
> - return doInvoke(constraint);
> - }
> - return AccessController.doPrivileged(new
> PrivilegedAction<Object>() {
> - public Object run() {
> - return doInvoke(constraint);
> - }
> - });
> + public <T> T read(final Annotation constraint) {
> + @SuppressWarnings("unchecked")
> + final T result = (T) doInvoke(constraint);
> + return result;
> }
>
> + @Privileged
> private Object doInvoke(final Annotation constraint) {
> try {
> return method.invoke(constraint);
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> Wed Oct 1 04:37:36 2014
> @@ -18,12 +18,9 @@
> */
> package org.apache.bval.jsr;
>
> -import javax.validation.ConstraintValidator;
> import java.io.IOException;
> import java.io.InputStream;
> import java.lang.annotation.Annotation;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.HashMap;
> import java.util.LinkedList;
> import java.util.Map;
> @@ -32,10 +29,17 @@ import java.util.StringTokenizer;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> +import javax.validation.ConstraintValidator;
> +
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> /**
> * Description: Provides access to the default constraints/validator
> implementation classes built into the framework.
> * These are configured in DefaultConstraints.properties.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ConstraintDefaults {
> private static final Logger log =
> Logger.getLogger(ConstraintDefaults.class.getName());
> private static final String DEFAULT_CONSTRAINTS =
> @@ -101,31 +105,11 @@ public class ConstraintDefaults {
> while (tokens.hasMoreTokens()) {
> final String eachClassName = tokens.nextToken();
>
> - Class<?> constraintValidatorClass;
> - if (System.getSecurityManager() == null) {
> - try {
> - constraintValidatorClass =
> Class.forName(eachClassName, true, classloader);
> - } catch (final ClassNotFoundException e) {
> - log.log(Level.SEVERE, String.format("Cannot
> find class %s", eachClassName), e);
> - constraintValidatorClass = null;
> - }
> - } else {
> - constraintValidatorClass =
> AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
> - public Class<?> run() {
> - try {
> - return Class.forName(eachClassName,
> true, classloader);
> - } catch (final ClassNotFoundException e) {
> - log.log(Level.SEVERE,
> String.format("Cannot find class %s", eachClassName), e);
> - return null;
> - }
> - }
> - });
> - }
> -
> - if (constraintValidatorClass != null) {
> - classes.add(constraintValidatorClass);
> + try {
> + classes.add(Reflection.getClass(classloader,
> eachClassName));
> + } catch (Exception e) {
> + log.log(Level.SEVERE, String.format("Cannot find
> class %s", eachClassName), e);
> }
> -
> }
>
> loadedConstraints.put((String) entry.getKey(),
> classes.toArray(new Class[classes.size()]));
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> Wed Oct 1 04:37:36 2014
> @@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
> }
>
> private <A extends Annotation, T> ConstraintValidator<A, ? super
> T> getConstraintValidator(A annotation,
> -
> Class<? extends ConstraintValidator<A, ?>>[]
> constraintClasses, Class<?> owner, AccessStrategy access) {
> + Class<? extends ConstraintValidator<A, ?>>[]
> constraintClasses, Class<?> owner, AccessStrategy access) {
> if (constraintClasses != null && constraintClasses.length > 0) {
> Type type = determineTargetedType(owner, access);
>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> Wed Oct 1 04:37:36 2014
> @@ -19,8 +19,11 @@ package org.apache.bval.jsr;
> import org.apache.bval.el.MessageEvaluator;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.MessageInterpolator;
> +
> import java.util.Locale;
> import java.util.Map;
> import java.util.MissingResourceException;
> @@ -37,6 +40,7 @@ import java.util.regex.Pattern;
> * into human-readable messages. It uses ResourceBundles to find the
> messages.
> * This class is threadsafe.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultMessageInterpolator implements MessageInterpolator {
> private static final Logger log =
> Logger.getLogger(DefaultMessageInterpolator.class.getName());
> private static final boolean LOG_FINEST =
> log.isLoggable(Level.FINEST);
> @@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
> */
> private ResourceBundle getFileBasedResourceBundle(Locale locale) {
> ResourceBundle rb = null;
> - final ClassLoader classLoader =
> Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
> + final ClassLoader classLoader =
> Reflection.getClassLoader(DefaultMessageInterpolator.class);
> if (classLoader != null) {
> rb = loadBundle(classLoader, locale,
> USER_VALIDATION_MESSAGES + " not found by thread
> local classloader");
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> Wed Oct 1 04:37:36 2014
> @@ -17,19 +17,23 @@
> package org.apache.bval.jsr;
>
>
> -import javax.validation.ValidationException;
> -import javax.validation.ValidationProviderResolver;
> -import javax.validation.spi.ValidationProvider;
> import java.io.BufferedReader;
> import java.io.IOException;
> import java.io.InputStreamReader;
> import java.net.URL;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.ArrayList;
> import java.util.Enumeration;
> import java.util.List;
>
> +import javax.validation.ValidationException;
> +import javax.validation.ValidationProviderResolver;
> +import javax.validation.spi.ValidationProvider;
> +
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultValidationProviderResolver implements
> ValidationProviderResolver {
>
> //TODO - Spec recommends caching per classloader
> @@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
> // find all service provider cfgs
> Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
> while (cfgs.hasMoreElements()) {
> - URL url = cfgs.nextElement();
> + final URL url = cfgs.nextElement();
> BufferedReader br = null;
> try {
> br = new BufferedReader(new
> InputStreamReader(url.openStream()), 256);
> @@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
> if (!line.startsWith("#")) {
> try {
> // try loading the specified class
> - final Class<?> provider =
> cl.loadClass(line);
> + @SuppressWarnings("rawtypes")
> + final Class<? extends
> ValidationProvider> providerType =
> +
> cl.loadClass(line).asSubclass(ValidationProvider.class);
> // create an instance to return
> - final ValidationProvider<?> vp;
> - if (System.getSecurityManager() == null) {
> - try {
> - vp = (ValidationProvider<?>)
> provider.newInstance();
> - } catch (final Exception ex) {
> - throw new
> ValidationException("Cannot instantiate : " + provider, ex);
> - }
> - } else {
> - vp =
> AccessController.doPrivileged(new
> PrivilegedAction<ValidationProvider<?>>() {
> - public ValidationProvider<?>
> run() {
> - try {
> - return
> (ValidationProvider<?>) provider.newInstance();
> - } catch (final Exception ex) {
> - throw new
> ValidationException("Cannot instantiate : " + provider, ex);
> - }
> - }
> - });
> - }
> - providers.add(vp);
> +
>
> providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
>
> } catch (ClassNotFoundException e) {
> throw new ValidationException("Failed
> to load provider " +
> @@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
> }
> line = br.readLine();
> }
> - br.close();
> } catch (IOException e) {
> throw new ValidationException("Error trying to
> read " + url, e);
> } finally {
> - if (br != null)
> + if (br != null) {
> br.close();
> + }
> }
> }
> } catch (IOException e) {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> Wed Oct 1 04:37:36 2014
> @@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
> import org.apache.bval.util.FieldAccess;
> import org.apache.bval.util.MethodAccess;
> import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.ConstraintDeclarationException;
> import javax.validation.GroupDefinitionException;
> import javax.validation.GroupSequence;
> import javax.validation.groups.ConvertGroup;
> import javax.validation.groups.Default;
> +
> import java.io.Serializable;
> import java.lang.annotation.Annotation;
> import java.lang.annotation.ElementType;
> @@ -55,6 +58,7 @@ import java.util.logging.Logger;
> * Description: process the class annotations for JSR303 constraint
> validations to build the MetaBean with information
> * from annotations and JSR303 constraint mappings (defined in xml)<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class JsrMetaBeanFactory implements MetaBeanFactory {
> /** Shared log instance */
> // of dubious utility as it's static :/
> @@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
> processGroupSequence(beanClass, metabean);
>
> // process class, superclasses and interfaces
> - List<Class<?>> classSequence = new ArrayList<Class<?>>();
> - ClassHelper.fillFullClassHierarchyAsList(classSequence,
> beanClass);
> + final List<Class<?>> classSequence =
> + ClassHelper.fillFullClassHierarchyAsList(new
> ArrayList<Class<?>>(), beanClass);
>
> // start with superclasses and go down the hierarchy so that
> // the child classes are processed last to have the chance to
> @@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
>
> final Collection<String> missingValid = new ArrayList<String>();
>
> - final Field[] fields =
> Reflection.INSTANCE.getDeclaredFields(beanClass);
> + final Field[] fields = Reflection.getDeclaredFields(beanClass);
> for (final Field field : fields) {
> MetaProperty metaProperty =
> metabean.getProperty(field.getName());
> // create a property for those fields for which there is not
> yet a
> @@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
> }
> }
> }
> - final Method[] methods =
> Reflection.INSTANCE.getDeclaredMethods(beanClass);
> + final Method[] methods = Reflection.getDeclaredMethods(beanClass);
> for (final Method method : methods) {
> if (method.isSynthetic() || method.isBridge()) {
> continue;
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> Wed Oct 1 04:37:36 2014
> @@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
>
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Path;
> import javax.validation.TraversableResolver;
> +
> import java.lang.annotation.ElementType;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> /** @see javax.validation.TraversableResolver */
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultTraversableResolver implements
> TraversableResolver, CachingRelevant {
> private static final Logger log =
> Logger.getLogger(DefaultTraversableResolver.class.getName());
> private static final boolean LOG_FINEST =
> log.isLoggable(Level.FINEST);
> @@ -71,9 +75,9 @@ public class DefaultTraversableResolver
> /** Tries to load detect and load JPA. */
> @SuppressWarnings("unchecked")
> private void initJpa() {
> - final ClassLoader classLoader = getClassLoader();
> + final ClassLoader classLoader =
> Reflection.getClassLoader(DefaultTraversableResolver.class);
> try {
> - Reflection.INSTANCE.getClass(classLoader,
> PERSISTENCE_UTIL_CLASSNAME);
> + Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
> if (LOG_FINEST) {
> log.log(Level.FINEST, String.format("Found %s on
> classpath.", PERSISTENCE_UTIL_CLASSNAME));
> }
> @@ -101,9 +105,4 @@ public class DefaultTraversableResolver
> public boolean needsCaching() {
> return jpaTR != null &&
> CachingTraversableResolver.needsCaching(jpaTR);
> }
> -
> - private static ClassLoader getClassLoader()
> - {
> - return
> Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
> - }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> Wed Oct 1 04:37:36 2014
> @@ -43,6 +43,7 @@ public class ClassHelper {
> * The current list of classes in the hierarchy.
> * @param clazz
> */
> + @Deprecated
> static public List<Class<?>>
> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
> clazz) {
> if (clazz == null || clazz == Object.class || clazz ==
> Serializable.class || clazz == Cloneable.class) {
> return allClasses;
> @@ -58,26 +59,4 @@ public class ClassHelper {
> return allClasses;
> }
>
> - /**
> - * @deprecated Will be removed for security reasons.
> - *
> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
> - */
> - @Deprecated
> - public static Class<?> getClass(String className) throws
> ClassNotFoundException {
> - return getClass(className, true);
> - }
> -
> - /**
> - * @deprecated Will be removed for security reasons.
> - *
> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
> - */
> - @Deprecated
> - public static Class<?> getClass(String className, boolean
> initialize) throws ClassNotFoundException {
> - ClassLoader loader =
> Thread.currentThread().getContextClassLoader();
> - if (loader == null)
> - loader = ClassHelper.class.getClassLoader();
> - return ClassUtils.getClass(loader, className, initialize);
> - }
> }
>
Re: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
works fine with:
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e;
2014-06-17T15:51:42+02:00)
Maven home: /home/rmannibucau/softwares/apache-maven-3.2.2
Java version: 1.7.0_67, vendor: Oracle Corporation
Java home: /home/rmannibucau/softwares/jdk1.7.0_67/jre
Default locale: fr_FR, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-40-generic", arch: "amd64", family: "unix"
Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau
2014-12-06 15:51 GMT+01:00 Daniel Cunha <da...@gmail.com>:
> I have a same problem with JDK 7.
>
> On Sat, Dec 6, 2014 at 12:57 PM, Romain Manni-Bucau <rm...@gmail.com>
> wrote:
>
>> Yep
>>
>> Not an issue afaik
>> Le 6 déc. 2014 13:41, "Roman Stumm" <ro...@gmx.de> a écrit :
>>
>> > I can compile the trunk with java7, but not with java8:
>> >
>> > [ERROR] Failed to execute goal org.apache.maven.plugins:
>> > maven-compiler-plugin:2.3.2:compile (default-compile) on project
>> > bval-jsr303: Compilation failure: Compilation failure:
>> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
>> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[141,8] error:
>> > reference to validate is ambiguous
>> > [ERROR]
>> > [ERROR] L extends ValidationListener declared in method
>> > <L>validate(ValidationContext<L>)
>> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
>> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[180,35]
>> > error: reference to validate is ambiguous
>> > [ERROR]
>> > [ERROR] L extends ValidationListener declared in method
>> > <L>validate(ValidationContext<L>)
>> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
>> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[197,24]
>> > error: reference to validate is ambiguous
>> > [ERROR]
>> > [ERROR] L extends ValidationListener declared in method
>> > <L>validate(ValidationContext<L>)
>> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
>> >
>> main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java:[209,26]
>> > error: reference to validate is ambiguous
>> >
>> > Am 06.12.14 13:12, schrieb Daniel Cunha:
>> >
>> >> I try see something here.
>> >>
>> >> But I have a problem.. my laptop not build bval.
>> >> The build stop in Building Apache BVal :: bval-jsr 1.1.0-alpha-SNAPSHOT
>> >>
>> >> Linux 3.13.0 32bits
>> >> 4GB ram
>> >> JDK 1.8.0_25
>> >>
>> >> On Sat, Dec 6, 2014 at 8:08 AM, Romain Manni-Bucau <
>> rmannibucau@gmail.com
>> >> >
>> >> wrote:
>> >>
>> >> Hi Matt,
>> >>>
>> >>> I have 2 questions:
>> >>> 1) surely obvious but I dont get why you re-set the accessible (if
>> >>> (mustSet)). While we need it accessible we can keep it set to true no?
>> >>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
>> >>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>> >>>
>> >>>
>> >>> Romain Manni-Bucau
>> >>> @rmannibucau
>> >>> http://www.tomitribe.com
>> >>> http://rmannibucau.wordpress.com
>> >>> https://github.com/rmannibucau
>> >>>
>> >>>
>> >>>
>> >>> ---------- Forwarded message ----------
>> >>> From: <mb...@apache.org>
>> >>> Date: 2014-10-01 6:37 GMT+02:00
>> >>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
>> >>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
>> >>> To: commits@bval.apache.org
>> >>>
>> >>>
>> >>> Author: mbenson
>> >>> Date: Wed Oct 1 04:37:36 2014
>> >>> New Revision: 1628598
>> >>>
>> >>> URL: http://svn.apache.org/r1628598
>> >>> Log:
>> >>> use commons weaver/privilizer
>> >>>
>> >>> Removed:
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/DefaultReflection.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/SecurityManagerReflection.java
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/pom.xml
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/ConstructorAccess.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/model/MetaBean.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/AccessStrategy.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/BValVersion.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/FieldAccess.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/IndexedAccess.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/KeyedAccess.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/MethodAccess.java
>> >>>
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/Reflection.java
>> >>> bval/branches/bval-11/bval-jsr/ (props changed)
>> >>> bval/branches/bval-11/bval-jsr/pom.xml
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> AnnotationConstraintBuilder.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/AnnotationProcessor.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ApacheFactoryContext.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidationProvider.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorConfiguration.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorFactory.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/BeanDescriptorImpl.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ClassValidator.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ConfigurationImpl.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ConstraintAnnotationAttributes.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ConstraintDefaults.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ConstraintValidation.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> DefaultMessageInterpolator.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> DefaultValidationProviderResolver.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/JsrMetaBeanFactory.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/resolver/DefaultTraversableResolver.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/util/ClassHelper.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
>> >>> AnnotationProxyBuilder.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
>> >>> ValidationMappingParser.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/xml/ValidationParser.java
>> >>>
>> >>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/
>> >>> ValidationParserTest.java
>> >>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
>> >>> bval/branches/bval-11/bval-tck11/ (props changed)
>> >>> bval/branches/bval-11/bval-xstream/pom.xml
>> >>>
>> >>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/
>> >>> XMLMetaBeanManager.java
>> >>> bval/branches/bval-11/pom.xml
>> >>>
>> >>> Modified: bval/branches/bval-11/bval-core/pom.xml
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> --- bval/branches/bval-11/bval-core/pom.xml (original)
>> >>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
>> >>> @@ -46,6 +46,10 @@
>> >>> <artifactId>commons-beanutils-core</artifactId>
>> >>> </dependency>
>> >>> <dependency>
>> >>> + <groupId>org.apache.commons</groupId>
>> >>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> >>> + </dependency>
>> >>> + <dependency>
>> >>> <groupId>junit</groupId>
>> >>> <artifactId>junit</artifactId>
>> >>> <scope>test</scope>
>> >>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
>> >>> </execution>
>> >>> </executions>
>> >>> </plugin>
>> >>> + <plugin>
>> >>> + <groupId>org.apache.commons</groupId>
>> >>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> >>> + </plugin>
>> >>> </plugins>
>> >>> <pluginManagement>
>> >>> <plugins>
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/ConstructorAccess.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/ConstructorAccess.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/ConstructorAccess.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/ConstructorAccess.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -16,13 +16,11 @@
>> >>> */
>> >>> package org.apache.bval;
>> >>>
>> >>> -import org.apache.bval.util.AccessStrategy;
>> >>> -
>> >>> import java.lang.annotation.ElementType;
>> >>> import java.lang.reflect.Constructor;
>> >>> import java.lang.reflect.Type;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>> +
>> >>> +import org.apache.bval.util.AccessStrategy;
>> >>>
>> >>> public class ConstructorAccess extends AccessStrategy {
>> >>>
>> >>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>> >>>
>> >>> public ConstructorAccess(final Constructor<?> constructor) {
>> >>> this.constructor = constructor;
>> >>> - if (!constructor.isAccessible()) {
>> >>> - if (System.getSecurityManager() == null) {
>> >>> - constructor.setAccessible(true);
>> >>> - } else {
>> >>> - AccessController.doPrivileged(new
>> >>> PrivilegedAction<Void>() {
>> >>> - public Void run() {
>> >>> - constructor.setAccessible(true);
>> >>> - return null;
>> >>> - }
>> >>> - });
>> >>> - }
>> >>> - }
>> >>> + setAccessible(constructor);
>> >>> }
>> >>>
>> >>> @Override
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/model/MetaBean.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/model/MetaBean.java?rev=
>> >>> 1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/model/MetaBean.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/model/MetaBean.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -17,6 +17,8 @@
>> >>> package org.apache.bval.model;
>> >>>
>> >>> import org.apache.bval.util.reflection.Reflection;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>
>> >>> import java.beans.Introspector;
>> >>> import java.lang.reflect.Constructor;
>> >>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
>> >>> *
>> >>> * @see MetaProperty
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public class MetaBean extends FeaturesCapable implements Cloneable,
>> >>> Features.Bean {
>> >>> private static final long serialVersionUID = 2L;
>> >>>
>> >>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
>> >>> int i = 0;
>> >>> Class<?> clazz = beanClass;
>> >>> while (clazz != null && clazz != Object.class) {
>> >>> - for (final Field f :
>> >>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
>> >>> + for (final Field f : Reflection.getDeclaredFields(
>> >>> clazz))
>> >>> {
>> >>> i++;
>> >>> final String name = f.getName();
>> >>> if (!fields.containsKey(name)) {
>> >>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
>> >>> protected MethodComparator(final Class<?> beanClass) {
>> >>> Class<?> clazz = beanClass;
>> >>> while (clazz != null && clazz != Object.class) {
>> >>> - for (final Method m :
>> >>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
>> >>> + for (final Method m :
>> >>> Reflection.getDeclaredMethods(clazz)) {
>> >>> methods.put(m,
>> >>> Arrays.hashCode(m.getParameterTypes()));
>> >>> }
>> >>> clazz = clazz.getSuperclass();
>> >>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
>> >>> private final Map<Constructor<?>, Integer> constructors = new
>> >>> HashMap<Constructor<?>, Integer>();
>> >>>
>> >>> protected ConstructorComparator(final Class<?> beanClass) {
>> >>> - for (final Constructor<?> c :
>> >>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
>> >>> + for (final Constructor<?> c :
>> >>> Reflection.getDeclaredConstructors(beanClass)) {
>> >>> constructors.put(c,
>> >>> Arrays.hashCode(c.getParameterTypes()));
>> >>> }
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/AccessStrategy.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/AccessStrategy.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/AccessStrategy.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/AccessStrategy.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -17,8 +17,11 @@
>> >>> package org.apache.bval.util;
>> >>>
>> >>> import java.lang.annotation.ElementType;
>> >>> +import java.lang.reflect.AccessibleObject;
>> >>> import java.lang.reflect.Type;
>> >>>
>> >>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>> +
>> >>> /**
>> >>> * Description: abstract class to encapsulate different strategies
>> >>> * to get the value of a Property. This class is designed such that
>> >>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
>> >>> * @return String
>> >>> */
>> >>> public abstract String getPropertyName();
>> >>> +
>> >>> + /**
>> >>> + * Set {@code accessibleObject} as being accessible
>> >>> + * @param accessibleObject
>> >>> + */
>> >>> + protected boolean setAccessible(AccessibleObject
>> accessibleObject) {
>> >>> + if (accessibleObject.isAccessible()) {
>> >>> + return false;
>> >>> + }
>> >>> + doSetAccessible(accessibleObject);
>> >>> + return true;
>> >>> + }
>> >>> +
>> >>> + @Privileged
>> >>> + private void doSetAccessible(AccessibleObject accessibleObject) {
>> >>> + accessibleObject.setAccessible(true);
>> >>> + }
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/BValVersion.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/BValVersion.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/BValVersion.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/BValVersion.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -18,18 +18,21 @@
>> >>> */
>> >>> package org.apache.bval.util;
>> >>>
>> >>> -import org.apache.bval.util.reflection.Reflection;
>> >>> -
>> >>> import java.io.IOException;
>> >>> import java.io.InputStream;
>> >>> import java.util.Properties;
>> >>> import java.util.StringTokenizer;
>> >>>
>> >>> +import org.apache.bval.util.reflection.Reflection;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>> +
>> >>> /**
>> >>> * This class contains version information for BVal.
>> >>> * It uses Ant's filter tokens to convert the template into a java
>> >>> * file with current information.
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public class BValVersion {
>> >>>
>> >>> /** Project name */
>> >>> @@ -157,7 +160,7 @@ public class BValVersion {
>> >>> * {@inheritDoc}
>> >>> */
>> >>> public String toString() {
>> >>> - StringBuilder buf = new StringBuilder(80 * 40);
>> >>> + final StringBuilder buf = new StringBuilder(80 * 40);
>> >>> appendBanner(buf);
>> >>> buf.append("\n");
>> >>>
>> >>> @@ -169,8 +172,7 @@ public class BValVersion {
>> >>> appendProperty("java.vendor", buf).append("\n\n");
>> >>>
>> >>> buf.append("java.class.path:\n");
>> >>> - StringTokenizer tok = new StringTokenizer(
>> >>> - Reflection.INSTANCE.getProperty("java.class.path"));
>> >>> + final StringTokenizer tok = new
>> >>> StringTokenizer(Reflection.getProperty("java.class.path"));
>> >>> while (tok.hasMoreTokens()) {
>> >>> buf.append("\t").append(tok.nextToken());
>> >>> buf.append("\n");
>> >>> @@ -191,7 +193,6 @@ public class BValVersion {
>> >>> }
>> >>>
>> >>> private StringBuilder appendProperty(String prop, StringBuilder
>> >>> buf) {
>> >>> - return buf.append(prop).append(": ").append(
>> >>> - Reflection.INSTANCE.getProperty(prop));
>> >>> + return buf.append(prop).append(":
>> >>> ").append(Reflection.getProperty(prop));
>> >>> }
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/FieldAccess.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/FieldAccess.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/FieldAccess.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/FieldAccess.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
>> >>> import java.lang.annotation.ElementType;
>> >>> import java.lang.reflect.Field;
>> >>> import java.lang.reflect.Type;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>>
>> >>> /**
>> >>> * Description: direct field access strategy.<br/>
>> >>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
>> >>> */
>> >>> public FieldAccess(final Field field) {
>> >>> this.field = field;
>> >>> - if (!field.isAccessible()) {
>> >>> - if (System.getSecurityManager() == null) {
>> >>> - field.setAccessible(true);
>> >>> - } else {
>> >>> - AccessController.doPrivileged(new
>> >>> PrivilegedAction<Void>() {
>> >>> - public Void run() {
>> >>> - field.setAccessible(true);
>> >>> - return null;
>> >>> - }
>> >>> - });
>> >>> - }
>> >>> - }
>> >>> + setAccessible(field);
>> >>> }
>> >>>
>> >>> /**
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/IndexedAccess.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/IndexedAccess.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/IndexedAccess.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/IndexedAccess.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -16,6 +16,7 @@
>> >>> */
>> >>> package org.apache.bval.util;
>> >>>
>> >>> +import org.apache.commons.lang3.ObjectUtils;
>> >>> import org.apache.commons.lang3.reflect.TypeUtils;
>> >>>
>> >>> import java.lang.annotation.ElementType;
>> >>> @@ -28,7 +29,7 @@ import java.util.Map;
>> >>> /**
>> >>> * {@link AccessStrategy} to get an indexed member of an {@link
>> >>> Iterable}
>> >>> or
>> >>> * array object.
>> >>> - */
>> >>> + */
>> >>> public class IndexedAccess extends AccessStrategy {
>> >>> private static final TypeVariable<?> ITERABLE_TYPE =
>> >>> Iterable.class.getTypeParameters()[0];
>> >>>
>> >>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
>> >>> }
>> >>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
>> >>> Map<TypeVariable<?>, Type> typeArguments =
>> >>> TypeUtils.getTypeArguments(containerType, Iterable.class);
>> >>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
>> >>> typeArguments.get(ITERABLE_TYPE) : Object.class;
>> >>> + return
>> >>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> >>> ITERABLE_TYPE), Object.class);
>> >>> }
>> >>> return null;
>> >>> }
>> >>>
>> >>> - private Type containerType;
>> >>> - private Integer index;
>> >>> + private final Type containerType;
>> >>> + private final Integer index;
>> >>>
>> >>> /**
>> >>> * Create a new IndexedAccessStrategy instance.
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/KeyedAccess.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/KeyedAccess.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/KeyedAccess.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/KeyedAccess.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -16,6 +16,7 @@
>> >>> */
>> >>> package org.apache.bval.util;
>> >>>
>> >>> +import org.apache.commons.lang3.ObjectUtils;
>> >>> import org.apache.commons.lang3.reflect.TypeUtils;
>> >>>
>> >>> import java.lang.annotation.ElementType;
>> >>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
>> >>> public static Type getJavaElementType(Type containerType) {
>> >>> if (TypeUtils.isAssignable(containerType, Map.class)) {
>> >>> Map<TypeVariable<?>, Type> typeArguments =
>> >>> TypeUtils.getTypeArguments(containerType, Map.class);
>> >>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
>> >>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
>> >>> + return
>> >>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> >>> MAP_TYPEVARS[1]), Object.class);
>> >>> }
>> >>> return null;
>> >>> }
>> >>>
>> >>> - private Type containerType;
>> >>> - private Object key;
>> >>> + private final Type containerType;
>> >>> + private final Object key;
>> >>>
>> >>> /**
>> >>> * Create a new KeyedAccess instance.
>> >>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
>> >>> if (instance instanceof Map<?, ?>) {
>> >>> Map<?, ?> map = (Map<?, ?>) instance;
>> >>> Map<TypeVariable<?>, Type> typeArguments =
>> >>> TypeUtils.getTypeArguments(containerType, Map.class);
>> >>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
>> >>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
>> >>> MAP_TYPEVARS[0]);
>> >>> if (key == null || keyType == null ||
>> >>> TypeUtils.isInstance(key, keyType)) {
>> >>> return map.get(key);
>> >>> }
>> >>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
>> >>> */
>> >>> @Override
>> >>> public Type getJavaType() {
>> >>> - Type result = getJavaElementType(containerType);
>> >>> + final Type result = getJavaElementType(containerType);
>> >>> return result == null ? Object.class : result;
>> >>> }
>> >>>
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/MethodAccess.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/MethodAccess.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/MethodAccess.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/MethodAccess.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
>> >>> import java.lang.reflect.InvocationTargetException;
>> >>> import java.lang.reflect.Method;
>> >>> import java.lang.reflect.Type;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>>
>> >>> /**
>> >>> * Description: invoke a zero-argument method (getter)<br/>
>> >>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
>> >>> public MethodAccess(String propertyName, final Method method) {
>> >>> this.method = method;
>> >>> this.propertyName = propertyName;
>> >>> - if (!method.isAccessible()) {
>> >>> - if (System.getSecurityManager() == null) {
>> >>> - method.setAccessible(true);
>> >>> - } else {
>> >>> - AccessController.doPrivileged(new
>> >>> PrivilegedAction<Void>() {
>> >>> - public Void run() {
>> >>> - method.setAccessible(true);
>> >>> - return null;
>> >>> - }
>> >>> - });
>> >>> - }
>> >>> - }
>> >>> + setAccessible(method);
>> >>> }
>> >>>
>> >>> /**
>> >>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
>> >>> * the method name id not according to the JavaBeans
>> >>> standard.
>> >>> */
>> >>> public static String getPropertyName(Method member) {
>> >>> - String name = null;
>> >>> - String methodName = member.getName();
>> >>> + final String methodName = member.getName();
>> >>> if (methodName.startsWith("is")) {
>> >>> - name = Introspector.decapitalize(methodName.substring(2));
>> >>> - } /* else if ( methodName.startsWith("has")) {
>> >>> - name = Introspector.decapitalize(
>> >>> methodName.substring( 3 ) );
>> >>> - } */
>> >>> - // setter annotation is NOT supported in the spec
>> >>> - /* else if (method.getName().startsWith("set") &&
>> >>> method.getParameterTypes().length == 1) {
>> >>> - propName =
>> >>> Introspector.decapitalize(method.getName().substring(3));
>> >>> - } */
>> >>> - else if (methodName.startsWith("get")) {
>> >>> - name = Introspector.decapitalize(methodName.substring(3));
>> >>> + return Introspector.decapitalize(methodName.substring(2));
>> >>> + }
>> >>> + if (methodName.startsWith("get")) {
>> >>> + return Introspector.decapitalize(methodName.substring(3));
>> >>> }
>> >>> - return name;
>> >>> + return null;
>> >>> }
>> >>>
>> >>> /**
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/Reflection.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> core/src/main/java/org/apache/bval/util/reflection/
>> >>> Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/Reflection.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>> >>> bval/util/reflection/Reflection.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
>> >>> import java.lang.reflect.Field;
>> >>> import java.lang.reflect.InvocationTargetException;
>> >>> import java.lang.reflect.Method;
>> >>> +import java.lang.reflect.Modifier;
>> >>>
>> >>> -public interface Reflection {
>> >>> - static final Reflection INSTANCE =
>> ReflectionFactory.newInstance();
>> >>> +import org.apache.commons.lang3.ClassUtils;
>> >>>
>> >>> - Class<?> getClass(final ClassLoader classLoader, final String
>> >>> className) throws Exception;
>> >>> -
>> >>> - Object getAnnotationValue(final Annotation annotation, final
>> >>> String name) throws IllegalAccessException, InvocationTargetException;
>> >>> +/**
>> >>> + * Security-agnostic "blueprint" class for reflection-related
>> >>> operations.
>> >>> + *
>> >>> + * @version $Rev$ $Date$
>> >>> + */
>> >>> +public class Reflection {
>> >>> +
>> >>> + private static void setAccessibility(final Field field) {
>> >>> + // FIXME 2011-03-27 jw:
>> >>> + // - Why not simply call field.setAccessible(true)?
>> >>> + // - Fields can not be abstract.
>> >>> + if (!Modifier.isPublic(field.getModifiers())
>> >>> + || (Modifier.isPublic(field.getModifiers()) &&
>> >>> Modifier.isAbstract(field.getModifiers()))) {
>> >>> + field.setAccessible(true);
>> >>> + }
>> >>> + }
>> >>>
>> >>> - ClassLoader getClassLoader(final Class<?> clazz);
>> >>> + public static Class<?> getClass(final ClassLoader classLoader,
>> >>> final String className) throws Exception {
>> >>> + return ClassUtils.getClass(classLoader, className, true);
>> >>> + }
>> >>>
>> >>> - String getProperty(final String name);
>> >>> + public static Object getAnnotationValue(final Annotation
>> >>> annotation, final String name)
>> >>> + throws IllegalAccessException, InvocationTargetException {
>> >>> + Method valueMethod;
>> >>> + try {
>> >>> + valueMethod =
>> >>> annotation.annotationType().getDeclaredMethod(name);
>> >>> + } catch (final NoSuchMethodException ex) {
>> >>> + // do nothing
>> >>> + valueMethod = null;
>> >>> + }
>> >>> + if (null != valueMethod) {
>> >>> + if (!valueMethod.isAccessible()) {
>> >>> + valueMethod.setAccessible(true);
>> >>> + }
>> >>> + return valueMethod.invoke(annotation);
>> >>> + }
>> >>> + return null;
>> >>> + }
>> >>>
>> >>> - Field getDeclaredField(final Class<?> clazz, final String
>> >>> fieldName);
>> >>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
>> >>> + final ClassLoader cl =
>> >>> Thread.currentThread().getContextClassLoader();
>> >>> + if (cl != null) {
>> >>> + return cl;
>> >>> + }
>> >>> + return clazz.getClassLoader();
>> >>> + }
>> >>>
>> >>> - Field[] getDeclaredFields(final Class<?> clazz);
>> >>> + public static String getProperty(final String name) {
>> >>> + return System.getProperty(name);
>> >>> + }
>> >>>
>> >>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
>> >>> Class<?>... parameters);
>> >>> + public static Field getDeclaredField(final Class<?> clazz, final
>> >>> String fieldName) {
>> >>> + final Field f;
>> >>> + try {
>> >>> + f = clazz.getDeclaredField(fieldName);
>> >>> + } catch (final NoSuchFieldException e) {
>> >>> + return null;
>> >>> + }
>> >>> + setAccessibility(f);
>> >>> + return f;
>> >>> + }
>> >>>
>> >>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
>> >>> final Class<?>... parameters);
>> >>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
>> >>> + final Field[] fields = clazz.getDeclaredFields();
>> >>> + if (fields.length > 0) {
>> >>> + for (final Field f : fields) {
>> >>> + if (!f.isAccessible()) {
>> >>> + f.setAccessible(true);
>> >>> + }
>> >>> + }
>> >>> + }
>> >>> + return fields;
>> >>> + }
>> >>>
>> >>> - Method[] getDeclaredMethods(final Class<?> clazz);
>> >>> + public static Constructor<?> getDeclaredConstructor(final
>> >>> Class<?> clazz, final Class<?>... parameters) {
>> >>> + try {
>> >>> + return clazz.getDeclaredConstructor(parameters);
>> >>> + } catch (final NoSuchMethodException e) {
>> >>> + return null;
>> >>> + }
>> >>> + }
>> >>>
>> >>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
>> >>> + public static Method getDeclaredMethod(final Class<?> clazz,
>> >>> final String name, final Class<?>... parameters) {
>> >>> + try {
>> >>> + return clazz.getDeclaredMethod(name, parameters);
>> >>> + } catch (final NoSuchMethodException e) {
>> >>> + return null;
>> >>> + }
>> >>> + }
>> >>>
>> >>> - Method getPublicMethod(final Class<?> clazz, final String
>> >>> methodName);
>> >>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
>> >>> + return clazz.getDeclaredMethods();
>> >>> + }
>> >>>
>> >>> - <T> T newInstance(final Class<T> cls);
>> >>> + public static Constructor<?>[] getDeclaredConstructors(final
>> >>> Class<?> clazz) {
>> >>> + return clazz.getDeclaredConstructors();
>> >>> + }
>> >>>
>> >>> - public static class ReflectionFactory {
>> >>> - public static Reflection newInstance() {
>> >>> - if (System.getSecurityManager() != null) {
>> >>> - return new SecurityManagerReflection();
>> >>> - }
>> >>> - return new DefaultReflection();
>> >>> + public static Method getPublicMethod(final Class<?> clazz, final
>> >>> String methodName) {
>> >>> + try {
>> >>> + return clazz.getMethod(methodName);
>> >>> + } catch (final NoSuchMethodException e) {
>> >>> + return null;
>> >>> }
>> >>> + }
>> >>>
>> >>> - private ReflectionFactory() {
>> >>> - // no-op
>> >>> + public static <T> T newInstance(final Class<T> cls) {
>> >>> + try {
>> >>> + return cls.newInstance();
>> >>> + } catch (final Exception ex) {
>> >>> + throw new RuntimeException("Cannot instantiate : " + cls,
>> >>> ex);
>> >>> }
>> >>> }
>> >>> +
>> >>> }
>> >>>
>> >>> Propchange: bval/branches/bval-11/bval-jsr/
>> >>>
>> >>> ------------------------------------------------------------
>> >>> ------------------
>> >>> --- svn:ignore (added)
>> >>> +++ svn:ignore Wed Oct 1 04:37:36 2014
>> >>> @@ -0,0 +1,4 @@
>> >>> +.classpath
>> >>> +.project
>> >>> +.settings
>> >>> +target
>> >>>
>> >>> Propchange: bval/branches/bval-11/bval-jsr/
>> >>>
>> >>> ------------------------------------------------------------
>> >>> ------------------
>> >>> --- svn:mergeinfo (added)
>> >>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
>> >>> @@ -0,0 +1,2 @@
>> >>> +/bval/trunk/bval-jsr303:1598345
>> >>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>> >>>
>> >>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
>> >>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
>> >>> @@ -79,13 +79,73 @@
>> >>> <plugins>
>> >>> <plugin>
>> >>> <groupId>org.apache.maven.plugins</groupId>
>> >>> +
>> <artifactId>maven-resources-plugin</artifactId>
>> >>> + <executions>
>> >>> + <execution>
>> >>> + <id>default-testResources</id>
>> >>> + <phase />
>> >>> + <goals>
>> >>> + <goal>testResources</goal>
>> >>> + </goals>
>> >>> + </execution>
>> >>> + </executions>
>> >>> + </plugin>
>> >>> + <plugin>
>> >>> + <groupId>org.apache.maven.plugins</groupId>
>> >>> + <artifactId>maven-antrun-plugin</artifactId>
>> >>> + <executions>
>> >>> + <execution>
>> >>> + <id>filter-testResources</id>
>> >>> + <phase>process-test-resources</phase>
>> >>> + <goals>
>> >>> + <goal>run</goal>
>> >>> + </goals>
>> >>> + <configuration>
>> >>> + <target>
>> >>> + <mkdir
>> >>> dir="${project.build.testOutputDirectory}" />
>> >>> + <condition property="slash"
>> >>> value="/" else="">
>> >>> + <os family="windows" />
>> >>> + </condition>
>> >>> + <copy
>> >>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> >>> + <fileset
>> >>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
>> >>> + </copy>
>> >>> + <copy
>> >>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> >>> + <fileset
>> >>> file="${project.basedir}/src/test/resources/java.policy" />
>> >>> + <filterchain>
>> >>> + <expandproperties />
>> >>> + <!-- append extra
>> >>> slash on windows only -->
>> >>> + <replacestring
>> >>> from="file://" to="file://${slash}" />
>> >>> + <replacestring
>> >>> from="${file.separator}" to="/" />
>> >>> + <!-- preserve
>> >>> system-specific file separator -->
>> >>> + <expandproperties>
>> >>> + <propertyset>
>> >>> + <propertyref
>> >>> prefix="project." />
>> >>> + <globmapper
>> >>> from="*" to="preserve.*" />
>> >>> + </propertyset>
>> >>> + </expandproperties>
>> >>> + </filterchain>
>> >>> + </copy>
>> >>> + </target>
>> >>> + </configuration>
>> >>> + </execution>
>> >>> + </executions>
>> >>> + <dependencies>
>> >>> + <dependency>
>> >>> + <groupId>org.apache.ant</groupId>
>> >>> + <artifactId>ant</artifactId>
>> >>> + <version>1.9.3</version>
>> >>> + </dependency>
>> >>> + </dependencies>
>> >>> + </plugin>
>> >>> + <plugin>
>> >>> + <groupId>org.apache.maven.plugins</groupId>
>> >>>
>> <artifactId>maven-surefire-plugin</artifactId>
>> >>> <configuration>
>> >>> <includes>
>> >>> <include>**/*Test.java</include>
>> >>> <include>**/*TestCase.java</include>
>> >>> </includes>
>> >>> - <argLine>-Djava.security.manager
>> >>>
>> >>> -Djava.security.policy=${project.basedir}/src/test/
>> >>> resources/java.policy</argLine>
>> >>> + <argLine>-Djava.security.manager
>> >>>
>> >>> -Djava.security.policy=${project.build.testOutputDirectory}/java.
>> >>> policy</argLine>
>> >>> </configuration>
>> >>> </plugin>
>> >>> </plugins>
>> >>> @@ -103,6 +163,10 @@
>> >>> <groupId>org.apache.commons</groupId>
>> >>> <artifactId>commons-lang3</artifactId>
>> >>> </dependency>
>> >>> + <dependency>
>> >>> + <groupId>org.apache.commons</groupId>
>> >>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> >>> + </dependency>
>> >>> <!-- optional dependencies -->
>> >>> <dependency>
>> >>> <groupId>org.apache.bval</groupId>
>> >>> @@ -235,6 +299,10 @@
>> >>> </includes>
>> >>> </configuration>
>> >>> </plugin>
>> >>> + <plugin>
>> >>> + <groupId>org.apache.commons</groupId>
>> >>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> >>> + </plugin>
>> >>> </plugins>
>> >>> </build>
>> >>> </project>
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> AnnotationConstraintBuilder.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.
>> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> AnnotationConstraintBuilder.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> AnnotationConstraintBuilder.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -18,27 +18,9 @@
>> >>> */
>> >>> package org.apache.bval.jsr;
>> >>>
>> >>> -import org.apache.bval.jsr.groups.GroupsComputer;
>> >>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> >>> -import org.apache.bval.util.AccessStrategy;
>> >>> -import org.apache.commons.lang3.reflect.TypeUtils;
>> >>> -
>> >>> -import javax.validation.Constraint;
>> >>> -import javax.validation.ConstraintDeclarationException;
>> >>> -import javax.validation.ConstraintDefinitionException;
>> >>> -import javax.validation.ConstraintTarget;
>> >>> -import javax.validation.ConstraintValidator;
>> >>> -import javax.validation.ConstraintValidatorFactory;
>> >>> -import javax.validation.OverridesAttribute;
>> >>> -import javax.validation.Payload;
>> >>> -import javax.validation.ReportAsSingleViolation;
>> >>> -import
>> javax.validation.constraintvalidation.SupportedValidationTarget;
>> >>> -import javax.validation.constraintvalidation.ValidationTarget;
>> >>> import java.lang.annotation.Annotation;
>> >>> import java.lang.reflect.InvocationTargetException;
>> >>> import java.lang.reflect.Method;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>> import java.util.Arrays;
>> >>> import java.util.Collections;
>> >>> import java.util.HashMap;
>> >>> @@ -50,6 +32,24 @@ import java.util.Set;
>> >>> import java.util.logging.Level;
>> >>> import java.util.logging.Logger;
>> >>>
>> >>> +import javax.validation.Constraint;
>> >>> +import javax.validation.ConstraintDeclarationException;
>> >>> +import javax.validation.ConstraintDefinitionException;
>> >>> +import javax.validation.ConstraintTarget;
>> >>> +import javax.validation.ConstraintValidator;
>> >>> +import javax.validation.ConstraintValidatorFactory;
>> >>> +import javax.validation.OverridesAttribute;
>> >>> +import javax.validation.Payload;
>> >>> +import javax.validation.ReportAsSingleViolation;
>> >>> +import
>> javax.validation.constraintvalidation.SupportedValidationTarget;
>> >>> +import javax.validation.constraintvalidation.ValidationTarget;
>> >>> +
>> >>> +import org.apache.bval.jsr.groups.GroupsComputer;
>> >>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> >>> +import org.apache.bval.util.AccessStrategy;
>> >>> +import org.apache.commons.lang3.reflect.TypeUtils;
>> >>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>> +
>> >>> /**
>> >>> * Description: helper class that builds a {@link
>> ConstraintValidation}
>> >>> or its
>> >>> * composite constraint validations by parsing the jsr-annotations
>> and
>> >>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
>> >>> }
>> >>>
>> >>> /** build attributes, payload, groups from 'annotation' */
>> >>> + @Privileged
>> >>> private void buildFromAnnotation() {
>> >>> - if (constraintValidation.getAnnotation() != null) {
>> >>> - if (System.getSecurityManager() == null) {
>> >>> - doBuildFromAnnotations();
>> >>> - } else {
>> >>> - AccessController.doPrivileged(new
>> >>> PrivilegedAction<Object>() {
>> >>> - public Object run() {
>> >>> - doBuildFromAnnotations();
>> >>> - return null;
>> >>> - }
>> >>> - });
>> >>> - }
>> >>> + if (constraintValidation.getAnnotation() == null) {
>> >>> + return;
>> >>> }
>> >>> - }
>> >>> -
>> >>> - private void doBuildFromAnnotations() {
>> >>> final Class<? extends Annotation> annotationType =
>> >>> constraintValidation.getAnnotation().annotationType();
>> >>>
>> >>> boolean foundPayload = false;
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/AnnotationProcessor.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.
>> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/AnnotationProcessor.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/AnnotationProcessor.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
>> >>> import org.apache.bval.util.AccessStrategy;
>> >>> import org.apache.bval.util.reflection.Reflection;
>> >>> import org.apache.commons.lang3.ArrayUtils;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>
>> >>> import javax.validation.Constraint;
>> >>> import javax.validation.ConstraintValidator;
>> >>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
>> >>> import javax.validation.constraintvalidation.ValidationTarget;
>> >>> import javax.validation.groups.ConvertGroup;
>> >>> import javax.validation.groups.Default;
>> >>> +
>> >>> import java.lang.annotation.Annotation;
>> >>> import java.lang.reflect.AnnotatedElement;
>> >>> import java.lang.reflect.InvocationTargetException;
>> >>> @@ -44,6 +47,7 @@ import java.util.Set;
>> >>> * annotations, including composed constraints and the resolution of
>> >>> * {@link ConstraintValidator} implementations.
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public final class AnnotationProcessor {
>> >>> /** {@link ApacheFactoryContext} used */
>> >>> private final ApacheFactoryContext factoryContext;
>> >>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
>> >>> * annotated by @Constraint) whose value element has a return
>> >>> type of an
>> >>> * array of constraint annotations in a special way.
>> >>> */
>> >>> - final Object result =
>> >>> Reflection.INSTANCE.getAnnotationValue(annotation,
>> >>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> >>> + final Object result =
>> >>> + Reflection.getAnnotationValue(annotation,
>> >>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> >>> if (result instanceof Annotation[]) {
>> >>> boolean changed = false;
>> >>> for (final Annotation each : (Annotation[]) result) {
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ApacheFactoryContext.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.
>> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ApacheFactoryContext.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ApacheFactoryContext.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -18,6 +18,18 @@
>> >>> */
>> >>> package org.apache.bval.jsr;
>> >>>
>> >>> +import java.lang.reflect.Constructor;
>> >>> +import java.util.ArrayList;
>> >>> +import java.util.List;
>> >>> +
>> >>> +import javax.validation.ConstraintValidatorFactory;
>> >>> +import javax.validation.MessageInterpolator;
>> >>> +import javax.validation.ParameterNameProvider;
>> >>> +import javax.validation.TraversableResolver;
>> >>> +import javax.validation.ValidationException;
>> >>> +import javax.validation.Validator;
>> >>> +import javax.validation.ValidatorContext;
>> >>> +
>> >>> import org.apache.bval.IntrospectorMetaBeanFactory;
>> >>> import org.apache.bval.MetaBeanBuilder;
>> >>> import org.apache.bval.MetaBeanFactory;
>> >>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
>> >>> import org.apache.bval.xml.XMLMetaBeanManager;
>> >>> import org.apache.commons.lang3.StringUtils;
>> >>> import org.apache.commons.lang3.reflect.ConstructorUtils;
>> >>> -
>> >>> -import javax.validation.ConstraintValidatorFactory;
>> >>> -import javax.validation.MessageInterpolator;
>> >>> -import javax.validation.ParameterNameProvider;
>> >>> -import javax.validation.TraversableResolver;
>> >>> -import javax.validation.ValidationException;
>> >>> -import javax.validation.Validator;
>> >>> -import javax.validation.ValidatorContext;
>> >>> -import java.lang.reflect.Constructor;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>> -import java.util.ArrayList;
>> >>> -import java.util.List;
>> >>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>
>> >>> /**
>> >>> * Description: Represents the context that is used to create
>> >>> * <code>ClassValidator</code> instances.<br/>
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public class ApacheFactoryContext implements ValidatorContext {
>> >>> private final ApacheValidatorFactory factory;
>> >>> private final MetaBeanFinder metaBeanFinder;
>> >>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
>> >>> return new MetaBeanManager(new
>> >>> MetaBeanBuilder(builders.toArray(new
>> >>> MetaBeanFactory[builders.size()])));
>> >>> }
>> >>>
>> >>> + @Privileged
>> >>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>> >>> Class<F> cls) {
>> >>> - if (System.getSecurityManager() == null) {
>> >>> - return doCreateMetaBeanFactory(cls);
>> >>> - }
>> >>> - return AccessController.doPrivileged(new PrivilegedAction<F>()
>> >>> {
>> >>> - public F run() {
>> >>> - return doCreateMetaBeanFactory(cls);
>> >>> - }
>> >>> - });
>> >>> - }
>> >>> -
>> >>> - private <F extends MetaBeanFactory> F
>> >>> doCreateMetaBeanFactory(final Class<F> cls) {
>> >>> try {
>> >>> Constructor<F> c =
>> >>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> >>> ApacheFactoryContext.this.getClass());
>> >>> if (c != null) {
>> >>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>> >>>
>> >>> private Class<?> loadClass(final String className) {
>> >>> try {
>> >>> - return Class.forName(className, true,
>> >>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
>> >>> + return Class.forName(className, true,
>> >>> Reflection.getClassLoader(ApacheFactoryContext.class));
>> >>> } catch (ClassNotFoundException ex) {
>> >>> throw new ValidationException("Unable to load class: " +
>> >>> className, ex);
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidationProvider.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidationProvider.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidationProvider.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -18,16 +18,15 @@
>> >>> */
>> >>> package org.apache.bval.jsr;
>> >>>
>> >>> -import org.apache.commons.lang3.ClassUtils;
>> >>> -
>> >>> import javax.validation.Configuration;
>> >>> import javax.validation.ValidationException;
>> >>> import javax.validation.ValidatorFactory;
>> >>> import javax.validation.spi.BootstrapState;
>> >>> import javax.validation.spi.ConfigurationState;
>> >>> import javax.validation.spi.ValidationProvider;
>> >>> -import java.security.AccessController;
>> >>> -import java.security.PrivilegedAction;
>> >>> +
>> >>> +import org.apache.commons.lang3.ClassUtils;
>> >>> +import org.apache.commons.weaver.privilizer.Privileged;
>> >>>
>> >>> /**
>> >>> * Description: Implementation of {@link ValidationProvider} for jsr
>> >>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
>> >>> // No privileges should be required to access the
>> constructor,
>> >>> // because the classloader of ApacheValidationProvider will
>> >>> always
>> >>> // be an ancestor of the loader of validatorFactoryClass.
>> >>> - return (System.getSecurityManager() == null)
>> >>> - ? instantiateValidatorFactory(validatorFactoryClass,
>> >>> configuration) : AccessController
>> >>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>()
>> >>> {
>> >>> - public ValidatorFactory run() {
>> >>> - return
>> >>> instantiateValidatorFactory(validatorFactoryClass, configuration);
>> >>> - }
>> >>> - });
>> >>> + return instantiateValidatorFactory(validatorFactoryClass,
>> >>> configuration);
>> >>> }
>> >>>
>> >>> + @Privileged
>> >>> private static ValidatorFactory instantiateValidatorFactory(
>> >>> final Class<? extends ValidatorFactory>
>> >>> validatorFactoryClass, final ConfigurationState configuration) {
>> >>> try {
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorConfiguration.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.
>> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorConfiguration.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorConfiguration.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
>> >>> * class is presumed have a constructor that accepts a single
>> >>> * {@link ConfigurationState} argument.
>> >>> */
>> >>> - String VALIDATOR_FACTORY_CLASSNAME =
>> >>> "apache.bval.validator-factory-classname";
>> >>> + String VALIDATOR_FACTORY_CLASSNAME =
>> >>> "apache.bval.validator-factory-classname";
>> >>>
>> >>> /**
>> >>> * Specifies the names, delimited by whitespace, of
>> >>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
>> >>> * <li>default (no-args) constructor</li>
>> >>> * </ol>
>> >>> */
>> >>> - String METABEAN_FACTORY_CLASSNAMES =
>> >>> "apache.bval.metabean-factory-classnames";
>> >>> + String METABEAN_FACTORY_CLASSNAMES =
>> >>> "apache.bval.metabean-factory-classnames";
>> >>> }
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorFactory.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorFactory.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>> >>> ApacheValidatorFactory.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
>> >>> import org.apache.bval.util.reflection.Reflection;
>> >>> import org.apache.commons.lang3.ArrayUtils;
>> >>> import org.apache.commons.lang3.ClassUtils;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>
>> >>> import javax.validation.ConstraintValidatorFactory;
>> >>> import javax.validation.MessageInterpolator;
>> >>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
>> >>> import javax.validation.Validator;
>> >>> import javax.validation.ValidatorFactory;
>> >>> import javax.validation.spi.ConfigurationState;
>> >>> +
>> >>> import java.io.Closeable;
>> >>> import java.lang.annotation.Annotation;
>> >>> import java.lang.reflect.Modifier;
>> >>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
>> >>> * validators.<br/>
>> >>> * This instance is not thread-safe.<br/>
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public class ApacheValidatorFactory implements ValidatorFactory,
>> >>> Cloneable {
>> >>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
>> >>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
>> >>> ConstraintDefaults();
>> >>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>> >>>
>> >>> private <T> T newInstance(final Class<T> cls) {
>> >>> try {
>> >>> - return Reflection.INSTANCE.newInstance(cls);
>> >>> + return Reflection.newInstance(cls);
>> >>> } catch (final RuntimeException e) {
>> >>> throw new ValidationException(e.getCause());
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/BeanDescriptorImpl.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.
>> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/BeanDescriptorImpl.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/BeanDescriptorImpl.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
>> >>> import org.apache.bval.util.AccessStrategy;
>> >>> import org.apache.bval.util.reflection.Reflection;
>> >>> import org.apache.commons.lang3.ClassUtils;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> >>>
>> >>> import javax.validation.Constraint;
>> >>> import javax.validation.ConstraintDeclarationException;
>> >>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
>> >>> import javax.validation.metadata.ParameterDescriptor;
>> >>> import javax.validation.metadata.PropertyDescriptor;
>> >>> import javax.validation.metadata.ReturnValueDescriptor;
>> >>> +
>> >>> import java.beans.Introspector;
>> >>> import java.lang.annotation.Annotation;
>> >>> import java.lang.reflect.AccessibleObject;
>> >>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
>> >>> /**
>> >>> * Description: Implements {@link BeanDescriptor}.<br/>
>> >>> */
>> >>> +@Privilizing(@CallTo(Reflection.class))
>> >>> public class BeanDescriptorImpl extends ElementDescriptorImpl
>> >>> implements BeanDescriptor {
>> >>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
>> >>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
>> >>> private static final Validation[] EMPTY_VALIDATION = new
>> >>> Validation[0];
>> >>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
>> >>> Class<?> current = prop.getParentMetaBean().getBeanClass();
>> >>> while (current != null && current != Object.class &&
>> >>> (!methodFound || !fieldFound)) {
>> >>> if (!fieldFound) {
>> >>> - final Field field =
>> >>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
>> >>> + final Field field =
>> >>> Reflection.getDeclaredField(current, prop.getName());
>> >>> if (field != null) {
>> >>> processConvertGroup(edesc, field);
>> >>> fieldFound = true;
>> >>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>> >>>
>> >>> if (!methodFound) {
>> >>> final String name =
>> >>> Character.toUpperCase(prop.getName().charAt(0)) +
>> >>> prop.getName().substring(1);
>> >>> - Method m =
>> >>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
>> >>> + Method m = Reflection.getDeclaredMethod(current, "get"
>> >>> +
>> >>> name);
>> >>> if (m != null) {
>> >>> processConvertGroup(edesc, m);
>> >>> methodFound = true;
>> >>> } else {
>> >>> - m =
>> >>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
>> >>> + m = Reflection.getDeclaredMethod(current, "is" +
>> >>> name);
>> >>> if (m != null) {
>> >>> processConvertGroup(edesc, m);
>> >>> methodFound = true;
>> >>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
>> >>> }
>> >>>
>> >>> private void buildConstructorConstraints() throws
>> >>> InvocationTargetException, IllegalAccessException {
>> >>> - for (final Constructor<?> cons :
>> >>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
>> >>> {
>> >>> + for (final Constructor<?> cons :
>> >>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
>> >>> final ConstructorDescriptorImpl consDesc = new
>> >>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>> >>>
>> >>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
>> >>> consDesc);
>> >>>
>> >>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
>> >>> final List<Class<?>> classHierarchy =
>> >>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
>> >>> current);
>> >>> classHierarchy.remove(current);
>> >>>
>> >>> - for (final Method method :
>> >>> Reflection.INSTANCE.getDeclaredMethods(current)) {
>> >>> + for (final Method method :
>> >>> Reflection.getDeclaredMethods(current)) {
>> >>> if (Modifier.isStatic(method.getModifiers()) ||
>> >>> method.isSynthetic()) {
>> >>> continue;
>> >>> }
>> >>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>> >>>
>> >>> final Collection<Method> parents = new
>> >>> ArrayList<Method>();
>> >>> for (final Class<?> clazz : classHierarchy) {
>> >>> - final Method overriden =
>> >>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> >>> method.getParameterTypes());
>> >>> - if (overriden != null) {
>> >>> - parents.add(overriden);
>> >>> - processMethod(overriden, methodDesc);
>> >>> + final Method overridden =
>> >>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> >>> method.getParameterTypes());
>> >>> + if (overridden != null) {
>> >>> + parents.add(overridden);
>> >>> + processMethod(overridden, methodDesc);
>> >>> }
>> >>> }
>> >>>
>> >>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
>> >>> final Class<?>[] interfaces =
>> >>> method.getDeclaringClass().getInterfaces();
>> >>> final Collection<Method> itfWithThisMethod = new
>> >>> ArrayList<Method>();
>> >>> for (final Class<?> i : interfaces) {
>> >>> - final Method m =
>> >>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
>> >>> method.getParameterTypes());
>> >>> + final Method m =
>> >>> Reflection.getDeclaredMethod(i, method.getName(),
>> >>> method.getParameterTypes());
>> >>> if (m != null) {
>> >>> itfWithThisMethod.add(m);
>> >>> }
>> >>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
>> >>> returnValid++;
>> >>> }
>> >>> for (final Class<?> clazz : classHierarchy) {
>> >>> - final Method overriden =
>> >>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> >>> method.getParameterTypes());
>> >>> - if (overriden != null) {
>> >>> - if (overriden.getAnnotation(Valid.class)
>> !=
>> >>> null) {
>> >>> + final Method overridden =
>> >>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> >>> method.getParameterTypes());
>> >>> + if (overridden != null) {
>> >>> + if (overridden.getAnnotation(Valid.class)
>> >>> != null) {
>> >>> returnValid++;
>> >>> }
>> >>> }
>> >>>
>> >>> Modified:
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ClassValidator.java
>> >>> URL:
>> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>> >>> jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?
>> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
>> >>>
>> >>> ============================================================
>> >>> ==================
>> >>> ---
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ClassValidator.java
>> >>> (original)
>> >>> +++
>> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>> >>> bval/jsr/ClassValidator.java
>> >>> Wed Oct 1 04:37:36 2014
>> >>> @@ -18,6 +18,33 @@
>> >>> */
>> >>> package org.apache.bval.jsr;
>> >>>
>> >>> +import java.lang.reflect.Constructor;
>> >>> +import java.lang.reflect.Member;
>> >>> +import java.lang.reflect.Method;
>> >>> +import java.lang.reflect.Modifier;
>> >>> +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 javax.validation.ConstraintDeclarationException;
>> >>> +import javax.validation.ConstraintDefinitionException;
>> >>> +import javax.validation.ConstraintTarget;
>> >>> +import javax.validation.ConstraintViolation;
>> >>> +import javax.validation.ElementKind;
>> >>> +import javax.validation.ValidationException;
>> >>> +import javax.validation.executable.ExecutableValidator;
>> >>> +import javax.validation.groups.Default;
>> >>> +import javax.validation.metadata.BeanDescriptor;
>> >>> +import javax.validation.metadata.ConstraintDescriptor;
>> >>> +import javax.validation.metadata.ElementDescriptor;
>> >>> +import javax.validation.metadata.ParameterDescriptor;
>> >>> +import javax.validation.metadata.PropertyDescriptor;
>> >>> +
>> >>> import org.apache.bval.DynamicMetaBean;
>> >>> import org.apache.bval.MetaBeanFinder;
>> >>> import org.apache.bval.jsr.groups.Group;
>> >>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
>> >>> import org.apache.commons.lang3.ClassUtils;
>> >>> import org.apache.commons.lang3.ObjectUtils;
>> >>> import org.apache.commons.lang3.reflect.TypeUtils;
>> >>> -
>> >>> -import javax.validation.ConstraintDeclarationException;
>> >>> -import javax.validation.ConstraintDefinitionException;
>> >>> -import javax.validation.ConstraintTarget;
>> >>> -import javax.validation.ConstraintViolation;
>> >>> -import javax.validation.ElementKind;
>> >>> -import javax.validation.ValidationException;
>> >>> -import javax.validation.executable.ExecutableValidator;
>> >>> -import javax.validation.groups.Default;
>> >>> -import javax.validation.metadata.BeanDe
>> >>
>> >> ...
>>
>
>
>
> --
> Daniel Cunha (soro) <http://www.cejug.net>
> Blog: http://www.danielsoro.com.br
> Twitter: https://twitter.com/dvlc_
> GitHub: https://github.com/danielsoro
> LinkedIn: http://www.linkedin.com/in/danielvlcunha
Re: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Daniel Cunha <da...@gmail.com>.
I have a same problem with JDK 7.
On Sat, Dec 6, 2014 at 12:57 PM, Romain Manni-Bucau <rm...@gmail.com>
wrote:
> Yep
>
> Not an issue afaik
> Le 6 déc. 2014 13:41, "Roman Stumm" <ro...@gmx.de> a écrit :
>
> > I can compile the trunk with java7, but not with java8:
> >
> > [ERROR] Failed to execute goal org.apache.maven.plugins:
> > maven-compiler-plugin:2.3.2:compile (default-compile) on project
> > bval-jsr303: Compilation failure: Compilation failure:
> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[141,8] error:
> > reference to validate is ambiguous
> > [ERROR]
> > [ERROR] L extends ValidationListener declared in method
> > <L>validate(ValidationContext<L>)
> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[180,35]
> > error: reference to validate is ambiguous
> > [ERROR]
> > [ERROR] L extends ValidationListener declared in method
> > <L>validate(ValidationContext<L>)
> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> > main/java/org/apache/bval/jsr303/ConstraintValidation.java:[197,24]
> > error: reference to validate is ambiguous
> > [ERROR]
> > [ERROR] L extends ValidationListener declared in method
> > <L>validate(ValidationContext<L>)
> > [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> >
> main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java:[209,26]
> > error: reference to validate is ambiguous
> >
> > Am 06.12.14 13:12, schrieb Daniel Cunha:
> >
> >> I try see something here.
> >>
> >> But I have a problem.. my laptop not build bval.
> >> The build stop in Building Apache BVal :: bval-jsr 1.1.0-alpha-SNAPSHOT
> >>
> >> Linux 3.13.0 32bits
> >> 4GB ram
> >> JDK 1.8.0_25
> >>
> >> On Sat, Dec 6, 2014 at 8:08 AM, Romain Manni-Bucau <
> rmannibucau@gmail.com
> >> >
> >> wrote:
> >>
> >> Hi Matt,
> >>>
> >>> I have 2 questions:
> >>> 1) surely obvious but I dont get why you re-set the accessible (if
> >>> (mustSet)). While we need it accessible we can keep it set to true no?
> >>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
> >>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
> >>>
> >>>
> >>> Romain Manni-Bucau
> >>> @rmannibucau
> >>> http://www.tomitribe.com
> >>> http://rmannibucau.wordpress.com
> >>> https://github.com/rmannibucau
> >>>
> >>>
> >>>
> >>> ---------- Forwarded message ----------
> >>> From: <mb...@apache.org>
> >>> Date: 2014-10-01 6:37 GMT+02:00
> >>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
> >>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
> >>> To: commits@bval.apache.org
> >>>
> >>>
> >>> Author: mbenson
> >>> Date: Wed Oct 1 04:37:36 2014
> >>> New Revision: 1628598
> >>>
> >>> URL: http://svn.apache.org/r1628598
> >>> Log:
> >>> use commons weaver/privilizer
> >>>
> >>> Removed:
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/DefaultReflection.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/SecurityManagerReflection.java
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/pom.xml
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/ConstructorAccess.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/model/MetaBean.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/AccessStrategy.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/BValVersion.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/FieldAccess.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/IndexedAccess.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/KeyedAccess.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/MethodAccess.java
> >>>
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/Reflection.java
> >>> bval/branches/bval-11/bval-jsr/ (props changed)
> >>> bval/branches/bval-11/bval-jsr/pom.xml
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> AnnotationConstraintBuilder.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/AnnotationProcessor.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ApacheFactoryContext.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidationProvider.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorConfiguration.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorFactory.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/BeanDescriptorImpl.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ClassValidator.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ConfigurationImpl.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ConstraintAnnotationAttributes.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ConstraintDefaults.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ConstraintValidation.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> DefaultMessageInterpolator.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> DefaultValidationProviderResolver.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/JsrMetaBeanFactory.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/resolver/DefaultTraversableResolver.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/util/ClassHelper.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
> >>> AnnotationProxyBuilder.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
> >>> ValidationMappingParser.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/xml/ValidationParser.java
> >>>
> >>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/
> >>> ValidationParserTest.java
> >>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
> >>> bval/branches/bval-11/bval-tck11/ (props changed)
> >>> bval/branches/bval-11/bval-xstream/pom.xml
> >>>
> >>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/
> >>> XMLMetaBeanManager.java
> >>> bval/branches/bval-11/pom.xml
> >>>
> >>> Modified: bval/branches/bval-11/bval-core/pom.xml
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> --- bval/branches/bval-11/bval-core/pom.xml (original)
> >>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
> >>> @@ -46,6 +46,10 @@
> >>> <artifactId>commons-beanutils-core</artifactId>
> >>> </dependency>
> >>> <dependency>
> >>> + <groupId>org.apache.commons</groupId>
> >>> + <artifactId>commons-weaver-privilizer-api</artifactId>
> >>> + </dependency>
> >>> + <dependency>
> >>> <groupId>junit</groupId>
> >>> <artifactId>junit</artifactId>
> >>> <scope>test</scope>
> >>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
> >>> </execution>
> >>> </executions>
> >>> </plugin>
> >>> + <plugin>
> >>> + <groupId>org.apache.commons</groupId>
> >>> + <artifactId>commons-weaver-maven-plugin</artifactId>
> >>> + </plugin>
> >>> </plugins>
> >>> <pluginManagement>
> >>> <plugins>
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/ConstructorAccess.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/ConstructorAccess.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/ConstructorAccess.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/ConstructorAccess.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -16,13 +16,11 @@
> >>> */
> >>> package org.apache.bval;
> >>>
> >>> -import org.apache.bval.util.AccessStrategy;
> >>> -
> >>> import java.lang.annotation.ElementType;
> >>> import java.lang.reflect.Constructor;
> >>> import java.lang.reflect.Type;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>> +
> >>> +import org.apache.bval.util.AccessStrategy;
> >>>
> >>> public class ConstructorAccess extends AccessStrategy {
> >>>
> >>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
> >>>
> >>> public ConstructorAccess(final Constructor<?> constructor) {
> >>> this.constructor = constructor;
> >>> - if (!constructor.isAccessible()) {
> >>> - if (System.getSecurityManager() == null) {
> >>> - constructor.setAccessible(true);
> >>> - } else {
> >>> - AccessController.doPrivileged(new
> >>> PrivilegedAction<Void>() {
> >>> - public Void run() {
> >>> - constructor.setAccessible(true);
> >>> - return null;
> >>> - }
> >>> - });
> >>> - }
> >>> - }
> >>> + setAccessible(constructor);
> >>> }
> >>>
> >>> @Override
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/model/MetaBean.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/model/MetaBean.java?rev=
> >>> 1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/model/MetaBean.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/model/MetaBean.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -17,6 +17,8 @@
> >>> package org.apache.bval.model;
> >>>
> >>> import org.apache.bval.util.reflection.Reflection;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>
> >>> import java.beans.Introspector;
> >>> import java.lang.reflect.Constructor;
> >>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
> >>> *
> >>> * @see MetaProperty
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public class MetaBean extends FeaturesCapable implements Cloneable,
> >>> Features.Bean {
> >>> private static final long serialVersionUID = 2L;
> >>>
> >>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
> >>> int i = 0;
> >>> Class<?> clazz = beanClass;
> >>> while (clazz != null && clazz != Object.class) {
> >>> - for (final Field f :
> >>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
> >>> + for (final Field f : Reflection.getDeclaredFields(
> >>> clazz))
> >>> {
> >>> i++;
> >>> final String name = f.getName();
> >>> if (!fields.containsKey(name)) {
> >>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
> >>> protected MethodComparator(final Class<?> beanClass) {
> >>> Class<?> clazz = beanClass;
> >>> while (clazz != null && clazz != Object.class) {
> >>> - for (final Method m :
> >>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
> >>> + for (final Method m :
> >>> Reflection.getDeclaredMethods(clazz)) {
> >>> methods.put(m,
> >>> Arrays.hashCode(m.getParameterTypes()));
> >>> }
> >>> clazz = clazz.getSuperclass();
> >>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
> >>> private final Map<Constructor<?>, Integer> constructors = new
> >>> HashMap<Constructor<?>, Integer>();
> >>>
> >>> protected ConstructorComparator(final Class<?> beanClass) {
> >>> - for (final Constructor<?> c :
> >>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
> >>> + for (final Constructor<?> c :
> >>> Reflection.getDeclaredConstructors(beanClass)) {
> >>> constructors.put(c,
> >>> Arrays.hashCode(c.getParameterTypes()));
> >>> }
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/AccessStrategy.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/AccessStrategy.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/AccessStrategy.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/AccessStrategy.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -17,8 +17,11 @@
> >>> package org.apache.bval.util;
> >>>
> >>> import java.lang.annotation.ElementType;
> >>> +import java.lang.reflect.AccessibleObject;
> >>> import java.lang.reflect.Type;
> >>>
> >>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>> +
> >>> /**
> >>> * Description: abstract class to encapsulate different strategies
> >>> * to get the value of a Property. This class is designed such that
> >>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
> >>> * @return String
> >>> */
> >>> public abstract String getPropertyName();
> >>> +
> >>> + /**
> >>> + * Set {@code accessibleObject} as being accessible
> >>> + * @param accessibleObject
> >>> + */
> >>> + protected boolean setAccessible(AccessibleObject
> accessibleObject) {
> >>> + if (accessibleObject.isAccessible()) {
> >>> + return false;
> >>> + }
> >>> + doSetAccessible(accessibleObject);
> >>> + return true;
> >>> + }
> >>> +
> >>> + @Privileged
> >>> + private void doSetAccessible(AccessibleObject accessibleObject) {
> >>> + accessibleObject.setAccessible(true);
> >>> + }
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/BValVersion.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/BValVersion.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/BValVersion.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/BValVersion.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -18,18 +18,21 @@
> >>> */
> >>> package org.apache.bval.util;
> >>>
> >>> -import org.apache.bval.util.reflection.Reflection;
> >>> -
> >>> import java.io.IOException;
> >>> import java.io.InputStream;
> >>> import java.util.Properties;
> >>> import java.util.StringTokenizer;
> >>>
> >>> +import org.apache.bval.util.reflection.Reflection;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>> +
> >>> /**
> >>> * This class contains version information for BVal.
> >>> * It uses Ant's filter tokens to convert the template into a java
> >>> * file with current information.
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public class BValVersion {
> >>>
> >>> /** Project name */
> >>> @@ -157,7 +160,7 @@ public class BValVersion {
> >>> * {@inheritDoc}
> >>> */
> >>> public String toString() {
> >>> - StringBuilder buf = new StringBuilder(80 * 40);
> >>> + final StringBuilder buf = new StringBuilder(80 * 40);
> >>> appendBanner(buf);
> >>> buf.append("\n");
> >>>
> >>> @@ -169,8 +172,7 @@ public class BValVersion {
> >>> appendProperty("java.vendor", buf).append("\n\n");
> >>>
> >>> buf.append("java.class.path:\n");
> >>> - StringTokenizer tok = new StringTokenizer(
> >>> - Reflection.INSTANCE.getProperty("java.class.path"));
> >>> + final StringTokenizer tok = new
> >>> StringTokenizer(Reflection.getProperty("java.class.path"));
> >>> while (tok.hasMoreTokens()) {
> >>> buf.append("\t").append(tok.nextToken());
> >>> buf.append("\n");
> >>> @@ -191,7 +193,6 @@ public class BValVersion {
> >>> }
> >>>
> >>> private StringBuilder appendProperty(String prop, StringBuilder
> >>> buf) {
> >>> - return buf.append(prop).append(": ").append(
> >>> - Reflection.INSTANCE.getProperty(prop));
> >>> + return buf.append(prop).append(":
> >>> ").append(Reflection.getProperty(prop));
> >>> }
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/FieldAccess.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/FieldAccess.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/FieldAccess.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/FieldAccess.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
> >>> import java.lang.annotation.ElementType;
> >>> import java.lang.reflect.Field;
> >>> import java.lang.reflect.Type;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>>
> >>> /**
> >>> * Description: direct field access strategy.<br/>
> >>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
> >>> */
> >>> public FieldAccess(final Field field) {
> >>> this.field = field;
> >>> - if (!field.isAccessible()) {
> >>> - if (System.getSecurityManager() == null) {
> >>> - field.setAccessible(true);
> >>> - } else {
> >>> - AccessController.doPrivileged(new
> >>> PrivilegedAction<Void>() {
> >>> - public Void run() {
> >>> - field.setAccessible(true);
> >>> - return null;
> >>> - }
> >>> - });
> >>> - }
> >>> - }
> >>> + setAccessible(field);
> >>> }
> >>>
> >>> /**
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/IndexedAccess.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/IndexedAccess.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/IndexedAccess.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/IndexedAccess.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -16,6 +16,7 @@
> >>> */
> >>> package org.apache.bval.util;
> >>>
> >>> +import org.apache.commons.lang3.ObjectUtils;
> >>> import org.apache.commons.lang3.reflect.TypeUtils;
> >>>
> >>> import java.lang.annotation.ElementType;
> >>> @@ -28,7 +29,7 @@ import java.util.Map;
> >>> /**
> >>> * {@link AccessStrategy} to get an indexed member of an {@link
> >>> Iterable}
> >>> or
> >>> * array object.
> >>> - */
> >>> + */
> >>> public class IndexedAccess extends AccessStrategy {
> >>> private static final TypeVariable<?> ITERABLE_TYPE =
> >>> Iterable.class.getTypeParameters()[0];
> >>>
> >>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
> >>> }
> >>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
> >>> Map<TypeVariable<?>, Type> typeArguments =
> >>> TypeUtils.getTypeArguments(containerType, Iterable.class);
> >>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
> >>> typeArguments.get(ITERABLE_TYPE) : Object.class;
> >>> + return
> >>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> >>> ITERABLE_TYPE), Object.class);
> >>> }
> >>> return null;
> >>> }
> >>>
> >>> - private Type containerType;
> >>> - private Integer index;
> >>> + private final Type containerType;
> >>> + private final Integer index;
> >>>
> >>> /**
> >>> * Create a new IndexedAccessStrategy instance.
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/KeyedAccess.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/KeyedAccess.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/KeyedAccess.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/KeyedAccess.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -16,6 +16,7 @@
> >>> */
> >>> package org.apache.bval.util;
> >>>
> >>> +import org.apache.commons.lang3.ObjectUtils;
> >>> import org.apache.commons.lang3.reflect.TypeUtils;
> >>>
> >>> import java.lang.annotation.ElementType;
> >>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
> >>> public static Type getJavaElementType(Type containerType) {
> >>> if (TypeUtils.isAssignable(containerType, Map.class)) {
> >>> Map<TypeVariable<?>, Type> typeArguments =
> >>> TypeUtils.getTypeArguments(containerType, Map.class);
> >>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
> >>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
> >>> + return
> >>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> >>> MAP_TYPEVARS[1]), Object.class);
> >>> }
> >>> return null;
> >>> }
> >>>
> >>> - private Type containerType;
> >>> - private Object key;
> >>> + private final Type containerType;
> >>> + private final Object key;
> >>>
> >>> /**
> >>> * Create a new KeyedAccess instance.
> >>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
> >>> if (instance instanceof Map<?, ?>) {
> >>> Map<?, ?> map = (Map<?, ?>) instance;
> >>> Map<TypeVariable<?>, Type> typeArguments =
> >>> TypeUtils.getTypeArguments(containerType, Map.class);
> >>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
> >>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
> >>> MAP_TYPEVARS[0]);
> >>> if (key == null || keyType == null ||
> >>> TypeUtils.isInstance(key, keyType)) {
> >>> return map.get(key);
> >>> }
> >>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
> >>> */
> >>> @Override
> >>> public Type getJavaType() {
> >>> - Type result = getJavaElementType(containerType);
> >>> + final Type result = getJavaElementType(containerType);
> >>> return result == null ? Object.class : result;
> >>> }
> >>>
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/MethodAccess.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/MethodAccess.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/MethodAccess.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/MethodAccess.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
> >>> import java.lang.reflect.InvocationTargetException;
> >>> import java.lang.reflect.Method;
> >>> import java.lang.reflect.Type;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>>
> >>> /**
> >>> * Description: invoke a zero-argument method (getter)<br/>
> >>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
> >>> public MethodAccess(String propertyName, final Method method) {
> >>> this.method = method;
> >>> this.propertyName = propertyName;
> >>> - if (!method.isAccessible()) {
> >>> - if (System.getSecurityManager() == null) {
> >>> - method.setAccessible(true);
> >>> - } else {
> >>> - AccessController.doPrivileged(new
> >>> PrivilegedAction<Void>() {
> >>> - public Void run() {
> >>> - method.setAccessible(true);
> >>> - return null;
> >>> - }
> >>> - });
> >>> - }
> >>> - }
> >>> + setAccessible(method);
> >>> }
> >>>
> >>> /**
> >>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
> >>> * the method name id not according to the JavaBeans
> >>> standard.
> >>> */
> >>> public static String getPropertyName(Method member) {
> >>> - String name = null;
> >>> - String methodName = member.getName();
> >>> + final String methodName = member.getName();
> >>> if (methodName.startsWith("is")) {
> >>> - name = Introspector.decapitalize(methodName.substring(2));
> >>> - } /* else if ( methodName.startsWith("has")) {
> >>> - name = Introspector.decapitalize(
> >>> methodName.substring( 3 ) );
> >>> - } */
> >>> - // setter annotation is NOT supported in the spec
> >>> - /* else if (method.getName().startsWith("set") &&
> >>> method.getParameterTypes().length == 1) {
> >>> - propName =
> >>> Introspector.decapitalize(method.getName().substring(3));
> >>> - } */
> >>> - else if (methodName.startsWith("get")) {
> >>> - name = Introspector.decapitalize(methodName.substring(3));
> >>> + return Introspector.decapitalize(methodName.substring(2));
> >>> + }
> >>> + if (methodName.startsWith("get")) {
> >>> + return Introspector.decapitalize(methodName.substring(3));
> >>> }
> >>> - return name;
> >>> + return null;
> >>> }
> >>>
> >>> /**
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/Reflection.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> core/src/main/java/org/apache/bval/util/reflection/
> >>> Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/Reflection.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
> >>> bval/util/reflection/Reflection.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
> >>> import java.lang.reflect.Field;
> >>> import java.lang.reflect.InvocationTargetException;
> >>> import java.lang.reflect.Method;
> >>> +import java.lang.reflect.Modifier;
> >>>
> >>> -public interface Reflection {
> >>> - static final Reflection INSTANCE =
> ReflectionFactory.newInstance();
> >>> +import org.apache.commons.lang3.ClassUtils;
> >>>
> >>> - Class<?> getClass(final ClassLoader classLoader, final String
> >>> className) throws Exception;
> >>> -
> >>> - Object getAnnotationValue(final Annotation annotation, final
> >>> String name) throws IllegalAccessException, InvocationTargetException;
> >>> +/**
> >>> + * Security-agnostic "blueprint" class for reflection-related
> >>> operations.
> >>> + *
> >>> + * @version $Rev$ $Date$
> >>> + */
> >>> +public class Reflection {
> >>> +
> >>> + private static void setAccessibility(final Field field) {
> >>> + // FIXME 2011-03-27 jw:
> >>> + // - Why not simply call field.setAccessible(true)?
> >>> + // - Fields can not be abstract.
> >>> + if (!Modifier.isPublic(field.getModifiers())
> >>> + || (Modifier.isPublic(field.getModifiers()) &&
> >>> Modifier.isAbstract(field.getModifiers()))) {
> >>> + field.setAccessible(true);
> >>> + }
> >>> + }
> >>>
> >>> - ClassLoader getClassLoader(final Class<?> clazz);
> >>> + public static Class<?> getClass(final ClassLoader classLoader,
> >>> final String className) throws Exception {
> >>> + return ClassUtils.getClass(classLoader, className, true);
> >>> + }
> >>>
> >>> - String getProperty(final String name);
> >>> + public static Object getAnnotationValue(final Annotation
> >>> annotation, final String name)
> >>> + throws IllegalAccessException, InvocationTargetException {
> >>> + Method valueMethod;
> >>> + try {
> >>> + valueMethod =
> >>> annotation.annotationType().getDeclaredMethod(name);
> >>> + } catch (final NoSuchMethodException ex) {
> >>> + // do nothing
> >>> + valueMethod = null;
> >>> + }
> >>> + if (null != valueMethod) {
> >>> + if (!valueMethod.isAccessible()) {
> >>> + valueMethod.setAccessible(true);
> >>> + }
> >>> + return valueMethod.invoke(annotation);
> >>> + }
> >>> + return null;
> >>> + }
> >>>
> >>> - Field getDeclaredField(final Class<?> clazz, final String
> >>> fieldName);
> >>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
> >>> + final ClassLoader cl =
> >>> Thread.currentThread().getContextClassLoader();
> >>> + if (cl != null) {
> >>> + return cl;
> >>> + }
> >>> + return clazz.getClassLoader();
> >>> + }
> >>>
> >>> - Field[] getDeclaredFields(final Class<?> clazz);
> >>> + public static String getProperty(final String name) {
> >>> + return System.getProperty(name);
> >>> + }
> >>>
> >>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
> >>> Class<?>... parameters);
> >>> + public static Field getDeclaredField(final Class<?> clazz, final
> >>> String fieldName) {
> >>> + final Field f;
> >>> + try {
> >>> + f = clazz.getDeclaredField(fieldName);
> >>> + } catch (final NoSuchFieldException e) {
> >>> + return null;
> >>> + }
> >>> + setAccessibility(f);
> >>> + return f;
> >>> + }
> >>>
> >>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
> >>> final Class<?>... parameters);
> >>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
> >>> + final Field[] fields = clazz.getDeclaredFields();
> >>> + if (fields.length > 0) {
> >>> + for (final Field f : fields) {
> >>> + if (!f.isAccessible()) {
> >>> + f.setAccessible(true);
> >>> + }
> >>> + }
> >>> + }
> >>> + return fields;
> >>> + }
> >>>
> >>> - Method[] getDeclaredMethods(final Class<?> clazz);
> >>> + public static Constructor<?> getDeclaredConstructor(final
> >>> Class<?> clazz, final Class<?>... parameters) {
> >>> + try {
> >>> + return clazz.getDeclaredConstructor(parameters);
> >>> + } catch (final NoSuchMethodException e) {
> >>> + return null;
> >>> + }
> >>> + }
> >>>
> >>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
> >>> + public static Method getDeclaredMethod(final Class<?> clazz,
> >>> final String name, final Class<?>... parameters) {
> >>> + try {
> >>> + return clazz.getDeclaredMethod(name, parameters);
> >>> + } catch (final NoSuchMethodException e) {
> >>> + return null;
> >>> + }
> >>> + }
> >>>
> >>> - Method getPublicMethod(final Class<?> clazz, final String
> >>> methodName);
> >>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
> >>> + return clazz.getDeclaredMethods();
> >>> + }
> >>>
> >>> - <T> T newInstance(final Class<T> cls);
> >>> + public static Constructor<?>[] getDeclaredConstructors(final
> >>> Class<?> clazz) {
> >>> + return clazz.getDeclaredConstructors();
> >>> + }
> >>>
> >>> - public static class ReflectionFactory {
> >>> - public static Reflection newInstance() {
> >>> - if (System.getSecurityManager() != null) {
> >>> - return new SecurityManagerReflection();
> >>> - }
> >>> - return new DefaultReflection();
> >>> + public static Method getPublicMethod(final Class<?> clazz, final
> >>> String methodName) {
> >>> + try {
> >>> + return clazz.getMethod(methodName);
> >>> + } catch (final NoSuchMethodException e) {
> >>> + return null;
> >>> }
> >>> + }
> >>>
> >>> - private ReflectionFactory() {
> >>> - // no-op
> >>> + public static <T> T newInstance(final Class<T> cls) {
> >>> + try {
> >>> + return cls.newInstance();
> >>> + } catch (final Exception ex) {
> >>> + throw new RuntimeException("Cannot instantiate : " + cls,
> >>> ex);
> >>> }
> >>> }
> >>> +
> >>> }
> >>>
> >>> Propchange: bval/branches/bval-11/bval-jsr/
> >>>
> >>> ------------------------------------------------------------
> >>> ------------------
> >>> --- svn:ignore (added)
> >>> +++ svn:ignore Wed Oct 1 04:37:36 2014
> >>> @@ -0,0 +1,4 @@
> >>> +.classpath
> >>> +.project
> >>> +.settings
> >>> +target
> >>>
> >>> Propchange: bval/branches/bval-11/bval-jsr/
> >>>
> >>> ------------------------------------------------------------
> >>> ------------------
> >>> --- svn:mergeinfo (added)
> >>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
> >>> @@ -0,0 +1,2 @@
> >>> +/bval/trunk/bval-jsr303:1598345
> >>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
> >>>
> >>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
> >>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
> >>> @@ -79,13 +79,73 @@
> >>> <plugins>
> >>> <plugin>
> >>> <groupId>org.apache.maven.plugins</groupId>
> >>> +
> <artifactId>maven-resources-plugin</artifactId>
> >>> + <executions>
> >>> + <execution>
> >>> + <id>default-testResources</id>
> >>> + <phase />
> >>> + <goals>
> >>> + <goal>testResources</goal>
> >>> + </goals>
> >>> + </execution>
> >>> + </executions>
> >>> + </plugin>
> >>> + <plugin>
> >>> + <groupId>org.apache.maven.plugins</groupId>
> >>> + <artifactId>maven-antrun-plugin</artifactId>
> >>> + <executions>
> >>> + <execution>
> >>> + <id>filter-testResources</id>
> >>> + <phase>process-test-resources</phase>
> >>> + <goals>
> >>> + <goal>run</goal>
> >>> + </goals>
> >>> + <configuration>
> >>> + <target>
> >>> + <mkdir
> >>> dir="${project.build.testOutputDirectory}" />
> >>> + <condition property="slash"
> >>> value="/" else="">
> >>> + <os family="windows" />
> >>> + </condition>
> >>> + <copy
> >>> todir="${project.build.testOutputDirectory}" overwrite="true">
> >>> + <fileset
> >>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
> >>> + </copy>
> >>> + <copy
> >>> todir="${project.build.testOutputDirectory}" overwrite="true">
> >>> + <fileset
> >>> file="${project.basedir}/src/test/resources/java.policy" />
> >>> + <filterchain>
> >>> + <expandproperties />
> >>> + <!-- append extra
> >>> slash on windows only -->
> >>> + <replacestring
> >>> from="file://" to="file://${slash}" />
> >>> + <replacestring
> >>> from="${file.separator}" to="/" />
> >>> + <!-- preserve
> >>> system-specific file separator -->
> >>> + <expandproperties>
> >>> + <propertyset>
> >>> + <propertyref
> >>> prefix="project." />
> >>> + <globmapper
> >>> from="*" to="preserve.*" />
> >>> + </propertyset>
> >>> + </expandproperties>
> >>> + </filterchain>
> >>> + </copy>
> >>> + </target>
> >>> + </configuration>
> >>> + </execution>
> >>> + </executions>
> >>> + <dependencies>
> >>> + <dependency>
> >>> + <groupId>org.apache.ant</groupId>
> >>> + <artifactId>ant</artifactId>
> >>> + <version>1.9.3</version>
> >>> + </dependency>
> >>> + </dependencies>
> >>> + </plugin>
> >>> + <plugin>
> >>> + <groupId>org.apache.maven.plugins</groupId>
> >>>
> <artifactId>maven-surefire-plugin</artifactId>
> >>> <configuration>
> >>> <includes>
> >>> <include>**/*Test.java</include>
> >>> <include>**/*TestCase.java</include>
> >>> </includes>
> >>> - <argLine>-Djava.security.manager
> >>>
> >>> -Djava.security.policy=${project.basedir}/src/test/
> >>> resources/java.policy</argLine>
> >>> + <argLine>-Djava.security.manager
> >>>
> >>> -Djava.security.policy=${project.build.testOutputDirectory}/java.
> >>> policy</argLine>
> >>> </configuration>
> >>> </plugin>
> >>> </plugins>
> >>> @@ -103,6 +163,10 @@
> >>> <groupId>org.apache.commons</groupId>
> >>> <artifactId>commons-lang3</artifactId>
> >>> </dependency>
> >>> + <dependency>
> >>> + <groupId>org.apache.commons</groupId>
> >>> + <artifactId>commons-weaver-privilizer-api</artifactId>
> >>> + </dependency>
> >>> <!-- optional dependencies -->
> >>> <dependency>
> >>> <groupId>org.apache.bval</groupId>
> >>> @@ -235,6 +299,10 @@
> >>> </includes>
> >>> </configuration>
> >>> </plugin>
> >>> + <plugin>
> >>> + <groupId>org.apache.commons</groupId>
> >>> + <artifactId>commons-weaver-maven-plugin</artifactId>
> >>> + </plugin>
> >>> </plugins>
> >>> </build>
> >>> </project>
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> AnnotationConstraintBuilder.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.
> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> AnnotationConstraintBuilder.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> AnnotationConstraintBuilder.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -18,27 +18,9 @@
> >>> */
> >>> package org.apache.bval.jsr;
> >>>
> >>> -import org.apache.bval.jsr.groups.GroupsComputer;
> >>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> >>> -import org.apache.bval.util.AccessStrategy;
> >>> -import org.apache.commons.lang3.reflect.TypeUtils;
> >>> -
> >>> -import javax.validation.Constraint;
> >>> -import javax.validation.ConstraintDeclarationException;
> >>> -import javax.validation.ConstraintDefinitionException;
> >>> -import javax.validation.ConstraintTarget;
> >>> -import javax.validation.ConstraintValidator;
> >>> -import javax.validation.ConstraintValidatorFactory;
> >>> -import javax.validation.OverridesAttribute;
> >>> -import javax.validation.Payload;
> >>> -import javax.validation.ReportAsSingleViolation;
> >>> -import
> javax.validation.constraintvalidation.SupportedValidationTarget;
> >>> -import javax.validation.constraintvalidation.ValidationTarget;
> >>> import java.lang.annotation.Annotation;
> >>> import java.lang.reflect.InvocationTargetException;
> >>> import java.lang.reflect.Method;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>> import java.util.Arrays;
> >>> import java.util.Collections;
> >>> import java.util.HashMap;
> >>> @@ -50,6 +32,24 @@ import java.util.Set;
> >>> import java.util.logging.Level;
> >>> import java.util.logging.Logger;
> >>>
> >>> +import javax.validation.Constraint;
> >>> +import javax.validation.ConstraintDeclarationException;
> >>> +import javax.validation.ConstraintDefinitionException;
> >>> +import javax.validation.ConstraintTarget;
> >>> +import javax.validation.ConstraintValidator;
> >>> +import javax.validation.ConstraintValidatorFactory;
> >>> +import javax.validation.OverridesAttribute;
> >>> +import javax.validation.Payload;
> >>> +import javax.validation.ReportAsSingleViolation;
> >>> +import
> javax.validation.constraintvalidation.SupportedValidationTarget;
> >>> +import javax.validation.constraintvalidation.ValidationTarget;
> >>> +
> >>> +import org.apache.bval.jsr.groups.GroupsComputer;
> >>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> >>> +import org.apache.bval.util.AccessStrategy;
> >>> +import org.apache.commons.lang3.reflect.TypeUtils;
> >>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>> +
> >>> /**
> >>> * Description: helper class that builds a {@link
> ConstraintValidation}
> >>> or its
> >>> * composite constraint validations by parsing the jsr-annotations
> and
> >>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
> >>> }
> >>>
> >>> /** build attributes, payload, groups from 'annotation' */
> >>> + @Privileged
> >>> private void buildFromAnnotation() {
> >>> - if (constraintValidation.getAnnotation() != null) {
> >>> - if (System.getSecurityManager() == null) {
> >>> - doBuildFromAnnotations();
> >>> - } else {
> >>> - AccessController.doPrivileged(new
> >>> PrivilegedAction<Object>() {
> >>> - public Object run() {
> >>> - doBuildFromAnnotations();
> >>> - return null;
> >>> - }
> >>> - });
> >>> - }
> >>> + if (constraintValidation.getAnnotation() == null) {
> >>> + return;
> >>> }
> >>> - }
> >>> -
> >>> - private void doBuildFromAnnotations() {
> >>> final Class<? extends Annotation> annotationType =
> >>> constraintValidation.getAnnotation().annotationType();
> >>>
> >>> boolean foundPayload = false;
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/AnnotationProcessor.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.
> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/AnnotationProcessor.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/AnnotationProcessor.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
> >>> import org.apache.bval.util.AccessStrategy;
> >>> import org.apache.bval.util.reflection.Reflection;
> >>> import org.apache.commons.lang3.ArrayUtils;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>
> >>> import javax.validation.Constraint;
> >>> import javax.validation.ConstraintValidator;
> >>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
> >>> import javax.validation.constraintvalidation.ValidationTarget;
> >>> import javax.validation.groups.ConvertGroup;
> >>> import javax.validation.groups.Default;
> >>> +
> >>> import java.lang.annotation.Annotation;
> >>> import java.lang.reflect.AnnotatedElement;
> >>> import java.lang.reflect.InvocationTargetException;
> >>> @@ -44,6 +47,7 @@ import java.util.Set;
> >>> * annotations, including composed constraints and the resolution of
> >>> * {@link ConstraintValidator} implementations.
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public final class AnnotationProcessor {
> >>> /** {@link ApacheFactoryContext} used */
> >>> private final ApacheFactoryContext factoryContext;
> >>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
> >>> * annotated by @Constraint) whose value element has a return
> >>> type of an
> >>> * array of constraint annotations in a special way.
> >>> */
> >>> - final Object result =
> >>> Reflection.INSTANCE.getAnnotationValue(annotation,
> >>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> >>> + final Object result =
> >>> + Reflection.getAnnotationValue(annotation,
> >>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> >>> if (result instanceof Annotation[]) {
> >>> boolean changed = false;
> >>> for (final Annotation each : (Annotation[]) result) {
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ApacheFactoryContext.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.
> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ApacheFactoryContext.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ApacheFactoryContext.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -18,6 +18,18 @@
> >>> */
> >>> package org.apache.bval.jsr;
> >>>
> >>> +import java.lang.reflect.Constructor;
> >>> +import java.util.ArrayList;
> >>> +import java.util.List;
> >>> +
> >>> +import javax.validation.ConstraintValidatorFactory;
> >>> +import javax.validation.MessageInterpolator;
> >>> +import javax.validation.ParameterNameProvider;
> >>> +import javax.validation.TraversableResolver;
> >>> +import javax.validation.ValidationException;
> >>> +import javax.validation.Validator;
> >>> +import javax.validation.ValidatorContext;
> >>> +
> >>> import org.apache.bval.IntrospectorMetaBeanFactory;
> >>> import org.apache.bval.MetaBeanBuilder;
> >>> import org.apache.bval.MetaBeanFactory;
> >>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
> >>> import org.apache.bval.xml.XMLMetaBeanManager;
> >>> import org.apache.commons.lang3.StringUtils;
> >>> import org.apache.commons.lang3.reflect.ConstructorUtils;
> >>> -
> >>> -import javax.validation.ConstraintValidatorFactory;
> >>> -import javax.validation.MessageInterpolator;
> >>> -import javax.validation.ParameterNameProvider;
> >>> -import javax.validation.TraversableResolver;
> >>> -import javax.validation.ValidationException;
> >>> -import javax.validation.Validator;
> >>> -import javax.validation.ValidatorContext;
> >>> -import java.lang.reflect.Constructor;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>> -import java.util.ArrayList;
> >>> -import java.util.List;
> >>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>
> >>> /**
> >>> * Description: Represents the context that is used to create
> >>> * <code>ClassValidator</code> instances.<br/>
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public class ApacheFactoryContext implements ValidatorContext {
> >>> private final ApacheValidatorFactory factory;
> >>> private final MetaBeanFinder metaBeanFinder;
> >>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
> >>> return new MetaBeanManager(new
> >>> MetaBeanBuilder(builders.toArray(new
> >>> MetaBeanFactory[builders.size()])));
> >>> }
> >>>
> >>> + @Privileged
> >>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
> >>> Class<F> cls) {
> >>> - if (System.getSecurityManager() == null) {
> >>> - return doCreateMetaBeanFactory(cls);
> >>> - }
> >>> - return AccessController.doPrivileged(new PrivilegedAction<F>()
> >>> {
> >>> - public F run() {
> >>> - return doCreateMetaBeanFactory(cls);
> >>> - }
> >>> - });
> >>> - }
> >>> -
> >>> - private <F extends MetaBeanFactory> F
> >>> doCreateMetaBeanFactory(final Class<F> cls) {
> >>> try {
> >>> Constructor<F> c =
> >>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> >>> ApacheFactoryContext.this.getClass());
> >>> if (c != null) {
> >>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
> >>>
> >>> private Class<?> loadClass(final String className) {
> >>> try {
> >>> - return Class.forName(className, true,
> >>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
> >>> + return Class.forName(className, true,
> >>> Reflection.getClassLoader(ApacheFactoryContext.class));
> >>> } catch (ClassNotFoundException ex) {
> >>> throw new ValidationException("Unable to load class: " +
> >>> className, ex);
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidationProvider.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidationProvider.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidationProvider.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -18,16 +18,15 @@
> >>> */
> >>> package org.apache.bval.jsr;
> >>>
> >>> -import org.apache.commons.lang3.ClassUtils;
> >>> -
> >>> import javax.validation.Configuration;
> >>> import javax.validation.ValidationException;
> >>> import javax.validation.ValidatorFactory;
> >>> import javax.validation.spi.BootstrapState;
> >>> import javax.validation.spi.ConfigurationState;
> >>> import javax.validation.spi.ValidationProvider;
> >>> -import java.security.AccessController;
> >>> -import java.security.PrivilegedAction;
> >>> +
> >>> +import org.apache.commons.lang3.ClassUtils;
> >>> +import org.apache.commons.weaver.privilizer.Privileged;
> >>>
> >>> /**
> >>> * Description: Implementation of {@link ValidationProvider} for jsr
> >>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
> >>> // No privileges should be required to access the
> constructor,
> >>> // because the classloader of ApacheValidationProvider will
> >>> always
> >>> // be an ancestor of the loader of validatorFactoryClass.
> >>> - return (System.getSecurityManager() == null)
> >>> - ? instantiateValidatorFactory(validatorFactoryClass,
> >>> configuration) : AccessController
> >>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>()
> >>> {
> >>> - public ValidatorFactory run() {
> >>> - return
> >>> instantiateValidatorFactory(validatorFactoryClass, configuration);
> >>> - }
> >>> - });
> >>> + return instantiateValidatorFactory(validatorFactoryClass,
> >>> configuration);
> >>> }
> >>>
> >>> + @Privileged
> >>> private static ValidatorFactory instantiateValidatorFactory(
> >>> final Class<? extends ValidatorFactory>
> >>> validatorFactoryClass, final ConfigurationState configuration) {
> >>> try {
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorConfiguration.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.
> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorConfiguration.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorConfiguration.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
> >>> * class is presumed have a constructor that accepts a single
> >>> * {@link ConfigurationState} argument.
> >>> */
> >>> - String VALIDATOR_FACTORY_CLASSNAME =
> >>> "apache.bval.validator-factory-classname";
> >>> + String VALIDATOR_FACTORY_CLASSNAME =
> >>> "apache.bval.validator-factory-classname";
> >>>
> >>> /**
> >>> * Specifies the names, delimited by whitespace, of
> >>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
> >>> * <li>default (no-args) constructor</li>
> >>> * </ol>
> >>> */
> >>> - String METABEAN_FACTORY_CLASSNAMES =
> >>> "apache.bval.metabean-factory-classnames";
> >>> + String METABEAN_FACTORY_CLASSNAMES =
> >>> "apache.bval.metabean-factory-classnames";
> >>> }
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorFactory.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorFactory.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
> >>> ApacheValidatorFactory.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
> >>> import org.apache.bval.util.reflection.Reflection;
> >>> import org.apache.commons.lang3.ArrayUtils;
> >>> import org.apache.commons.lang3.ClassUtils;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>
> >>> import javax.validation.ConstraintValidatorFactory;
> >>> import javax.validation.MessageInterpolator;
> >>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
> >>> import javax.validation.Validator;
> >>> import javax.validation.ValidatorFactory;
> >>> import javax.validation.spi.ConfigurationState;
> >>> +
> >>> import java.io.Closeable;
> >>> import java.lang.annotation.Annotation;
> >>> import java.lang.reflect.Modifier;
> >>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
> >>> * validators.<br/>
> >>> * This instance is not thread-safe.<br/>
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public class ApacheValidatorFactory implements ValidatorFactory,
> >>> Cloneable {
> >>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
> >>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
> >>> ConstraintDefaults();
> >>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
> >>>
> >>> private <T> T newInstance(final Class<T> cls) {
> >>> try {
> >>> - return Reflection.INSTANCE.newInstance(cls);
> >>> + return Reflection.newInstance(cls);
> >>> } catch (final RuntimeException e) {
> >>> throw new ValidationException(e.getCause());
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/BeanDescriptorImpl.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.
> >>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/BeanDescriptorImpl.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/BeanDescriptorImpl.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
> >>> import org.apache.bval.util.AccessStrategy;
> >>> import org.apache.bval.util.reflection.Reflection;
> >>> import org.apache.commons.lang3.ClassUtils;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing;
> >>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> >>>
> >>> import javax.validation.Constraint;
> >>> import javax.validation.ConstraintDeclarationException;
> >>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
> >>> import javax.validation.metadata.ParameterDescriptor;
> >>> import javax.validation.metadata.PropertyDescriptor;
> >>> import javax.validation.metadata.ReturnValueDescriptor;
> >>> +
> >>> import java.beans.Introspector;
> >>> import java.lang.annotation.Annotation;
> >>> import java.lang.reflect.AccessibleObject;
> >>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
> >>> /**
> >>> * Description: Implements {@link BeanDescriptor}.<br/>
> >>> */
> >>> +@Privilizing(@CallTo(Reflection.class))
> >>> public class BeanDescriptorImpl extends ElementDescriptorImpl
> >>> implements BeanDescriptor {
> >>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
> >>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
> >>> private static final Validation[] EMPTY_VALIDATION = new
> >>> Validation[0];
> >>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
> >>> Class<?> current = prop.getParentMetaBean().getBeanClass();
> >>> while (current != null && current != Object.class &&
> >>> (!methodFound || !fieldFound)) {
> >>> if (!fieldFound) {
> >>> - final Field field =
> >>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
> >>> + final Field field =
> >>> Reflection.getDeclaredField(current, prop.getName());
> >>> if (field != null) {
> >>> processConvertGroup(edesc, field);
> >>> fieldFound = true;
> >>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
> >>>
> >>> if (!methodFound) {
> >>> final String name =
> >>> Character.toUpperCase(prop.getName().charAt(0)) +
> >>> prop.getName().substring(1);
> >>> - Method m =
> >>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
> >>> + Method m = Reflection.getDeclaredMethod(current, "get"
> >>> +
> >>> name);
> >>> if (m != null) {
> >>> processConvertGroup(edesc, m);
> >>> methodFound = true;
> >>> } else {
> >>> - m =
> >>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
> >>> + m = Reflection.getDeclaredMethod(current, "is" +
> >>> name);
> >>> if (m != null) {
> >>> processConvertGroup(edesc, m);
> >>> methodFound = true;
> >>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
> >>> }
> >>>
> >>> private void buildConstructorConstraints() throws
> >>> InvocationTargetException, IllegalAccessException {
> >>> - for (final Constructor<?> cons :
> >>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
> >>> {
> >>> + for (final Constructor<?> cons :
> >>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
> >>> final ConstructorDescriptorImpl consDesc = new
> >>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
> >>>
> >>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
> >>> consDesc);
> >>>
> >>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
> >>> final List<Class<?>> classHierarchy =
> >>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
> >>> current);
> >>> classHierarchy.remove(current);
> >>>
> >>> - for (final Method method :
> >>> Reflection.INSTANCE.getDeclaredMethods(current)) {
> >>> + for (final Method method :
> >>> Reflection.getDeclaredMethods(current)) {
> >>> if (Modifier.isStatic(method.getModifiers()) ||
> >>> method.isSynthetic()) {
> >>> continue;
> >>> }
> >>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
> >>>
> >>> final Collection<Method> parents = new
> >>> ArrayList<Method>();
> >>> for (final Class<?> clazz : classHierarchy) {
> >>> - final Method overriden =
> >>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> >>> method.getParameterTypes());
> >>> - if (overriden != null) {
> >>> - parents.add(overriden);
> >>> - processMethod(overriden, methodDesc);
> >>> + final Method overridden =
> >>> Reflection.getDeclaredMethod(clazz, method.getName(),
> >>> method.getParameterTypes());
> >>> + if (overridden != null) {
> >>> + parents.add(overridden);
> >>> + processMethod(overridden, methodDesc);
> >>> }
> >>> }
> >>>
> >>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
> >>> final Class<?>[] interfaces =
> >>> method.getDeclaringClass().getInterfaces();
> >>> final Collection<Method> itfWithThisMethod = new
> >>> ArrayList<Method>();
> >>> for (final Class<?> i : interfaces) {
> >>> - final Method m =
> >>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
> >>> method.getParameterTypes());
> >>> + final Method m =
> >>> Reflection.getDeclaredMethod(i, method.getName(),
> >>> method.getParameterTypes());
> >>> if (m != null) {
> >>> itfWithThisMethod.add(m);
> >>> }
> >>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
> >>> returnValid++;
> >>> }
> >>> for (final Class<?> clazz : classHierarchy) {
> >>> - final Method overriden =
> >>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> >>> method.getParameterTypes());
> >>> - if (overriden != null) {
> >>> - if (overriden.getAnnotation(Valid.class)
> !=
> >>> null) {
> >>> + final Method overridden =
> >>> Reflection.getDeclaredMethod(clazz, method.getName(),
> >>> method.getParameterTypes());
> >>> + if (overridden != null) {
> >>> + if (overridden.getAnnotation(Valid.class)
> >>> != null) {
> >>> returnValid++;
> >>> }
> >>> }
> >>>
> >>> Modified:
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ClassValidator.java
> >>> URL:
> >>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
> >>> jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?
> >>> rev=1628598&r1=1628597&r2=1628598&view=diff
> >>>
> >>> ============================================================
> >>> ==================
> >>> ---
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ClassValidator.java
> >>> (original)
> >>> +++
> >>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
> >>> bval/jsr/ClassValidator.java
> >>> Wed Oct 1 04:37:36 2014
> >>> @@ -18,6 +18,33 @@
> >>> */
> >>> package org.apache.bval.jsr;
> >>>
> >>> +import java.lang.reflect.Constructor;
> >>> +import java.lang.reflect.Member;
> >>> +import java.lang.reflect.Method;
> >>> +import java.lang.reflect.Modifier;
> >>> +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 javax.validation.ConstraintDeclarationException;
> >>> +import javax.validation.ConstraintDefinitionException;
> >>> +import javax.validation.ConstraintTarget;
> >>> +import javax.validation.ConstraintViolation;
> >>> +import javax.validation.ElementKind;
> >>> +import javax.validation.ValidationException;
> >>> +import javax.validation.executable.ExecutableValidator;
> >>> +import javax.validation.groups.Default;
> >>> +import javax.validation.metadata.BeanDescriptor;
> >>> +import javax.validation.metadata.ConstraintDescriptor;
> >>> +import javax.validation.metadata.ElementDescriptor;
> >>> +import javax.validation.metadata.ParameterDescriptor;
> >>> +import javax.validation.metadata.PropertyDescriptor;
> >>> +
> >>> import org.apache.bval.DynamicMetaBean;
> >>> import org.apache.bval.MetaBeanFinder;
> >>> import org.apache.bval.jsr.groups.Group;
> >>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
> >>> import org.apache.commons.lang3.ClassUtils;
> >>> import org.apache.commons.lang3.ObjectUtils;
> >>> import org.apache.commons.lang3.reflect.TypeUtils;
> >>> -
> >>> -import javax.validation.ConstraintDeclarationException;
> >>> -import javax.validation.ConstraintDefinitionException;
> >>> -import javax.validation.ConstraintTarget;
> >>> -import javax.validation.ConstraintViolation;
> >>> -import javax.validation.ElementKind;
> >>> -import javax.validation.ValidationException;
> >>> -import javax.validation.executable.ExecutableValidator;
> >>> -import javax.validation.groups.Default;
> >>> -import javax.validation.metadata.BeanDe
> >>
> >> ...
>
--
Daniel Cunha (soro) <http://www.cejug.net>
Blog: http://www.danielsoro.com.br
Twitter: https://twitter.com/dvlc_
GitHub: https://github.com/danielsoro
LinkedIn: http://www.linkedin.com/in/danielvlcunha
Re: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Yep
Not an issue afaik
Le 6 déc. 2014 13:41, "Roman Stumm" <ro...@gmx.de> a écrit :
> I can compile the trunk with java7, but not with java8:
>
> [ERROR] Failed to execute goal org.apache.maven.plugins:
> maven-compiler-plugin:2.3.2:compile (default-compile) on project
> bval-jsr303: Compilation failure: Compilation failure:
> [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> main/java/org/apache/bval/jsr303/ConstraintValidation.java:[141,8] error:
> reference to validate is ambiguous
> [ERROR]
> [ERROR] L extends ValidationListener declared in method
> <L>validate(ValidationContext<L>)
> [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> main/java/org/apache/bval/jsr303/ConstraintValidation.java:[180,35]
> error: reference to validate is ambiguous
> [ERROR]
> [ERROR] L extends ValidationListener declared in method
> <L>validate(ValidationContext<L>)
> [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> main/java/org/apache/bval/jsr303/ConstraintValidation.java:[197,24]
> error: reference to validate is ambiguous
> [ERROR]
> [ERROR] L extends ValidationListener declared in method
> <L>validate(ValidationContext<L>)
> [ERROR] /Users/roman/projects/apache/bval-trunk/bval-jsr303/src/
> main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java:[209,26]
> error: reference to validate is ambiguous
>
> Am 06.12.14 13:12, schrieb Daniel Cunha:
>
>> I try see something here.
>>
>> But I have a problem.. my laptop not build bval.
>> The build stop in Building Apache BVal :: bval-jsr 1.1.0-alpha-SNAPSHOT
>>
>> Linux 3.13.0 32bits
>> 4GB ram
>> JDK 1.8.0_25
>>
>> On Sat, Dec 6, 2014 at 8:08 AM, Romain Manni-Bucau <rmannibucau@gmail.com
>> >
>> wrote:
>>
>> Hi Matt,
>>>
>>> I have 2 questions:
>>> 1) surely obvious but I dont get why you re-set the accessible (if
>>> (mustSet)). While we need it accessible we can keep it set to true no?
>>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
>>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>>>
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau
>>> http://www.tomitribe.com
>>> http://rmannibucau.wordpress.com
>>> https://github.com/rmannibucau
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: <mb...@apache.org>
>>> Date: 2014-10-01 6:37 GMT+02:00
>>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
>>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
>>> To: commits@bval.apache.org
>>>
>>>
>>> Author: mbenson
>>> Date: Wed Oct 1 04:37:36 2014
>>> New Revision: 1628598
>>>
>>> URL: http://svn.apache.org/r1628598
>>> Log:
>>> use commons weaver/privilizer
>>>
>>> Removed:
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/DefaultReflection.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/SecurityManagerReflection.java
>>> Modified:
>>> bval/branches/bval-11/bval-core/pom.xml
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/ConstructorAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/model/MetaBean.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/AccessStrategy.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/BValVersion.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/FieldAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/IndexedAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/KeyedAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/MethodAccess.java
>>>
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/Reflection.java
>>> bval/branches/bval-11/bval-jsr/ (props changed)
>>> bval/branches/bval-11/bval-jsr/pom.xml
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> AnnotationConstraintBuilder.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/AnnotationProcessor.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ApacheFactoryContext.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidationProvider.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorConfiguration.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorFactory.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/BeanDescriptorImpl.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ClassValidator.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ConfigurationImpl.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ConstraintAnnotationAttributes.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ConstraintDefaults.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ConstraintValidation.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> DefaultMessageInterpolator.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> DefaultValidationProviderResolver.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/JsrMetaBeanFactory.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/resolver/DefaultTraversableResolver.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/util/ClassHelper.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
>>> AnnotationProxyBuilder.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/
>>> ValidationMappingParser.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/xml/ValidationParser.java
>>>
>>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/
>>> ValidationParserTest.java
>>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
>>> bval/branches/bval-11/bval-tck11/ (props changed)
>>> bval/branches/bval-11/bval-xstream/pom.xml
>>>
>>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/
>>> XMLMetaBeanManager.java
>>> bval/branches/bval-11/pom.xml
>>>
>>> Modified: bval/branches/bval-11/bval-core/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> --- bval/branches/bval-11/bval-core/pom.xml (original)
>>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
>>> @@ -46,6 +46,10 @@
>>> <artifactId>commons-beanutils-core</artifactId>
>>> </dependency>
>>> <dependency>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>>> + </dependency>
>>> + <dependency>
>>> <groupId>junit</groupId>
>>> <artifactId>junit</artifactId>
>>> <scope>test</scope>
>>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
>>> </execution>
>>> </executions>
>>> </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>>> + </plugin>
>>> </plugins>
>>> <pluginManagement>
>>> <plugins>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/ConstructorAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/ConstructorAccess.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/ConstructorAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/ConstructorAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,13 +16,11 @@
>>> */
>>> package org.apache.bval;
>>>
>>> -import org.apache.bval.util.AccessStrategy;
>>> -
>>> import java.lang.annotation.ElementType;
>>> import java.lang.reflect.Constructor;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> +
>>> +import org.apache.bval.util.AccessStrategy;
>>>
>>> public class ConstructorAccess extends AccessStrategy {
>>>
>>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>>>
>>> public ConstructorAccess(final Constructor<?> constructor) {
>>> this.constructor = constructor;
>>> - if (!constructor.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - constructor.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - constructor.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(constructor);
>>> }
>>>
>>> @Override
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/model/MetaBean.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/model/MetaBean.java?rev=
>>> 1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/model/MetaBean.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/model/MetaBean.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -17,6 +17,8 @@
>>> package org.apache.bval.model;
>>>
>>> import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import java.beans.Introspector;
>>> import java.lang.reflect.Constructor;
>>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
>>> *
>>> * @see MetaProperty
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class MetaBean extends FeaturesCapable implements Cloneable,
>>> Features.Bean {
>>> private static final long serialVersionUID = 2L;
>>>
>>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
>>> int i = 0;
>>> Class<?> clazz = beanClass;
>>> while (clazz != null && clazz != Object.class) {
>>> - for (final Field f :
>>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
>>> + for (final Field f : Reflection.getDeclaredFields(
>>> clazz))
>>> {
>>> i++;
>>> final String name = f.getName();
>>> if (!fields.containsKey(name)) {
>>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
>>> protected MethodComparator(final Class<?> beanClass) {
>>> Class<?> clazz = beanClass;
>>> while (clazz != null && clazz != Object.class) {
>>> - for (final Method m :
>>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
>>> + for (final Method m :
>>> Reflection.getDeclaredMethods(clazz)) {
>>> methods.put(m,
>>> Arrays.hashCode(m.getParameterTypes()));
>>> }
>>> clazz = clazz.getSuperclass();
>>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
>>> private final Map<Constructor<?>, Integer> constructors = new
>>> HashMap<Constructor<?>, Integer>();
>>>
>>> protected ConstructorComparator(final Class<?> beanClass) {
>>> - for (final Constructor<?> c :
>>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
>>> + for (final Constructor<?> c :
>>> Reflection.getDeclaredConstructors(beanClass)) {
>>> constructors.put(c,
>>> Arrays.hashCode(c.getParameterTypes()));
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/AccessStrategy.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/AccessStrategy.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/AccessStrategy.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/AccessStrategy.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -17,8 +17,11 @@
>>> package org.apache.bval.util;
>>>
>>> import java.lang.annotation.ElementType;
>>> +import java.lang.reflect.AccessibleObject;
>>> import java.lang.reflect.Type;
>>>
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +
>>> /**
>>> * Description: abstract class to encapsulate different strategies
>>> * to get the value of a Property. This class is designed such that
>>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
>>> * @return String
>>> */
>>> public abstract String getPropertyName();
>>> +
>>> + /**
>>> + * Set {@code accessibleObject} as being accessible
>>> + * @param accessibleObject
>>> + */
>>> + protected boolean setAccessible(AccessibleObject accessibleObject) {
>>> + if (accessibleObject.isAccessible()) {
>>> + return false;
>>> + }
>>> + doSetAccessible(accessibleObject);
>>> + return true;
>>> + }
>>> +
>>> + @Privileged
>>> + private void doSetAccessible(AccessibleObject accessibleObject) {
>>> + accessibleObject.setAccessible(true);
>>> + }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/BValVersion.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/BValVersion.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/BValVersion.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/BValVersion.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,18 +18,21 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> -import org.apache.bval.util.reflection.Reflection;
>>> -
>>> import java.io.IOException;
>>> import java.io.InputStream;
>>> import java.util.Properties;
>>> import java.util.StringTokenizer;
>>>
>>> +import org.apache.bval.util.reflection.Reflection;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>> +
>>> /**
>>> * This class contains version information for BVal.
>>> * It uses Ant's filter tokens to convert the template into a java
>>> * file with current information.
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class BValVersion {
>>>
>>> /** Project name */
>>> @@ -157,7 +160,7 @@ public class BValVersion {
>>> * {@inheritDoc}
>>> */
>>> public String toString() {
>>> - StringBuilder buf = new StringBuilder(80 * 40);
>>> + final StringBuilder buf = new StringBuilder(80 * 40);
>>> appendBanner(buf);
>>> buf.append("\n");
>>>
>>> @@ -169,8 +172,7 @@ public class BValVersion {
>>> appendProperty("java.vendor", buf).append("\n\n");
>>>
>>> buf.append("java.class.path:\n");
>>> - StringTokenizer tok = new StringTokenizer(
>>> - Reflection.INSTANCE.getProperty("java.class.path"));
>>> + final StringTokenizer tok = new
>>> StringTokenizer(Reflection.getProperty("java.class.path"));
>>> while (tok.hasMoreTokens()) {
>>> buf.append("\t").append(tok.nextToken());
>>> buf.append("\n");
>>> @@ -191,7 +193,6 @@ public class BValVersion {
>>> }
>>>
>>> private StringBuilder appendProperty(String prop, StringBuilder
>>> buf) {
>>> - return buf.append(prop).append(": ").append(
>>> - Reflection.INSTANCE.getProperty(prop));
>>> + return buf.append(prop).append(":
>>> ").append(Reflection.getProperty(prop));
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/FieldAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/FieldAccess.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/FieldAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/FieldAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
>>> import java.lang.annotation.ElementType;
>>> import java.lang.reflect.Field;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>>
>>> /**
>>> * Description: direct field access strategy.<br/>
>>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
>>> */
>>> public FieldAccess(final Field field) {
>>> this.field = field;
>>> - if (!field.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - field.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - field.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(field);
>>> }
>>>
>>> /**
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/IndexedAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/IndexedAccess.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/IndexedAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/IndexedAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,6 +16,7 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> +import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>>
>>> import java.lang.annotation.ElementType;
>>> @@ -28,7 +29,7 @@ import java.util.Map;
>>> /**
>>> * {@link AccessStrategy} to get an indexed member of an {@link
>>> Iterable}
>>> or
>>> * array object.
>>> - */
>>> + */
>>> public class IndexedAccess extends AccessStrategy {
>>> private static final TypeVariable<?> ITERABLE_TYPE =
>>> Iterable.class.getTypeParameters()[0];
>>>
>>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
>>> }
>>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Iterable.class);
>>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
>>> typeArguments.get(ITERABLE_TYPE) : Object.class;
>>> + return
>>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>>> ITERABLE_TYPE), Object.class);
>>> }
>>> return null;
>>> }
>>>
>>> - private Type containerType;
>>> - private Integer index;
>>> + private final Type containerType;
>>> + private final Integer index;
>>>
>>> /**
>>> * Create a new IndexedAccessStrategy instance.
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/KeyedAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/KeyedAccess.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/KeyedAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/KeyedAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -16,6 +16,7 @@
>>> */
>>> package org.apache.bval.util;
>>>
>>> +import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>>
>>> import java.lang.annotation.ElementType;
>>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
>>> public static Type getJavaElementType(Type containerType) {
>>> if (TypeUtils.isAssignable(containerType, Map.class)) {
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Map.class);
>>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
>>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
>>> + return
>>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>>> MAP_TYPEVARS[1]), Object.class);
>>> }
>>> return null;
>>> }
>>>
>>> - private Type containerType;
>>> - private Object key;
>>> + private final Type containerType;
>>> + private final Object key;
>>>
>>> /**
>>> * Create a new KeyedAccess instance.
>>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
>>> if (instance instanceof Map<?, ?>) {
>>> Map<?, ?> map = (Map<?, ?>) instance;
>>> Map<TypeVariable<?>, Type> typeArguments =
>>> TypeUtils.getTypeArguments(containerType, Map.class);
>>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
>>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
>>> MAP_TYPEVARS[0]);
>>> if (key == null || keyType == null ||
>>> TypeUtils.isInstance(key, keyType)) {
>>> return map.get(key);
>>> }
>>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
>>> */
>>> @Override
>>> public Type getJavaType() {
>>> - Type result = getJavaElementType(containerType);
>>> + final Type result = getJavaElementType(containerType);
>>> return result == null ? Object.class : result;
>>> }
>>>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/MethodAccess.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/MethodAccess.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/MethodAccess.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/MethodAccess.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> import java.lang.reflect.Type;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>>
>>> /**
>>> * Description: invoke a zero-argument method (getter)<br/>
>>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
>>> public MethodAccess(String propertyName, final Method method) {
>>> this.method = method;
>>> this.propertyName = propertyName;
>>> - if (!method.isAccessible()) {
>>> - if (System.getSecurityManager() == null) {
>>> - method.setAccessible(true);
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Void>() {
>>> - public Void run() {
>>> - method.setAccessible(true);
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> - }
>>> + setAccessible(method);
>>> }
>>>
>>> /**
>>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
>>> * the method name id not according to the JavaBeans
>>> standard.
>>> */
>>> public static String getPropertyName(Method member) {
>>> - String name = null;
>>> - String methodName = member.getName();
>>> + final String methodName = member.getName();
>>> if (methodName.startsWith("is")) {
>>> - name = Introspector.decapitalize(methodName.substring(2));
>>> - } /* else if ( methodName.startsWith("has")) {
>>> - name = Introspector.decapitalize(
>>> methodName.substring( 3 ) );
>>> - } */
>>> - // setter annotation is NOT supported in the spec
>>> - /* else if (method.getName().startsWith("set") &&
>>> method.getParameterTypes().length == 1) {
>>> - propName =
>>> Introspector.decapitalize(method.getName().substring(3));
>>> - } */
>>> - else if (methodName.startsWith("get")) {
>>> - name = Introspector.decapitalize(methodName.substring(3));
>>> + return Introspector.decapitalize(methodName.substring(2));
>>> + }
>>> + if (methodName.startsWith("get")) {
>>> + return Introspector.decapitalize(methodName.substring(3));
>>> }
>>> - return name;
>>> + return null;
>>> }
>>>
>>> /**
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/Reflection.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> core/src/main/java/org/apache/bval/util/reflection/
>>> Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/Reflection.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-core/src/main/java/org/apache/
>>> bval/util/reflection/Reflection.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
>>> import java.lang.reflect.Field;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> +import java.lang.reflect.Modifier;
>>>
>>> -public interface Reflection {
>>> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
>>> +import org.apache.commons.lang3.ClassUtils;
>>>
>>> - Class<?> getClass(final ClassLoader classLoader, final String
>>> className) throws Exception;
>>> -
>>> - Object getAnnotationValue(final Annotation annotation, final
>>> String name) throws IllegalAccessException, InvocationTargetException;
>>> +/**
>>> + * Security-agnostic "blueprint" class for reflection-related
>>> operations.
>>> + *
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class Reflection {
>>> +
>>> + private static void setAccessibility(final Field field) {
>>> + // FIXME 2011-03-27 jw:
>>> + // - Why not simply call field.setAccessible(true)?
>>> + // - Fields can not be abstract.
>>> + if (!Modifier.isPublic(field.getModifiers())
>>> + || (Modifier.isPublic(field.getModifiers()) &&
>>> Modifier.isAbstract(field.getModifiers()))) {
>>> + field.setAccessible(true);
>>> + }
>>> + }
>>>
>>> - ClassLoader getClassLoader(final Class<?> clazz);
>>> + public static Class<?> getClass(final ClassLoader classLoader,
>>> final String className) throws Exception {
>>> + return ClassUtils.getClass(classLoader, className, true);
>>> + }
>>>
>>> - String getProperty(final String name);
>>> + public static Object getAnnotationValue(final Annotation
>>> annotation, final String name)
>>> + throws IllegalAccessException, InvocationTargetException {
>>> + Method valueMethod;
>>> + try {
>>> + valueMethod =
>>> annotation.annotationType().getDeclaredMethod(name);
>>> + } catch (final NoSuchMethodException ex) {
>>> + // do nothing
>>> + valueMethod = null;
>>> + }
>>> + if (null != valueMethod) {
>>> + if (!valueMethod.isAccessible()) {
>>> + valueMethod.setAccessible(true);
>>> + }
>>> + return valueMethod.invoke(annotation);
>>> + }
>>> + return null;
>>> + }
>>>
>>> - Field getDeclaredField(final Class<?> clazz, final String
>>> fieldName);
>>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
>>> + final ClassLoader cl =
>>> Thread.currentThread().getContextClassLoader();
>>> + if (cl != null) {
>>> + return cl;
>>> + }
>>> + return clazz.getClassLoader();
>>> + }
>>>
>>> - Field[] getDeclaredFields(final Class<?> clazz);
>>> + public static String getProperty(final String name) {
>>> + return System.getProperty(name);
>>> + }
>>>
>>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
>>> Class<?>... parameters);
>>> + public static Field getDeclaredField(final Class<?> clazz, final
>>> String fieldName) {
>>> + final Field f;
>>> + try {
>>> + f = clazz.getDeclaredField(fieldName);
>>> + } catch (final NoSuchFieldException e) {
>>> + return null;
>>> + }
>>> + setAccessibility(f);
>>> + return f;
>>> + }
>>>
>>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
>>> final Class<?>... parameters);
>>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
>>> + final Field[] fields = clazz.getDeclaredFields();
>>> + if (fields.length > 0) {
>>> + for (final Field f : fields) {
>>> + if (!f.isAccessible()) {
>>> + f.setAccessible(true);
>>> + }
>>> + }
>>> + }
>>> + return fields;
>>> + }
>>>
>>> - Method[] getDeclaredMethods(final Class<?> clazz);
>>> + public static Constructor<?> getDeclaredConstructor(final
>>> Class<?> clazz, final Class<?>... parameters) {
>>> + try {
>>> + return clazz.getDeclaredConstructor(parameters);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> + }
>>> + }
>>>
>>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
>>> + public static Method getDeclaredMethod(final Class<?> clazz,
>>> final String name, final Class<?>... parameters) {
>>> + try {
>>> + return clazz.getDeclaredMethod(name, parameters);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> + }
>>> + }
>>>
>>> - Method getPublicMethod(final Class<?> clazz, final String
>>> methodName);
>>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
>>> + return clazz.getDeclaredMethods();
>>> + }
>>>
>>> - <T> T newInstance(final Class<T> cls);
>>> + public static Constructor<?>[] getDeclaredConstructors(final
>>> Class<?> clazz) {
>>> + return clazz.getDeclaredConstructors();
>>> + }
>>>
>>> - public static class ReflectionFactory {
>>> - public static Reflection newInstance() {
>>> - if (System.getSecurityManager() != null) {
>>> - return new SecurityManagerReflection();
>>> - }
>>> - return new DefaultReflection();
>>> + public static Method getPublicMethod(final Class<?> clazz, final
>>> String methodName) {
>>> + try {
>>> + return clazz.getMethod(methodName);
>>> + } catch (final NoSuchMethodException e) {
>>> + return null;
>>> }
>>> + }
>>>
>>> - private ReflectionFactory() {
>>> - // no-op
>>> + public static <T> T newInstance(final Class<T> cls) {
>>> + try {
>>> + return cls.newInstance();
>>> + } catch (final Exception ex) {
>>> + throw new RuntimeException("Cannot instantiate : " + cls,
>>> ex);
>>> }
>>> }
>>> +
>>> }
>>>
>>> Propchange: bval/branches/bval-11/bval-jsr/
>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> --- svn:ignore (added)
>>> +++ svn:ignore Wed Oct 1 04:37:36 2014
>>> @@ -0,0 +1,4 @@
>>> +.classpath
>>> +.project
>>> +.settings
>>> +target
>>>
>>> Propchange: bval/branches/bval-11/bval-jsr/
>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> --- svn:mergeinfo (added)
>>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
>>> @@ -0,0 +1,2 @@
>>> +/bval/trunk/bval-jsr303:1598345
>>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>>>
>>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
>>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
>>> @@ -79,13 +79,73 @@
>>> <plugins>
>>> <plugin>
>>> <groupId>org.apache.maven.plugins</groupId>
>>> + <artifactId>maven-resources-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> + <id>default-testResources</id>
>>> + <phase />
>>> + <goals>
>>> + <goal>testResources</goal>
>>> + </goals>
>>> + </execution>
>>> + </executions>
>>> + </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.maven.plugins</groupId>
>>> + <artifactId>maven-antrun-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> + <id>filter-testResources</id>
>>> + <phase>process-test-resources</phase>
>>> + <goals>
>>> + <goal>run</goal>
>>> + </goals>
>>> + <configuration>
>>> + <target>
>>> + <mkdir
>>> dir="${project.build.testOutputDirectory}" />
>>> + <condition property="slash"
>>> value="/" else="">
>>> + <os family="windows" />
>>> + </condition>
>>> + <copy
>>> todir="${project.build.testOutputDirectory}" overwrite="true">
>>> + <fileset
>>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
>>> + </copy>
>>> + <copy
>>> todir="${project.build.testOutputDirectory}" overwrite="true">
>>> + <fileset
>>> file="${project.basedir}/src/test/resources/java.policy" />
>>> + <filterchain>
>>> + <expandproperties />
>>> + <!-- append extra
>>> slash on windows only -->
>>> + <replacestring
>>> from="file://" to="file://${slash}" />
>>> + <replacestring
>>> from="${file.separator}" to="/" />
>>> + <!-- preserve
>>> system-specific file separator -->
>>> + <expandproperties>
>>> + <propertyset>
>>> + <propertyref
>>> prefix="project." />
>>> + <globmapper
>>> from="*" to="preserve.*" />
>>> + </propertyset>
>>> + </expandproperties>
>>> + </filterchain>
>>> + </copy>
>>> + </target>
>>> + </configuration>
>>> + </execution>
>>> + </executions>
>>> + <dependencies>
>>> + <dependency>
>>> + <groupId>org.apache.ant</groupId>
>>> + <artifactId>ant</artifactId>
>>> + <version>1.9.3</version>
>>> + </dependency>
>>> + </dependencies>
>>> + </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.maven.plugins</groupId>
>>> <artifactId>maven-surefire-plugin</artifactId>
>>> <configuration>
>>> <includes>
>>> <include>**/*Test.java</include>
>>> <include>**/*TestCase.java</include>
>>> </includes>
>>> - <argLine>-Djava.security.manager
>>>
>>> -Djava.security.policy=${project.basedir}/src/test/
>>> resources/java.policy</argLine>
>>> + <argLine>-Djava.security.manager
>>>
>>> -Djava.security.policy=${project.build.testOutputDirectory}/java.
>>> policy</argLine>
>>> </configuration>
>>> </plugin>
>>> </plugins>
>>> @@ -103,6 +163,10 @@
>>> <groupId>org.apache.commons</groupId>
>>> <artifactId>commons-lang3</artifactId>
>>> </dependency>
>>> + <dependency>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>>> + </dependency>
>>> <!-- optional dependencies -->
>>> <dependency>
>>> <groupId>org.apache.bval</groupId>
>>> @@ -235,6 +299,10 @@
>>> </includes>
>>> </configuration>
>>> </plugin>
>>> + <plugin>
>>> + <groupId>org.apache.commons</groupId>
>>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>>> + </plugin>
>>> </plugins>
>>> </build>
>>> </project>
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> AnnotationConstraintBuilder.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.
>>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> AnnotationConstraintBuilder.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> AnnotationConstraintBuilder.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,27 +18,9 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import org.apache.bval.jsr.groups.GroupsComputer;
>>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>> -import org.apache.bval.util.AccessStrategy;
>>> -import org.apache.commons.lang3.reflect.TypeUtils;
>>> -
>>> -import javax.validation.Constraint;
>>> -import javax.validation.ConstraintDeclarationException;
>>> -import javax.validation.ConstraintDefinitionException;
>>> -import javax.validation.ConstraintTarget;
>>> -import javax.validation.ConstraintValidator;
>>> -import javax.validation.ConstraintValidatorFactory;
>>> -import javax.validation.OverridesAttribute;
>>> -import javax.validation.Payload;
>>> -import javax.validation.ReportAsSingleViolation;
>>> -import javax.validation.constraintvalidation.SupportedValidationTarget;
>>> -import javax.validation.constraintvalidation.ValidationTarget;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.InvocationTargetException;
>>> import java.lang.reflect.Method;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> import java.util.Arrays;
>>> import java.util.Collections;
>>> import java.util.HashMap;
>>> @@ -50,6 +32,24 @@ import java.util.Set;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> +import javax.validation.Constraint;
>>> +import javax.validation.ConstraintDeclarationException;
>>> +import javax.validation.ConstraintDefinitionException;
>>> +import javax.validation.ConstraintTarget;
>>> +import javax.validation.ConstraintValidator;
>>> +import javax.validation.ConstraintValidatorFactory;
>>> +import javax.validation.OverridesAttribute;
>>> +import javax.validation.Payload;
>>> +import javax.validation.ReportAsSingleViolation;
>>> +import javax.validation.constraintvalidation.SupportedValidationTarget;
>>> +import javax.validation.constraintvalidation.ValidationTarget;
>>> +
>>> +import org.apache.bval.jsr.groups.GroupsComputer;
>>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>>> +import org.apache.bval.util.AccessStrategy;
>>> +import org.apache.commons.lang3.reflect.TypeUtils;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +
>>> /**
>>> * Description: helper class that builds a {@link ConstraintValidation}
>>> or its
>>> * composite constraint validations by parsing the jsr-annotations and
>>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
>>> }
>>>
>>> /** build attributes, payload, groups from 'annotation' */
>>> + @Privileged
>>> private void buildFromAnnotation() {
>>> - if (constraintValidation.getAnnotation() != null) {
>>> - if (System.getSecurityManager() == null) {
>>> - doBuildFromAnnotations();
>>> - } else {
>>> - AccessController.doPrivileged(new
>>> PrivilegedAction<Object>() {
>>> - public Object run() {
>>> - doBuildFromAnnotations();
>>> - return null;
>>> - }
>>> - });
>>> - }
>>> + if (constraintValidation.getAnnotation() == null) {
>>> + return;
>>> }
>>> - }
>>> -
>>> - private void doBuildFromAnnotations() {
>>> final Class<? extends Annotation> annotationType =
>>> constraintValidation.getAnnotation().annotationType();
>>>
>>> boolean foundPayload = false;
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/AnnotationProcessor.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.
>>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/AnnotationProcessor.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/AnnotationProcessor.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
>>> import org.apache.bval.util.AccessStrategy;
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ArrayUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Constraint;
>>> import javax.validation.ConstraintValidator;
>>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
>>> import javax.validation.constraintvalidation.ValidationTarget;
>>> import javax.validation.groups.ConvertGroup;
>>> import javax.validation.groups.Default;
>>> +
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.AnnotatedElement;
>>> import java.lang.reflect.InvocationTargetException;
>>> @@ -44,6 +47,7 @@ import java.util.Set;
>>> * annotations, including composed constraints and the resolution of
>>> * {@link ConstraintValidator} implementations.
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public final class AnnotationProcessor {
>>> /** {@link ApacheFactoryContext} used */
>>> private final ApacheFactoryContext factoryContext;
>>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
>>> * annotated by @Constraint) whose value element has a return
>>> type of an
>>> * array of constraint annotations in a special way.
>>> */
>>> - final Object result =
>>> Reflection.INSTANCE.getAnnotationValue(annotation,
>>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>>> + final Object result =
>>> + Reflection.getAnnotationValue(annotation,
>>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>>> if (result instanceof Annotation[]) {
>>> boolean changed = false;
>>> for (final Annotation each : (Annotation[]) result) {
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ApacheFactoryContext.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.
>>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ApacheFactoryContext.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ApacheFactoryContext.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,6 +18,18 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> +import java.lang.reflect.Constructor;
>>> +import java.util.ArrayList;
>>> +import java.util.List;
>>> +
>>> +import javax.validation.ConstraintValidatorFactory;
>>> +import javax.validation.MessageInterpolator;
>>> +import javax.validation.ParameterNameProvider;
>>> +import javax.validation.TraversableResolver;
>>> +import javax.validation.ValidationException;
>>> +import javax.validation.Validator;
>>> +import javax.validation.ValidatorContext;
>>> +
>>> import org.apache.bval.IntrospectorMetaBeanFactory;
>>> import org.apache.bval.MetaBeanBuilder;
>>> import org.apache.bval.MetaBeanFactory;
>>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
>>> import org.apache.bval.xml.XMLMetaBeanManager;
>>> import org.apache.commons.lang3.StringUtils;
>>> import org.apache.commons.lang3.reflect.ConstructorUtils;
>>> -
>>> -import javax.validation.ConstraintValidatorFactory;
>>> -import javax.validation.MessageInterpolator;
>>> -import javax.validation.ParameterNameProvider;
>>> -import javax.validation.TraversableResolver;
>>> -import javax.validation.ValidationException;
>>> -import javax.validation.Validator;
>>> -import javax.validation.ValidatorContext;
>>> -import java.lang.reflect.Constructor;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> -import java.util.ArrayList;
>>> -import java.util.List;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> /**
>>> * Description: Represents the context that is used to create
>>> * <code>ClassValidator</code> instances.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class ApacheFactoryContext implements ValidatorContext {
>>> private final ApacheValidatorFactory factory;
>>> private final MetaBeanFinder metaBeanFinder;
>>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
>>> return new MetaBeanManager(new
>>> MetaBeanBuilder(builders.toArray(new
>>> MetaBeanFactory[builders.size()])));
>>> }
>>>
>>> + @Privileged
>>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>>> Class<F> cls) {
>>> - if (System.getSecurityManager() == null) {
>>> - return doCreateMetaBeanFactory(cls);
>>> - }
>>> - return AccessController.doPrivileged(new PrivilegedAction<F>()
>>> {
>>> - public F run() {
>>> - return doCreateMetaBeanFactory(cls);
>>> - }
>>> - });
>>> - }
>>> -
>>> - private <F extends MetaBeanFactory> F
>>> doCreateMetaBeanFactory(final Class<F> cls) {
>>> try {
>>> Constructor<F> c =
>>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>>> ApacheFactoryContext.this.getClass());
>>> if (c != null) {
>>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>>>
>>> private Class<?> loadClass(final String className) {
>>> try {
>>> - return Class.forName(className, true,
>>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
>>> + return Class.forName(className, true,
>>> Reflection.getClassLoader(ApacheFactoryContext.class));
>>> } catch (ClassNotFoundException ex) {
>>> throw new ValidationException("Unable to load class: " +
>>> className, ex);
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidationProvider.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidationProvider.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidationProvider.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,16 +18,15 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> -import org.apache.commons.lang3.ClassUtils;
>>> -
>>> import javax.validation.Configuration;
>>> import javax.validation.ValidationException;
>>> import javax.validation.ValidatorFactory;
>>> import javax.validation.spi.BootstrapState;
>>> import javax.validation.spi.ConfigurationState;
>>> import javax.validation.spi.ValidationProvider;
>>> -import java.security.AccessController;
>>> -import java.security.PrivilegedAction;
>>> +
>>> +import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privileged;
>>>
>>> /**
>>> * Description: Implementation of {@link ValidationProvider} for jsr
>>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
>>> // No privileges should be required to access the constructor,
>>> // because the classloader of ApacheValidationProvider will
>>> always
>>> // be an ancestor of the loader of validatorFactoryClass.
>>> - return (System.getSecurityManager() == null)
>>> - ? instantiateValidatorFactory(validatorFactoryClass,
>>> configuration) : AccessController
>>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>()
>>> {
>>> - public ValidatorFactory run() {
>>> - return
>>> instantiateValidatorFactory(validatorFactoryClass, configuration);
>>> - }
>>> - });
>>> + return instantiateValidatorFactory(validatorFactoryClass,
>>> configuration);
>>> }
>>>
>>> + @Privileged
>>> private static ValidatorFactory instantiateValidatorFactory(
>>> final Class<? extends ValidatorFactory>
>>> validatorFactoryClass, final ConfigurationState configuration) {
>>> try {
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorConfiguration.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.
>>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorConfiguration.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorConfiguration.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
>>> * class is presumed have a constructor that accepts a single
>>> * {@link ConfigurationState} argument.
>>> */
>>> - String VALIDATOR_FACTORY_CLASSNAME =
>>> "apache.bval.validator-factory-classname";
>>> + String VALIDATOR_FACTORY_CLASSNAME =
>>> "apache.bval.validator-factory-classname";
>>>
>>> /**
>>> * Specifies the names, delimited by whitespace, of
>>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
>>> * <li>default (no-args) constructor</li>
>>> * </ol>
>>> */
>>> - String METABEAN_FACTORY_CLASSNAMES =
>>> "apache.bval.metabean-factory-classnames";
>>> + String METABEAN_FACTORY_CLASSNAMES =
>>> "apache.bval.metabean-factory-classnames";
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorFactory.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorFactory.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/
>>> ApacheValidatorFactory.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ArrayUtils;
>>> import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.ConstraintValidatorFactory;
>>> import javax.validation.MessageInterpolator;
>>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
>>> import javax.validation.Validator;
>>> import javax.validation.ValidatorFactory;
>>> import javax.validation.spi.ConfigurationState;
>>> +
>>> import java.io.Closeable;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.Modifier;
>>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
>>> * validators.<br/>
>>> * This instance is not thread-safe.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class ApacheValidatorFactory implements ValidatorFactory,
>>> Cloneable {
>>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
>>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
>>> ConstraintDefaults();
>>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>>>
>>> private <T> T newInstance(final Class<T> cls) {
>>> try {
>>> - return Reflection.INSTANCE.newInstance(cls);
>>> + return Reflection.newInstance(cls);
>>> } catch (final RuntimeException e) {
>>> throw new ValidationException(e.getCause());
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/BeanDescriptorImpl.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.
>>> java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/BeanDescriptorImpl.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/BeanDescriptorImpl.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
>>> import org.apache.bval.util.AccessStrategy;
>>> import org.apache.bval.util.reflection.Reflection;
>>> import org.apache.commons.lang3.ClassUtils;
>>> +import org.apache.commons.weaver.privilizer.Privilizing;
>>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>>
>>> import javax.validation.Constraint;
>>> import javax.validation.ConstraintDeclarationException;
>>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
>>> import javax.validation.metadata.ParameterDescriptor;
>>> import javax.validation.metadata.PropertyDescriptor;
>>> import javax.validation.metadata.ReturnValueDescriptor;
>>> +
>>> import java.beans.Introspector;
>>> import java.lang.annotation.Annotation;
>>> import java.lang.reflect.AccessibleObject;
>>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
>>> /**
>>> * Description: Implements {@link BeanDescriptor}.<br/>
>>> */
>>> +@Privilizing(@CallTo(Reflection.class))
>>> public class BeanDescriptorImpl extends ElementDescriptorImpl
>>> implements BeanDescriptor {
>>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
>>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
>>> private static final Validation[] EMPTY_VALIDATION = new
>>> Validation[0];
>>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
>>> Class<?> current = prop.getParentMetaBean().getBeanClass();
>>> while (current != null && current != Object.class &&
>>> (!methodFound || !fieldFound)) {
>>> if (!fieldFound) {
>>> - final Field field =
>>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
>>> + final Field field =
>>> Reflection.getDeclaredField(current, prop.getName());
>>> if (field != null) {
>>> processConvertGroup(edesc, field);
>>> fieldFound = true;
>>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>>>
>>> if (!methodFound) {
>>> final String name =
>>> Character.toUpperCase(prop.getName().charAt(0)) +
>>> prop.getName().substring(1);
>>> - Method m =
>>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
>>> + Method m = Reflection.getDeclaredMethod(current, "get"
>>> +
>>> name);
>>> if (m != null) {
>>> processConvertGroup(edesc, m);
>>> methodFound = true;
>>> } else {
>>> - m =
>>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
>>> + m = Reflection.getDeclaredMethod(current, "is" +
>>> name);
>>> if (m != null) {
>>> processConvertGroup(edesc, m);
>>> methodFound = true;
>>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
>>> }
>>>
>>> private void buildConstructorConstraints() throws
>>> InvocationTargetException, IllegalAccessException {
>>> - for (final Constructor<?> cons :
>>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
>>> {
>>> + for (final Constructor<?> cons :
>>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
>>> final ConstructorDescriptorImpl consDesc = new
>>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>>>
>>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
>>> consDesc);
>>>
>>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
>>> final List<Class<?>> classHierarchy =
>>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
>>> current);
>>> classHierarchy.remove(current);
>>>
>>> - for (final Method method :
>>> Reflection.INSTANCE.getDeclaredMethods(current)) {
>>> + for (final Method method :
>>> Reflection.getDeclaredMethods(current)) {
>>> if (Modifier.isStatic(method.getModifiers()) ||
>>> method.isSynthetic()) {
>>> continue;
>>> }
>>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>>>
>>> final Collection<Method> parents = new
>>> ArrayList<Method>();
>>> for (final Class<?> clazz : classHierarchy) {
>>> - final Method overriden =
>>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> - if (overriden != null) {
>>> - parents.add(overriden);
>>> - processMethod(overriden, methodDesc);
>>> + final Method overridden =
>>> Reflection.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> + if (overridden != null) {
>>> + parents.add(overridden);
>>> + processMethod(overridden, methodDesc);
>>> }
>>> }
>>>
>>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
>>> final Class<?>[] interfaces =
>>> method.getDeclaringClass().getInterfaces();
>>> final Collection<Method> itfWithThisMethod = new
>>> ArrayList<Method>();
>>> for (final Class<?> i : interfaces) {
>>> - final Method m =
>>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
>>> method.getParameterTypes());
>>> + final Method m =
>>> Reflection.getDeclaredMethod(i, method.getName(),
>>> method.getParameterTypes());
>>> if (m != null) {
>>> itfWithThisMethod.add(m);
>>> }
>>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
>>> returnValid++;
>>> }
>>> for (final Class<?> clazz : classHierarchy) {
>>> - final Method overriden =
>>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> - if (overriden != null) {
>>> - if (overriden.getAnnotation(Valid.class) !=
>>> null) {
>>> + final Method overridden =
>>> Reflection.getDeclaredMethod(clazz, method.getName(),
>>> method.getParameterTypes());
>>> + if (overridden != null) {
>>> + if (overridden.getAnnotation(Valid.class)
>>> != null) {
>>> returnValid++;
>>> }
>>> }
>>>
>>> Modified:
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ClassValidator.java
>>> URL:
>>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-
>>> jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?
>>> rev=1628598&r1=1628597&r2=1628598&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ClassValidator.java
>>> (original)
>>> +++
>>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/
>>> bval/jsr/ClassValidator.java
>>> Wed Oct 1 04:37:36 2014
>>> @@ -18,6 +18,33 @@
>>> */
>>> package org.apache.bval.jsr;
>>>
>>> +import java.lang.reflect.Constructor;
>>> +import java.lang.reflect.Member;
>>> +import java.lang.reflect.Method;
>>> +import java.lang.reflect.Modifier;
>>> +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 javax.validation.ConstraintDeclarationException;
>>> +import javax.validation.ConstraintDefinitionException;
>>> +import javax.validation.ConstraintTarget;
>>> +import javax.validation.ConstraintViolation;
>>> +import javax.validation.ElementKind;
>>> +import javax.validation.ValidationException;
>>> +import javax.validation.executable.ExecutableValidator;
>>> +import javax.validation.groups.Default;
>>> +import javax.validation.metadata.BeanDescriptor;
>>> +import javax.validation.metadata.ConstraintDescriptor;
>>> +import javax.validation.metadata.ElementDescriptor;
>>> +import javax.validation.metadata.ParameterDescriptor;
>>> +import javax.validation.metadata.PropertyDescriptor;
>>> +
>>> import org.apache.bval.DynamicMetaBean;
>>> import org.apache.bval.MetaBeanFinder;
>>> import org.apache.bval.jsr.groups.Group;
>>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
>>> import org.apache.commons.lang3.ClassUtils;
>>> import org.apache.commons.lang3.ObjectUtils;
>>> import org.apache.commons.lang3.reflect.TypeUtils;
>>> -
>>> -import javax.validation.ConstraintDeclarationException;
>>> -import javax.validation.ConstraintDefinitionException;
>>> -import javax.validation.ConstraintTarget;
>>> -import javax.validation.ConstraintViolation;
>>> -import javax.validation.ElementKind;
>>> -import javax.validation.ValidationException;
>>> -import javax.validation.executable.ExecutableValidator;
>>> -import javax.validation.groups.Default;
>>> -import javax.validation.metadata.BeanDe
>>
>> ...
Re: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./ bval-core/
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-core/src/main/java/org/apache/bval/util/ref...
Posted by Roman Stumm <ro...@gmx.de>.
I can compile the trunk with java7, but not with java8:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
(default-compile) on project bval-jsr303: Compilation failure:
Compilation failure:
[ERROR]
/Users/roman/projects/apache/bval-trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java:[141,8]
error: reference to validate is ambiguous
[ERROR]
[ERROR] L extends ValidationListener declared in method
<L>validate(ValidationContext<L>)
[ERROR]
/Users/roman/projects/apache/bval-trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java:[180,35]
error: reference to validate is ambiguous
[ERROR]
[ERROR] L extends ValidationListener declared in method
<L>validate(ValidationContext<L>)
[ERROR]
/Users/roman/projects/apache/bval-trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java:[197,24]
error: reference to validate is ambiguous
[ERROR]
[ERROR] L extends ValidationListener declared in method
<L>validate(ValidationContext<L>)
[ERROR]
/Users/roman/projects/apache/bval-trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java:[209,26]
error: reference to validate is ambiguous
Am 06.12.14 13:12, schrieb Daniel Cunha:
> I try see something here.
>
> But I have a problem.. my laptop not build bval.
> The build stop in Building Apache BVal :: bval-jsr 1.1.0-alpha-SNAPSHOT
>
> Linux 3.13.0 32bits
> 4GB ram
> JDK 1.8.0_25
>
> On Sat, Dec 6, 2014 at 8:08 AM, Romain Manni-Bucau <rm...@gmail.com>
> wrote:
>
>> Hi Matt,
>>
>> I have 2 questions:
>> 1) surely obvious but I dont get why you re-set the accessible (if
>> (mustSet)). While we need it accessible we can keep it set to true no?
>> 2) more important: tck are broken now Tests run: 758, Failures: 13,
>> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>>
>>
>> Romain Manni-Bucau
>> @rmannibucau
>> http://www.tomitribe.com
>> http://rmannibucau.wordpress.com
>> https://github.com/rmannibucau
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: <mb...@apache.org>
>> Date: 2014-10-01 6:37 GMT+02:00
>> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
>> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
>> To: commits@bval.apache.org
>>
>>
>> Author: mbenson
>> Date: Wed Oct 1 04:37:36 2014
>> New Revision: 1628598
>>
>> URL: http://svn.apache.org/r1628598
>> Log:
>> use commons weaver/privilizer
>>
>> Removed:
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
>> Modified:
>> bval/branches/bval-11/bval-core/pom.xml
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>>
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> bval/branches/bval-11/bval-jsr/ (props changed)
>> bval/branches/bval-11/bval-jsr/pom.xml
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
>>
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
>>
>> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
>> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
>> bval/branches/bval-11/bval-tck11/ (props changed)
>> bval/branches/bval-11/bval-xstream/pom.xml
>>
>> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
>> bval/branches/bval-11/pom.xml
>>
>> Modified: bval/branches/bval-11/bval-core/pom.xml
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> --- bval/branches/bval-11/bval-core/pom.xml (original)
>> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
>> @@ -46,6 +46,10 @@
>> <artifactId>commons-beanutils-core</artifactId>
>> </dependency>
>> <dependency>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> + </dependency>
>> + <dependency>
>> <groupId>junit</groupId>
>> <artifactId>junit</artifactId>
>> <scope>test</scope>
>> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
>> </execution>
>> </executions>
>> </plugin>
>> + <plugin>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> + </plugin>
>> </plugins>
>> <pluginManagement>
>> <plugins>
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,13 +16,11 @@
>> */
>> package org.apache.bval;
>>
>> -import org.apache.bval.util.AccessStrategy;
>> -
>> import java.lang.annotation.ElementType;
>> import java.lang.reflect.Constructor;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> +
>> +import org.apache.bval.util.AccessStrategy;
>>
>> public class ConstructorAccess extends AccessStrategy {
>>
>> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>>
>> public ConstructorAccess(final Constructor<?> constructor) {
>> this.constructor = constructor;
>> - if (!constructor.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - constructor.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - constructor.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(constructor);
>> }
>>
>> @Override
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,6 +17,8 @@
>> package org.apache.bval.model;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import java.beans.Introspector;
>> import java.lang.reflect.Constructor;
>> @@ -34,6 +36,7 @@ import java.util.TreeMap;
>> *
>> * @see MetaProperty
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class MetaBean extends FeaturesCapable implements Cloneable,
>> Features.Bean {
>> private static final long serialVersionUID = 2L;
>>
>> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
>> int i = 0;
>> Class<?> clazz = beanClass;
>> while (clazz != null && clazz != Object.class) {
>> - for (final Field f :
>> Reflection.INSTANCE.getDeclaredFields(clazz)) {
>> + for (final Field f : Reflection.getDeclaredFields(clazz))
>> {
>> i++;
>> final String name = f.getName();
>> if (!fields.containsKey(name)) {
>> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
>> protected MethodComparator(final Class<?> beanClass) {
>> Class<?> clazz = beanClass;
>> while (clazz != null && clazz != Object.class) {
>> - for (final Method m :
>> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
>> + for (final Method m :
>> Reflection.getDeclaredMethods(clazz)) {
>> methods.put(m,
>> Arrays.hashCode(m.getParameterTypes()));
>> }
>> clazz = clazz.getSuperclass();
>> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
>> private final Map<Constructor<?>, Integer> constructors = new
>> HashMap<Constructor<?>, Integer>();
>>
>> protected ConstructorComparator(final Class<?> beanClass) {
>> - for (final Constructor<?> c :
>> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
>> + for (final Constructor<?> c :
>> Reflection.getDeclaredConstructors(beanClass)) {
>> constructors.put(c,
>> Arrays.hashCode(c.getParameterTypes()));
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,8 +17,11 @@
>> package org.apache.bval.util;
>>
>> import java.lang.annotation.ElementType;
>> +import java.lang.reflect.AccessibleObject;
>> import java.lang.reflect.Type;
>>
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +
>> /**
>> * Description: abstract class to encapsulate different strategies
>> * to get the value of a Property. This class is designed such that
>> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
>> * @return String
>> */
>> public abstract String getPropertyName();
>> +
>> + /**
>> + * Set {@code accessibleObject} as being accessible
>> + * @param accessibleObject
>> + */
>> + protected boolean setAccessible(AccessibleObject accessibleObject) {
>> + if (accessibleObject.isAccessible()) {
>> + return false;
>> + }
>> + doSetAccessible(accessibleObject);
>> + return true;
>> + }
>> +
>> + @Privileged
>> + private void doSetAccessible(AccessibleObject accessibleObject) {
>> + accessibleObject.setAccessible(true);
>> + }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,18 +18,21 @@
>> */
>> package org.apache.bval.util;
>>
>> -import org.apache.bval.util.reflection.Reflection;
>> -
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.util.Properties;
>> import java.util.StringTokenizer;
>>
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> /**
>> * This class contains version information for BVal.
>> * It uses Ant's filter tokens to convert the template into a java
>> * file with current information.
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class BValVersion {
>>
>> /** Project name */
>> @@ -157,7 +160,7 @@ public class BValVersion {
>> * {@inheritDoc}
>> */
>> public String toString() {
>> - StringBuilder buf = new StringBuilder(80 * 40);
>> + final StringBuilder buf = new StringBuilder(80 * 40);
>> appendBanner(buf);
>> buf.append("\n");
>>
>> @@ -169,8 +172,7 @@ public class BValVersion {
>> appendProperty("java.vendor", buf).append("\n\n");
>>
>> buf.append("java.class.path:\n");
>> - StringTokenizer tok = new StringTokenizer(
>> - Reflection.INSTANCE.getProperty("java.class.path"));
>> + final StringTokenizer tok = new
>> StringTokenizer(Reflection.getProperty("java.class.path"));
>> while (tok.hasMoreTokens()) {
>> buf.append("\t").append(tok.nextToken());
>> buf.append("\n");
>> @@ -191,7 +193,6 @@ public class BValVersion {
>> }
>>
>> private StringBuilder appendProperty(String prop, StringBuilder buf) {
>> - return buf.append(prop).append(": ").append(
>> - Reflection.INSTANCE.getProperty(prop));
>> + return buf.append(prop).append(":
>> ").append(Reflection.getProperty(prop));
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -19,8 +19,6 @@ package org.apache.bval.util;
>> import java.lang.annotation.ElementType;
>> import java.lang.reflect.Field;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>>
>> /**
>> * Description: direct field access strategy.<br/>
>> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
>> */
>> public FieldAccess(final Field field) {
>> this.field = field;
>> - if (!field.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - field.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - field.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(field);
>> }
>>
>> /**
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,6 +16,7 @@
>> */
>> package org.apache.bval.util;
>>
>> +import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>>
>> import java.lang.annotation.ElementType;
>> @@ -28,7 +29,7 @@ import java.util.Map;
>> /**
>> * {@link AccessStrategy} to get an indexed member of an {@link Iterable}
>> or
>> * array object.
>> - */
>> + */
>> public class IndexedAccess extends AccessStrategy {
>> private static final TypeVariable<?> ITERABLE_TYPE =
>> Iterable.class.getTypeParameters()[0];
>>
>> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
>> }
>> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Iterable.class);
>> - return typeArguments.containsKey(ITERABLE_TYPE) ?
>> typeArguments.get(ITERABLE_TYPE) : Object.class;
>> + return
>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> ITERABLE_TYPE), Object.class);
>> }
>> return null;
>> }
>>
>> - private Type containerType;
>> - private Integer index;
>> + private final Type containerType;
>> + private final Integer index;
>>
>> /**
>> * Create a new IndexedAccessStrategy instance.
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -16,6 +16,7 @@
>> */
>> package org.apache.bval.util;
>>
>> +import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>>
>> import java.lang.annotation.ElementType;
>> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
>> public static Type getJavaElementType(Type containerType) {
>> if (TypeUtils.isAssignable(containerType, Map.class)) {
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Map.class);
>> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
>> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
>> + return
>> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
>> MAP_TYPEVARS[1]), Object.class);
>> }
>> return null;
>> }
>>
>> - private Type containerType;
>> - private Object key;
>> + private final Type containerType;
>> + private final Object key;
>>
>> /**
>> * Create a new KeyedAccess instance.
>> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
>> if (instance instanceof Map<?, ?>) {
>> Map<?, ?> map = (Map<?, ?>) instance;
>> Map<TypeVariable<?>, Type> typeArguments =
>> TypeUtils.getTypeArguments(containerType, Map.class);
>> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
>> + Type keyType = TypeUtils.unrollVariables(typeArguments,
>> MAP_TYPEVARS[0]);
>> if (key == null || keyType == null ||
>> TypeUtils.isInstance(key, keyType)) {
>> return map.get(key);
>> }
>> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
>> */
>> @Override
>> public Type getJavaType() {
>> - Type result = getJavaElementType(containerType);
>> + final Type result = getJavaElementType(containerType);
>> return result == null ? Object.class : result;
>> }
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>> Wed Oct 1 04:37:36 2014
>> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>>
>> /**
>> * Description: invoke a zero-argument method (getter)<br/>
>> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
>> public MethodAccess(String propertyName, final Method method) {
>> this.method = method;
>> this.propertyName = propertyName;
>> - if (!method.isAccessible()) {
>> - if (System.getSecurityManager() == null) {
>> - method.setAccessible(true);
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Void>() {
>> - public Void run() {
>> - method.setAccessible(true);
>> - return null;
>> - }
>> - });
>> - }
>> - }
>> + setAccessible(method);
>> }
>>
>> /**
>> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
>> * the method name id not according to the JavaBeans standard.
>> */
>> public static String getPropertyName(Method member) {
>> - String name = null;
>> - String methodName = member.getName();
>> + final String methodName = member.getName();
>> if (methodName.startsWith("is")) {
>> - name = Introspector.decapitalize(methodName.substring(2));
>> - } /* else if ( methodName.startsWith("has")) {
>> - name = Introspector.decapitalize(
>> methodName.substring( 3 ) );
>> - } */
>> - // setter annotation is NOT supported in the spec
>> - /* else if (method.getName().startsWith("set") &&
>> method.getParameterTypes().length == 1) {
>> - propName =
>> Introspector.decapitalize(method.getName().substring(3));
>> - } */
>> - else if (methodName.startsWith("get")) {
>> - name = Introspector.decapitalize(methodName.substring(3));
>> + return Introspector.decapitalize(methodName.substring(2));
>> + }
>> + if (methodName.startsWith("get")) {
>> + return Introspector.decapitalize(methodName.substring(3));
>> }
>> - return name;
>> + return null;
>> }
>>
>> /**
>>
>> Modified:
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
>> Wed Oct 1 04:37:36 2014
>> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
>> import java.lang.reflect.Field;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> +import java.lang.reflect.Modifier;
>>
>> -public interface Reflection {
>> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
>> +import org.apache.commons.lang3.ClassUtils;
>>
>> - Class<?> getClass(final ClassLoader classLoader, final String
>> className) throws Exception;
>> -
>> - Object getAnnotationValue(final Annotation annotation, final
>> String name) throws IllegalAccessException, InvocationTargetException;
>> +/**
>> + * Security-agnostic "blueprint" class for reflection-related operations.
>> + *
>> + * @version $Rev$ $Date$
>> + */
>> +public class Reflection {
>> +
>> + private static void setAccessibility(final Field field) {
>> + // FIXME 2011-03-27 jw:
>> + // - Why not simply call field.setAccessible(true)?
>> + // - Fields can not be abstract.
>> + if (!Modifier.isPublic(field.getModifiers())
>> + || (Modifier.isPublic(field.getModifiers()) &&
>> Modifier.isAbstract(field.getModifiers()))) {
>> + field.setAccessible(true);
>> + }
>> + }
>>
>> - ClassLoader getClassLoader(final Class<?> clazz);
>> + public static Class<?> getClass(final ClassLoader classLoader,
>> final String className) throws Exception {
>> + return ClassUtils.getClass(classLoader, className, true);
>> + }
>>
>> - String getProperty(final String name);
>> + public static Object getAnnotationValue(final Annotation
>> annotation, final String name)
>> + throws IllegalAccessException, InvocationTargetException {
>> + Method valueMethod;
>> + try {
>> + valueMethod =
>> annotation.annotationType().getDeclaredMethod(name);
>> + } catch (final NoSuchMethodException ex) {
>> + // do nothing
>> + valueMethod = null;
>> + }
>> + if (null != valueMethod) {
>> + if (!valueMethod.isAccessible()) {
>> + valueMethod.setAccessible(true);
>> + }
>> + return valueMethod.invoke(annotation);
>> + }
>> + return null;
>> + }
>>
>> - Field getDeclaredField(final Class<?> clazz, final String fieldName);
>> + public static ClassLoader getClassLoader(final Class<?> clazz) {
>> + final ClassLoader cl =
>> Thread.currentThread().getContextClassLoader();
>> + if (cl != null) {
>> + return cl;
>> + }
>> + return clazz.getClassLoader();
>> + }
>>
>> - Field[] getDeclaredFields(final Class<?> clazz);
>> + public static String getProperty(final String name) {
>> + return System.getProperty(name);
>> + }
>>
>> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
>> Class<?>... parameters);
>> + public static Field getDeclaredField(final Class<?> clazz, final
>> String fieldName) {
>> + final Field f;
>> + try {
>> + f = clazz.getDeclaredField(fieldName);
>> + } catch (final NoSuchFieldException e) {
>> + return null;
>> + }
>> + setAccessibility(f);
>> + return f;
>> + }
>>
>> - Method getDeclaredMethod(final Class<?> clazz, final String name,
>> final Class<?>... parameters);
>> + public static Field[] getDeclaredFields(final Class<?> clazz) {
>> + final Field[] fields = clazz.getDeclaredFields();
>> + if (fields.length > 0) {
>> + for (final Field f : fields) {
>> + if (!f.isAccessible()) {
>> + f.setAccessible(true);
>> + }
>> + }
>> + }
>> + return fields;
>> + }
>>
>> - Method[] getDeclaredMethods(final Class<?> clazz);
>> + public static Constructor<?> getDeclaredConstructor(final
>> Class<?> clazz, final Class<?>... parameters) {
>> + try {
>> + return clazz.getDeclaredConstructor(parameters);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> + }
>> + }
>>
>> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
>> + public static Method getDeclaredMethod(final Class<?> clazz,
>> final String name, final Class<?>... parameters) {
>> + try {
>> + return clazz.getDeclaredMethod(name, parameters);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> + }
>> + }
>>
>> - Method getPublicMethod(final Class<?> clazz, final String methodName);
>> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
>> + return clazz.getDeclaredMethods();
>> + }
>>
>> - <T> T newInstance(final Class<T> cls);
>> + public static Constructor<?>[] getDeclaredConstructors(final
>> Class<?> clazz) {
>> + return clazz.getDeclaredConstructors();
>> + }
>>
>> - public static class ReflectionFactory {
>> - public static Reflection newInstance() {
>> - if (System.getSecurityManager() != null) {
>> - return new SecurityManagerReflection();
>> - }
>> - return new DefaultReflection();
>> + public static Method getPublicMethod(final Class<?> clazz, final
>> String methodName) {
>> + try {
>> + return clazz.getMethod(methodName);
>> + } catch (final NoSuchMethodException e) {
>> + return null;
>> }
>> + }
>>
>> - private ReflectionFactory() {
>> - // no-op
>> + public static <T> T newInstance(final Class<T> cls) {
>> + try {
>> + return cls.newInstance();
>> + } catch (final Exception ex) {
>> + throw new RuntimeException("Cannot instantiate : " + cls, ex);
>> }
>> }
>> +
>> }
>>
>> Propchange: bval/branches/bval-11/bval-jsr/
>>
>> ------------------------------------------------------------------------------
>> --- svn:ignore (added)
>> +++ svn:ignore Wed Oct 1 04:37:36 2014
>> @@ -0,0 +1,4 @@
>> +.classpath
>> +.project
>> +.settings
>> +target
>>
>> Propchange: bval/branches/bval-11/bval-jsr/
>>
>> ------------------------------------------------------------------------------
>> --- svn:mergeinfo (added)
>> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
>> @@ -0,0 +1,2 @@
>> +/bval/trunk/bval-jsr303:1598345
>> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>>
>> Modified: bval/branches/bval-11/bval-jsr/pom.xml
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
>> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
>> @@ -79,13 +79,73 @@
>> <plugins>
>> <plugin>
>> <groupId>org.apache.maven.plugins</groupId>
>> + <artifactId>maven-resources-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <id>default-testResources</id>
>> + <phase />
>> + <goals>
>> + <goal>testResources</goal>
>> + </goals>
>> + </execution>
>> + </executions>
>> + </plugin>
>> + <plugin>
>> + <groupId>org.apache.maven.plugins</groupId>
>> + <artifactId>maven-antrun-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <id>filter-testResources</id>
>> + <phase>process-test-resources</phase>
>> + <goals>
>> + <goal>run</goal>
>> + </goals>
>> + <configuration>
>> + <target>
>> + <mkdir
>> dir="${project.build.testOutputDirectory}" />
>> + <condition property="slash"
>> value="/" else="">
>> + <os family="windows" />
>> + </condition>
>> + <copy
>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> + <fileset
>> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
>> + </copy>
>> + <copy
>> todir="${project.build.testOutputDirectory}" overwrite="true">
>> + <fileset
>> file="${project.basedir}/src/test/resources/java.policy" />
>> + <filterchain>
>> + <expandproperties />
>> + <!-- append extra
>> slash on windows only -->
>> + <replacestring
>> from="file://" to="file://${slash}" />
>> + <replacestring
>> from="${file.separator}" to="/" />
>> + <!-- preserve
>> system-specific file separator -->
>> + <expandproperties>
>> + <propertyset>
>> + <propertyref
>> prefix="project." />
>> + <globmapper
>> from="*" to="preserve.*" />
>> + </propertyset>
>> + </expandproperties>
>> + </filterchain>
>> + </copy>
>> + </target>
>> + </configuration>
>> + </execution>
>> + </executions>
>> + <dependencies>
>> + <dependency>
>> + <groupId>org.apache.ant</groupId>
>> + <artifactId>ant</artifactId>
>> + <version>1.9.3</version>
>> + </dependency>
>> + </dependencies>
>> + </plugin>
>> + <plugin>
>> + <groupId>org.apache.maven.plugins</groupId>
>> <artifactId>maven-surefire-plugin</artifactId>
>> <configuration>
>> <includes>
>> <include>**/*Test.java</include>
>> <include>**/*TestCase.java</include>
>> </includes>
>> - <argLine>-Djava.security.manager
>>
>> -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
>> + <argLine>-Djava.security.manager
>>
>> -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
>> </configuration>
>> </plugin>
>> </plugins>
>> @@ -103,6 +163,10 @@
>> <groupId>org.apache.commons</groupId>
>> <artifactId>commons-lang3</artifactId>
>> </dependency>
>> + <dependency>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-privilizer-api</artifactId>
>> + </dependency>
>> <!-- optional dependencies -->
>> <dependency>
>> <groupId>org.apache.bval</groupId>
>> @@ -235,6 +299,10 @@
>> </includes>
>> </configuration>
>> </plugin>
>> + <plugin>
>> + <groupId>org.apache.commons</groupId>
>> + <artifactId>commons-weaver-maven-plugin</artifactId>
>> + </plugin>
>> </plugins>
>> </build>
>> </project>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,27 +18,9 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.bval.jsr.groups.GroupsComputer;
>> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> -import org.apache.bval.util.AccessStrategy;
>> -import org.apache.commons.lang3.reflect.TypeUtils;
>> -
>> -import javax.validation.Constraint;
>> -import javax.validation.ConstraintDeclarationException;
>> -import javax.validation.ConstraintDefinitionException;
>> -import javax.validation.ConstraintTarget;
>> -import javax.validation.ConstraintValidator;
>> -import javax.validation.ConstraintValidatorFactory;
>> -import javax.validation.OverridesAttribute;
>> -import javax.validation.Payload;
>> -import javax.validation.ReportAsSingleViolation;
>> -import javax.validation.constraintvalidation.SupportedValidationTarget;
>> -import javax.validation.constraintvalidation.ValidationTarget;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.InvocationTargetException;
>> import java.lang.reflect.Method;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.Arrays;
>> import java.util.Collections;
>> import java.util.HashMap;
>> @@ -50,6 +32,24 @@ import java.util.Set;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> +import javax.validation.Constraint;
>> +import javax.validation.ConstraintDeclarationException;
>> +import javax.validation.ConstraintDefinitionException;
>> +import javax.validation.ConstraintTarget;
>> +import javax.validation.ConstraintValidator;
>> +import javax.validation.ConstraintValidatorFactory;
>> +import javax.validation.OverridesAttribute;
>> +import javax.validation.Payload;
>> +import javax.validation.ReportAsSingleViolation;
>> +import javax.validation.constraintvalidation.SupportedValidationTarget;
>> +import javax.validation.constraintvalidation.ValidationTarget;
>> +
>> +import org.apache.bval.jsr.groups.GroupsComputer;
>> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
>> +import org.apache.bval.util.AccessStrategy;
>> +import org.apache.commons.lang3.reflect.TypeUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +
>> /**
>> * Description: helper class that builds a {@link ConstraintValidation}
>> or its
>> * composite constraint validations by parsing the jsr-annotations and
>> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
>> }
>>
>> /** build attributes, payload, groups from 'annotation' */
>> + @Privileged
>> private void buildFromAnnotation() {
>> - if (constraintValidation.getAnnotation() != null) {
>> - if (System.getSecurityManager() == null) {
>> - doBuildFromAnnotations();
>> - } else {
>> - AccessController.doPrivileged(new
>> PrivilegedAction<Object>() {
>> - public Object run() {
>> - doBuildFromAnnotations();
>> - return null;
>> - }
>> - });
>> - }
>> + if (constraintValidation.getAnnotation() == null) {
>> + return;
>> }
>> - }
>> -
>> - private void doBuildFromAnnotations() {
>> final Class<? extends Annotation> annotationType =
>> constraintValidation.getAnnotation().annotationType();
>>
>> boolean foundPayload = false;
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>> Wed Oct 1 04:37:36 2014
>> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
>> import org.apache.bval.util.AccessStrategy;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintValidator;
>> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
>> import javax.validation.constraintvalidation.ValidationTarget;
>> import javax.validation.groups.ConvertGroup;
>> import javax.validation.groups.Default;
>> +
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.AnnotatedElement;
>> import java.lang.reflect.InvocationTargetException;
>> @@ -44,6 +47,7 @@ import java.util.Set;
>> * annotations, including composed constraints and the resolution of
>> * {@link ConstraintValidator} implementations.
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public final class AnnotationProcessor {
>> /** {@link ApacheFactoryContext} used */
>> private final ApacheFactoryContext factoryContext;
>> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
>> * annotated by @Constraint) whose value element has a return
>> type of an
>> * array of constraint annotations in a special way.
>> */
>> - final Object result =
>> Reflection.INSTANCE.getAnnotationValue(annotation,
>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> + final Object result =
>> + Reflection.getAnnotationValue(annotation,
>> ConstraintAnnotationAttributes.VALUE.getAttributeName());
>> if (result instanceof Annotation[]) {
>> boolean changed = false;
>> for (final Annotation each : (Annotation[]) result) {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,6 +18,18 @@
>> */
>> package org.apache.bval.jsr;
>>
>> +import java.lang.reflect.Constructor;
>> +import java.util.ArrayList;
>> +import java.util.List;
>> +
>> +import javax.validation.ConstraintValidatorFactory;
>> +import javax.validation.MessageInterpolator;
>> +import javax.validation.ParameterNameProvider;
>> +import javax.validation.TraversableResolver;
>> +import javax.validation.ValidationException;
>> +import javax.validation.Validator;
>> +import javax.validation.ValidatorContext;
>> +
>> import org.apache.bval.IntrospectorMetaBeanFactory;
>> import org.apache.bval.MetaBeanBuilder;
>> import org.apache.bval.MetaBeanFactory;
>> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
>> import org.apache.bval.xml.XMLMetaBeanManager;
>> import org.apache.commons.lang3.StringUtils;
>> import org.apache.commons.lang3.reflect.ConstructorUtils;
>> -
>> -import javax.validation.ConstraintValidatorFactory;
>> -import javax.validation.MessageInterpolator;
>> -import javax.validation.ParameterNameProvider;
>> -import javax.validation.TraversableResolver;
>> -import javax.validation.ValidationException;
>> -import javax.validation.Validator;
>> -import javax.validation.ValidatorContext;
>> -import java.lang.reflect.Constructor;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -import java.util.ArrayList;
>> -import java.util.List;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> /**
>> * Description: Represents the context that is used to create
>> * <code>ClassValidator</code> instances.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ApacheFactoryContext implements ValidatorContext {
>> private final ApacheValidatorFactory factory;
>> private final MetaBeanFinder metaBeanFinder;
>> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
>> return new MetaBeanManager(new
>> MetaBeanBuilder(builders.toArray(new
>> MetaBeanFactory[builders.size()])));
>> }
>>
>> + @Privileged
>> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
>> Class<F> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return doCreateMetaBeanFactory(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<F>() {
>> - public F run() {
>> - return doCreateMetaBeanFactory(cls);
>> - }
>> - });
>> - }
>> -
>> - private <F extends MetaBeanFactory> F
>> doCreateMetaBeanFactory(final Class<F> cls) {
>> try {
>> Constructor<F> c =
>> ConstructorUtils.getMatchingAccessibleConstructor(cls,
>> ApacheFactoryContext.this.getClass());
>> if (c != null) {
>> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>>
>> private Class<?> loadClass(final String className) {
>> try {
>> - return Class.forName(className, true,
>> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
>> + return Class.forName(className, true,
>> Reflection.getClassLoader(ApacheFactoryContext.class));
>> } catch (ClassNotFoundException ex) {
>> throw new ValidationException("Unable to load class: " +
>> className, ex);
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,16 +18,15 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.commons.lang3.ClassUtils;
>> -
>> import javax.validation.Configuration;
>> import javax.validation.ValidationException;
>> import javax.validation.ValidatorFactory;
>> import javax.validation.spi.BootstrapState;
>> import javax.validation.spi.ConfigurationState;
>> import javax.validation.spi.ValidationProvider;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> +
>> +import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>>
>> /**
>> * Description: Implementation of {@link ValidationProvider} for jsr
>> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
>> // No privileges should be required to access the constructor,
>> // because the classloader of ApacheValidationProvider will always
>> // be an ancestor of the loader of validatorFactoryClass.
>> - return (System.getSecurityManager() == null)
>> - ? instantiateValidatorFactory(validatorFactoryClass,
>> configuration) : AccessController
>> - .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
>> - public ValidatorFactory run() {
>> - return
>> instantiateValidatorFactory(validatorFactoryClass, configuration);
>> - }
>> - });
>> + return instantiateValidatorFactory(validatorFactoryClass,
>> configuration);
>> }
>>
>> + @Privileged
>> private static ValidatorFactory instantiateValidatorFactory(
>> final Class<? extends ValidatorFactory>
>> validatorFactoryClass, final ConfigurationState configuration) {
>> try {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>> Wed Oct 1 04:37:36 2014
>> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
>> * class is presumed have a constructor that accepts a single
>> * {@link ConfigurationState} argument.
>> */
>> - String VALIDATOR_FACTORY_CLASSNAME =
>> "apache.bval.validator-factory-classname";
>> + String VALIDATOR_FACTORY_CLASSNAME =
>> "apache.bval.validator-factory-classname";
>>
>> /**
>> * Specifies the names, delimited by whitespace, of
>> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
>> * <li>default (no-args) constructor</li>
>> * </ol>
>> */
>> - String METABEAN_FACTORY_CLASSNAMES =
>> "apache.bval.metabean-factory-classnames";
>> + String METABEAN_FACTORY_CLASSNAMES =
>> "apache.bval.metabean-factory-classnames";
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>> Wed Oct 1 04:37:36 2014
>> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.ConstraintValidatorFactory;
>> import javax.validation.MessageInterpolator;
>> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
>> import javax.validation.Validator;
>> import javax.validation.ValidatorFactory;
>> import javax.validation.spi.ConfigurationState;
>> +
>> import java.io.Closeable;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Modifier;
>> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
>> * validators.<br/>
>> * This instance is not thread-safe.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ApacheValidatorFactory implements ValidatorFactory,
>> Cloneable {
>> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
>> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
>> ConstraintDefaults();
>> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>>
>> private <T> T newInstance(final Class<T> cls) {
>> try {
>> - return Reflection.INSTANCE.newInstance(cls);
>> + return Reflection.newInstance(cls);
>> } catch (final RuntimeException e) {
>> throw new ValidationException(e.getCause());
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>> Wed Oct 1 04:37:36 2014
>> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
>> import org.apache.bval.util.AccessStrategy;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintDeclarationException;
>> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
>> import javax.validation.metadata.ParameterDescriptor;
>> import javax.validation.metadata.PropertyDescriptor;
>> import javax.validation.metadata.ReturnValueDescriptor;
>> +
>> import java.beans.Introspector;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.AccessibleObject;
>> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
>> /**
>> * Description: Implements {@link BeanDescriptor}.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class BeanDescriptorImpl extends ElementDescriptorImpl
>> implements BeanDescriptor {
>> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
>> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
>> private static final Validation[] EMPTY_VALIDATION = new
>> Validation[0];
>> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
>> Class<?> current = prop.getParentMetaBean().getBeanClass();
>> while (current != null && current != Object.class &&
>> (!methodFound || !fieldFound)) {
>> if (!fieldFound) {
>> - final Field field =
>> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
>> + final Field field =
>> Reflection.getDeclaredField(current, prop.getName());
>> if (field != null) {
>> processConvertGroup(edesc, field);
>> fieldFound = true;
>> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>>
>> if (!methodFound) {
>> final String name =
>> Character.toUpperCase(prop.getName().charAt(0)) +
>> prop.getName().substring(1);
>> - Method m =
>> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
>> + Method m = Reflection.getDeclaredMethod(current, "get" +
>> name);
>> if (m != null) {
>> processConvertGroup(edesc, m);
>> methodFound = true;
>> } else {
>> - m =
>> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
>> + m = Reflection.getDeclaredMethod(current, "is" +
>> name);
>> if (m != null) {
>> processConvertGroup(edesc, m);
>> methodFound = true;
>> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
>> }
>>
>> private void buildConstructorConstraints() throws
>> InvocationTargetException, IllegalAccessException {
>> - for (final Constructor<?> cons :
>> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
>> {
>> + for (final Constructor<?> cons :
>> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
>> final ConstructorDescriptorImpl consDesc = new
>> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>>
>> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
>> consDesc);
>>
>> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
>> final List<Class<?>> classHierarchy =
>> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
>> current);
>> classHierarchy.remove(current);
>>
>> - for (final Method method :
>> Reflection.INSTANCE.getDeclaredMethods(current)) {
>> + for (final Method method :
>> Reflection.getDeclaredMethods(current)) {
>> if (Modifier.isStatic(method.getModifiers()) ||
>> method.isSynthetic()) {
>> continue;
>> }
>> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>>
>> final Collection<Method> parents = new
>> ArrayList<Method>();
>> for (final Class<?> clazz : classHierarchy) {
>> - final Method overriden =
>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> - if (overriden != null) {
>> - parents.add(overriden);
>> - processMethod(overriden, methodDesc);
>> + final Method overridden =
>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> + if (overridden != null) {
>> + parents.add(overridden);
>> + processMethod(overridden, methodDesc);
>> }
>> }
>>
>> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
>> final Class<?>[] interfaces =
>> method.getDeclaringClass().getInterfaces();
>> final Collection<Method> itfWithThisMethod = new
>> ArrayList<Method>();
>> for (final Class<?> i : interfaces) {
>> - final Method m =
>> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
>> method.getParameterTypes());
>> + final Method m =
>> Reflection.getDeclaredMethod(i, method.getName(),
>> method.getParameterTypes());
>> if (m != null) {
>> itfWithThisMethod.add(m);
>> }
>> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
>> returnValid++;
>> }
>> for (final Class<?> clazz : classHierarchy) {
>> - final Method overriden =
>> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> - if (overriden != null) {
>> - if (overriden.getAnnotation(Valid.class) !=
>> null) {
>> + final Method overridden =
>> Reflection.getDeclaredMethod(clazz, method.getName(),
>> method.getParameterTypes());
>> + if (overridden != null) {
>> + if (overridden.getAnnotation(Valid.class)
>> != null) {
>> returnValid++;
>> }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,6 +18,33 @@
>> */
>> package org.apache.bval.jsr;
>>
>> +import java.lang.reflect.Constructor;
>> +import java.lang.reflect.Member;
>> +import java.lang.reflect.Method;
>> +import java.lang.reflect.Modifier;
>> +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 javax.validation.ConstraintDeclarationException;
>> +import javax.validation.ConstraintDefinitionException;
>> +import javax.validation.ConstraintTarget;
>> +import javax.validation.ConstraintViolation;
>> +import javax.validation.ElementKind;
>> +import javax.validation.ValidationException;
>> +import javax.validation.executable.ExecutableValidator;
>> +import javax.validation.groups.Default;
>> +import javax.validation.metadata.BeanDescriptor;
>> +import javax.validation.metadata.ConstraintDescriptor;
>> +import javax.validation.metadata.ElementDescriptor;
>> +import javax.validation.metadata.ParameterDescriptor;
>> +import javax.validation.metadata.PropertyDescriptor;
>> +
>> import org.apache.bval.DynamicMetaBean;
>> import org.apache.bval.MetaBeanFinder;
>> import org.apache.bval.jsr.groups.Group;
>> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
>> import org.apache.commons.lang3.ClassUtils;
>> import org.apache.commons.lang3.ObjectUtils;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>> -
>> -import javax.validation.ConstraintDeclarationException;
>> -import javax.validation.ConstraintDefinitionException;
>> -import javax.validation.ConstraintTarget;
>> -import javax.validation.ConstraintViolation;
>> -import javax.validation.ElementKind;
>> -import javax.validation.ValidationException;
>> -import javax.validation.executable.ExecutableValidator;
>> -import javax.validation.groups.Default;
>> -import javax.validation.metadata.BeanDescriptor;
>> -import javax.validation.metadata.ConstraintDescriptor;
>> -import javax.validation.metadata.ElementDescriptor;
>> -import javax.validation.metadata.ParameterDescriptor;
>> -import javax.validation.metadata.PropertyDescriptor;
>> -import java.lang.reflect.Constructor;
>> -import java.lang.reflect.Member;
>> -import java.lang.reflect.Method;
>> -import java.lang.reflect.Modifier;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -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 org.apache.commons.weaver.privilizer.Privileged;
>>
>> // TODO: centralize treatMapsLikeBeans
>>
>> @@ -312,18 +312,8 @@ public class ClassValidator implements C
>> return this;
>> }
>>
>> + @Privileged
>> private <T> T newInstance(final Class<T> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return doNewInstance(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>> - public T run() {
>> - return doNewInstance(cls);
>> - }
>> - });
>> - }
>> -
>> - private <T> T doNewInstance(final Class<T> cls) {
>> try {
>> Constructor<T> cons =
>> cls.getConstructor(ApacheFactoryContext.class);
>> if (!cons.isAccessible()) {
>> @@ -399,6 +389,7 @@ public class ClassValidator implements C
>>
>> // For each owner in the hierarchy
>> for (final Class<?> owner : classHierarchy) {
>> +
>> context.setCurrentOwner(owner);
>>
>> int numViolations = result.violationsSize();
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,11 +18,16 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import org.apache.bval.cdi.BValExtension;
>> -import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>> -import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>> -import org.apache.bval.jsr.util.IOs;
>> -import org.apache.bval.jsr.xml.ValidationParser;
>> +import java.io.Closeable;
>> +import java.io.IOException;
>> +import java.io.InputStream;
>> +import java.util.Collection;
>> +import java.util.HashMap;
>> +import java.util.HashSet;
>> +import java.util.List;
>> +import java.util.Map;
>> +import java.util.Set;
>> +import java.util.concurrent.CopyOnWriteArrayList;
>>
>> import javax.validation.BootstrapConfiguration;
>> import javax.validation.ConstraintValidatorFactory;
>> @@ -36,18 +41,13 @@ import javax.validation.executable.Execu
>> import javax.validation.spi.BootstrapState;
>> import javax.validation.spi.ConfigurationState;
>> import javax.validation.spi.ValidationProvider;
>> -import java.io.Closeable;
>> -import java.io.IOException;
>> -import java.io.InputStream;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> -import java.util.Collection;
>> -import java.util.HashMap;
>> -import java.util.HashSet;
>> -import java.util.List;
>> -import java.util.Map;
>> -import java.util.Set;
>> -import java.util.concurrent.CopyOnWriteArrayList;
>> +
>> +import org.apache.bval.cdi.BValExtension;
>> +import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
>> +import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
>> +import org.apache.bval.jsr.util.IOs;
>> +import org.apache.bval.jsr.xml.ValidationParser;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>>
>> /**
>> * Description: used to configure apache-validation for jsr.
>> @@ -98,7 +98,7 @@ public class ConfigurationImpl implement
>>
>> protected Collection<ExecutableType> executableValidation;
>>
>> - private Collection<BValExtension.Releasable> releasables = new
>> CopyOnWriteArrayList<BValExtension.Releasable>();
>> + private Collection<BValExtension.Releasable<?>> releasables = new
>> CopyOnWriteArrayList<BValExtension.Releasable<?>>();
>>
>> private boolean beforeCdi = false;
>>
>> @@ -305,27 +305,18 @@ public class ConfigurationImpl implement
>> * @throws ValidationException if the ValidatorFactory cannot be built
>> */
>> public ValidatorFactory buildValidatorFactory() {
>> - if (System.getSecurityManager() == null) {
>> - return doPrivBuildValidatorFactory(this);
>> - }
>> - return AccessController.doPrivileged(new
>> PrivilegedAction<ValidatorFactory>() {
>> - public ValidatorFactory run() {
>> - return
>> doPrivBuildValidatorFactory(ConfigurationImpl.this);
>> - }
>> - });
>> + return doBuildValidatorFactory();
>> }
>>
>> - public ValidatorFactory doPrivBuildValidatorFactory(final
>> ConfigurationImpl impl) {
>> + @Privileged
>> + private ValidatorFactory doBuildValidatorFactory() {
>> prepare();
>> parser.ensureValidatorFactoryCanBeBuilt();
>> - if (provider != null) {
>> - return provider.buildValidatorFactory(impl);
>> - } else {
>> - return findProvider().buildValidatorFactory(impl);
>> - }
>> + final ValidationProvider<?> useProvider = provider == null ?
>> findProvider() : provider;
>> + return useProvider.buildValidatorFactory(this);
>> }
>>
>> - public ConfigurationImpl prepare() {
>> + private ConfigurationImpl prepare() {
>> if (prepared) {
>> return this;
>> }
>> @@ -466,38 +457,19 @@ public class ConfigurationImpl implement
>> };
>> }
>>
>> + @Privileged
>> private <T> T newInstance(final Class<T> cls) {
>> - if (System.getSecurityManager() == null) {
>> - return createInstance(cls);
>> - }
>> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
>> - public T run() {
>> - return createInstance(cls);
>> - }
>> - });
>> - }
>> -
>> - private <T> T createInstance(final Class<T> cls) {
>> try {
>> final BValExtension.Releasable<T> releasable =
>> BValExtension.inject(cls);
>> releasables.add(releasable);
>> return releasable.getInstance();
>> } catch (final Exception e) {
>> - try {
>> - return cls.newInstance();
>> - } catch (final InstantiationException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - } catch (final IllegalAccessException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - }
>> } catch (final NoClassDefFoundError error) {
>> - try {
>> - return cls.newInstance();
>> - } catch (final InstantiationException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - } catch (final IllegalAccessException e1) {
>> - throw new ValidationException(e1.getMessage(), e1);
>> - }
>> + }
>> + try {
>> + return cls.newInstance();
>> + } catch (final Exception e) {
>> + throw new ValidationException(e.getMessage(), e);
>> }
>> }
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,15 +18,17 @@ package org.apache.bval.jsr;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.reflect.TypeUtils;
>> +import org.apache.commons.weaver.privilizer.Privileged;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Constraint;
>> import javax.validation.ConstraintTarget;
>> import javax.validation.Payload;
>> +
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Method;
>> import java.lang.reflect.Type;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.Map;
>> import java.util.concurrent.ConcurrentHashMap;
>> import java.util.concurrent.ConcurrentMap;
>> @@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
>> /**
>> * "message"
>> */
>> - MESSAGE(false, "message"),
>> + MESSAGE("message"),
>>
>> /**
>> * "groups"
>> */
>> - GROUPS(false, "groups"),
>> + GROUPS("groups"),
>>
>> /**
>> * "payload"
>> */
>> - PAYLOAD(false, "payload"),
>> + PAYLOAD("payload"),
>>
>> /**
>> * "validationAppliesTo"
>> */
>> - VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
>> + VALIDATION_APPLIES_TO("validationAppliesTo"),
>>
>> /**
>> * "value" for multi-valued constraints
>> */
>> - VALUE(true, "value");
>> + VALUE("value");
>>
>> @SuppressWarnings("unused")
>> private static class Types {
>> @@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
>> }
>>
>> private final Type type;
>> - private final boolean permitNullDefaultValue;
>> private final String attributeName;
>>
>> - private ConstraintAnnotationAttributes(final boolean
>> permitNullDefaultValue, final String name) {
>> - this.permitNullDefaultValue = permitNullDefaultValue;
>> + private ConstraintAnnotationAttributes(final String name) {
>> this.attributeName = name;
>> try {
>> this.type =
>> Types.class.getDeclaredField(getAttributeName()).getGenericType();
>> @@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
>>
>> public <C extends Annotation> Worker<C> analyze(final Class<C> clazz)
>> {
>> if (clazz.getName().startsWith("javax.validation.constraint."))
>> { // cache only APIs classes to avoid memory leaks
>> + @SuppressWarnings("unchecked")
>> Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
>> if (w == null) {
>> w = new Worker<C>(clazz);
>> @@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
>> throw new RuntimeException("Impossible normally");
>> }
>> }
>> +
>> + @Privilizing(@CallTo(Reflection.class))
>> public class Worker<C extends Annotation> {
>>
>> public final Method method;
>> @@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
>> if (found != null) {
>> return found;
>> }
>> - final Method m =
>> Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
>> + final Method m =
>> Reflection.getPublicMethod(constraintType, attributeName);
>> if (m == null) {
>> cache.putIfAbsent(attributeName, NULL_METHOD);
>> return null;
>> @@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
>> return method != null && method != NULL_METHOD;
>> }
>>
>> - public Object read(final Annotation constraint) {
>> - if (System.getSecurityManager() == null) {
>> - return doInvoke(constraint);
>> - }
>> - return AccessController.doPrivileged(new
>> PrivilegedAction<Object>() {
>> - public Object run() {
>> - return doInvoke(constraint);
>> - }
>> - });
>> + public <T> T read(final Annotation constraint) {
>> + @SuppressWarnings("unchecked")
>> + final T result = (T) doInvoke(constraint);
>> + return result;
>> }
>>
>> + @Privileged
>> private Object doInvoke(final Annotation constraint) {
>> try {
>> return method.invoke(constraint);
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,12 +18,9 @@
>> */
>> package org.apache.bval.jsr;
>>
>> -import javax.validation.ConstraintValidator;
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.lang.annotation.Annotation;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.HashMap;
>> import java.util.LinkedList;
>> import java.util.Map;
>> @@ -32,10 +29,17 @@ import java.util.StringTokenizer;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> +import javax.validation.ConstraintValidator;
>> +
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> /**
>> * Description: Provides access to the default constraints/validator
>> implementation classes built into the framework.
>> * These are configured in DefaultConstraints.properties.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class ConstraintDefaults {
>> private static final Logger log =
>> Logger.getLogger(ConstraintDefaults.class.getName());
>> private static final String DEFAULT_CONSTRAINTS =
>> @@ -101,31 +105,11 @@ public class ConstraintDefaults {
>> while (tokens.hasMoreTokens()) {
>> final String eachClassName = tokens.nextToken();
>>
>> - Class<?> constraintValidatorClass;
>> - if (System.getSecurityManager() == null) {
>> - try {
>> - constraintValidatorClass =
>> Class.forName(eachClassName, true, classloader);
>> - } catch (final ClassNotFoundException e) {
>> - log.log(Level.SEVERE, String.format("Cannot
>> find class %s", eachClassName), e);
>> - constraintValidatorClass = null;
>> - }
>> - } else {
>> - constraintValidatorClass =
>> AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
>> - public Class<?> run() {
>> - try {
>> - return Class.forName(eachClassName,
>> true, classloader);
>> - } catch (final ClassNotFoundException e) {
>> - log.log(Level.SEVERE,
>> String.format("Cannot find class %s", eachClassName), e);
>> - return null;
>> - }
>> - }
>> - });
>> - }
>> -
>> - if (constraintValidatorClass != null) {
>> - classes.add(constraintValidatorClass);
>> + try {
>> + classes.add(Reflection.getClass(classloader,
>> eachClassName));
>> + } catch (Exception e) {
>> + log.log(Level.SEVERE, String.format("Cannot find
>> class %s", eachClassName), e);
>> }
>> -
>> }
>>
>> loadedConstraints.put((String) entry.getKey(),
>> classes.toArray(new Class[classes.size()]));
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>> Wed Oct 1 04:37:36 2014
>> @@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
>> }
>>
>> private <A extends Annotation, T> ConstraintValidator<A, ? super
>> T> getConstraintValidator(A annotation,
>> -
>> Class<? extends ConstraintValidator<A, ?>>[]
>> constraintClasses, Class<?> owner, AccessStrategy access) {
>> + Class<? extends ConstraintValidator<A, ?>>[]
>> constraintClasses, Class<?> owner, AccessStrategy access) {
>> if (constraintClasses != null && constraintClasses.length > 0) {
>> Type type = determineTargetedType(owner, access);
>>
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>> Wed Oct 1 04:37:36 2014
>> @@ -19,8 +19,11 @@ package org.apache.bval.jsr;
>> import org.apache.bval.el.MessageEvaluator;
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ArrayUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.MessageInterpolator;
>> +
>> import java.util.Locale;
>> import java.util.Map;
>> import java.util.MissingResourceException;
>> @@ -37,6 +40,7 @@ import java.util.regex.Pattern;
>> * into human-readable messages. It uses ResourceBundles to find the
>> messages.
>> * This class is threadsafe.<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultMessageInterpolator implements MessageInterpolator {
>> private static final Logger log =
>> Logger.getLogger(DefaultMessageInterpolator.class.getName());
>> private static final boolean LOG_FINEST =
>> log.isLoggable(Level.FINEST);
>> @@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
>> */
>> private ResourceBundle getFileBasedResourceBundle(Locale locale) {
>> ResourceBundle rb = null;
>> - final ClassLoader classLoader =
>> Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
>> + final ClassLoader classLoader =
>> Reflection.getClassLoader(DefaultMessageInterpolator.class);
>> if (classLoader != null) {
>> rb = loadBundle(classLoader, locale,
>> USER_VALIDATION_MESSAGES + " not found by thread
>> local classloader");
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>> Wed Oct 1 04:37:36 2014
>> @@ -17,19 +17,23 @@
>> package org.apache.bval.jsr;
>>
>>
>> -import javax.validation.ValidationException;
>> -import javax.validation.ValidationProviderResolver;
>> -import javax.validation.spi.ValidationProvider;
>> import java.io.BufferedReader;
>> import java.io.IOException;
>> import java.io.InputStreamReader;
>> import java.net.URL;
>> -import java.security.AccessController;
>> -import java.security.PrivilegedAction;
>> import java.util.ArrayList;
>> import java.util.Enumeration;
>> import java.util.List;
>>
>> +import javax.validation.ValidationException;
>> +import javax.validation.ValidationProviderResolver;
>> +import javax.validation.spi.ValidationProvider;
>> +
>> +import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>> +
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultValidationProviderResolver implements
>> ValidationProviderResolver {
>>
>> //TODO - Spec recommends caching per classloader
>> @@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
>> // find all service provider cfgs
>> Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
>> while (cfgs.hasMoreElements()) {
>> - URL url = cfgs.nextElement();
>> + final URL url = cfgs.nextElement();
>> BufferedReader br = null;
>> try {
>> br = new BufferedReader(new
>> InputStreamReader(url.openStream()), 256);
>> @@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
>> if (!line.startsWith("#")) {
>> try {
>> // try loading the specified class
>> - final Class<?> provider =
>> cl.loadClass(line);
>> + @SuppressWarnings("rawtypes")
>> + final Class<? extends
>> ValidationProvider> providerType =
>> +
>> cl.loadClass(line).asSubclass(ValidationProvider.class);
>> // create an instance to return
>> - final ValidationProvider<?> vp;
>> - if (System.getSecurityManager() == null) {
>> - try {
>> - vp = (ValidationProvider<?>)
>> provider.newInstance();
>> - } catch (final Exception ex) {
>> - throw new
>> ValidationException("Cannot instantiate : " + provider, ex);
>> - }
>> - } else {
>> - vp =
>> AccessController.doPrivileged(new
>> PrivilegedAction<ValidationProvider<?>>() {
>> - public ValidationProvider<?>
>> run() {
>> - try {
>> - return
>> (ValidationProvider<?>) provider.newInstance();
>> - } catch (final Exception ex) {
>> - throw new
>> ValidationException("Cannot instantiate : " + provider, ex);
>> - }
>> - }
>> - });
>> - }
>> - providers.add(vp);
>> +
>>
>> providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
>>
>> } catch (ClassNotFoundException e) {
>> throw new ValidationException("Failed
>> to load provider " +
>> @@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
>> }
>> line = br.readLine();
>> }
>> - br.close();
>> } catch (IOException e) {
>> throw new ValidationException("Error trying to
>> read " + url, e);
>> } finally {
>> - if (br != null)
>> + if (br != null) {
>> br.close();
>> + }
>> }
>> }
>> } catch (IOException e) {
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>> Wed Oct 1 04:37:36 2014
>> @@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
>> import org.apache.bval.util.FieldAccess;
>> import org.apache.bval.util.MethodAccess;
>> import org.apache.bval.util.reflection.Reflection;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.ConstraintDeclarationException;
>> import javax.validation.GroupDefinitionException;
>> import javax.validation.GroupSequence;
>> import javax.validation.groups.ConvertGroup;
>> import javax.validation.groups.Default;
>> +
>> import java.io.Serializable;
>> import java.lang.annotation.Annotation;
>> import java.lang.annotation.ElementType;
>> @@ -55,6 +58,7 @@ import java.util.logging.Logger;
>> * Description: process the class annotations for JSR303 constraint
>> validations to build the MetaBean with information
>> * from annotations and JSR303 constraint mappings (defined in xml)<br/>
>> */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class JsrMetaBeanFactory implements MetaBeanFactory {
>> /** Shared log instance */
>> // of dubious utility as it's static :/
>> @@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
>> processGroupSequence(beanClass, metabean);
>>
>> // process class, superclasses and interfaces
>> - List<Class<?>> classSequence = new ArrayList<Class<?>>();
>> - ClassHelper.fillFullClassHierarchyAsList(classSequence,
>> beanClass);
>> + final List<Class<?>> classSequence =
>> + ClassHelper.fillFullClassHierarchyAsList(new
>> ArrayList<Class<?>>(), beanClass);
>>
>> // start with superclasses and go down the hierarchy so that
>> // the child classes are processed last to have the chance to
>> @@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
>>
>> final Collection<String> missingValid = new ArrayList<String>();
>>
>> - final Field[] fields =
>> Reflection.INSTANCE.getDeclaredFields(beanClass);
>> + final Field[] fields = Reflection.getDeclaredFields(beanClass);
>> for (final Field field : fields) {
>> MetaProperty metaProperty =
>> metabean.getProperty(field.getName());
>> // create a property for those fields for which there is not
>> yet a
>> @@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
>> }
>> }
>> }
>> - final Method[] methods =
>> Reflection.INSTANCE.getDeclaredMethods(beanClass);
>> + final Method[] methods = Reflection.getDeclaredMethods(beanClass);
>> for (final Method method : methods) {
>> if (method.isSynthetic() || method.isBridge()) {
>> continue;
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>> Wed Oct 1 04:37:36 2014
>> @@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
>>
>> import org.apache.bval.util.reflection.Reflection;
>> import org.apache.commons.lang3.ClassUtils;
>> +import org.apache.commons.weaver.privilizer.Privilizing;
>> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>>
>> import javax.validation.Path;
>> import javax.validation.TraversableResolver;
>> +
>> import java.lang.annotation.ElementType;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>>
>> /** @see javax.validation.TraversableResolver */
>> +@Privilizing(@CallTo(Reflection.class))
>> public class DefaultTraversableResolver implements
>> TraversableResolver, CachingRelevant {
>> private static final Logger log =
>> Logger.getLogger(DefaultTraversableResolver.class.getName());
>> private static final boolean LOG_FINEST =
>> log.isLoggable(Level.FINEST);
>> @@ -71,9 +75,9 @@ public class DefaultTraversableResolver
>> /** Tries to load detect and load JPA. */
>> @SuppressWarnings("unchecked")
>> private void initJpa() {
>> - final ClassLoader classLoader = getClassLoader();
>> + final ClassLoader classLoader =
>> Reflection.getClassLoader(DefaultTraversableResolver.class);
>> try {
>> - Reflection.INSTANCE.getClass(classLoader,
>> PERSISTENCE_UTIL_CLASSNAME);
>> + Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
>> if (LOG_FINEST) {
>> log.log(Level.FINEST, String.format("Found %s on
>> classpath.", PERSISTENCE_UTIL_CLASSNAME));
>> }
>> @@ -101,9 +105,4 @@ public class DefaultTraversableResolver
>> public boolean needsCaching() {
>> return jpaTR != null &&
>> CachingTraversableResolver.needsCaching(jpaTR);
>> }
>> -
>> - private static ClassLoader getClassLoader()
>> - {
>> - return
>> Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
>> - }
>> }
>>
>> Modified:
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> URL:
>> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>>
>> ==============================================================================
>> ---
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> (original)
>> +++
>> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>> Wed Oct 1 04:37:36 2014
>> @@ -43,6 +43,7 @@ public class ClassHelper {
>> * The current list of classes in the hierarchy.
>> * @param clazz
>> */
>> + @Deprecated
>> static public List<Class<?>>
>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
>> clazz) {
>> if (clazz == null || clazz == Object.class || clazz ==
>> Serializable.class || clazz == Cloneable.class) {
>> return allClasses;
>> @@ -58,26 +59,4 @@ public class ClassHelper {
>> return allClasses;
>> }
>>
>> - /**
>> - * @deprecated Will be removed for security reasons.
>> - *
>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>> - */
>> - @Deprecated
>> - public static Class<?> getClass(String className) throws
>> ClassNotFoundException {
>> - return getClass(className, true);
>> - }
>> -
>> - /**
>> - * @deprecated Will be removed for security reasons.
>> - *
>> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
>> - */
>> - @Deprecated
>> - public static Class<?> getClass(String className, boolean
>> initialize) throws ClassNotFoundException {
>> - ClassLoader loader =
>> Thread.currentThread().getContextClassLoader();
>> - if (loader == null)
>> - loader = ClassHelper.class.getClassLoader();
>> - return ClassUtils.getClass(loader, className, initialize);
>> - }
>> }
>>
>
>
Re: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Daniel Cunha <da...@gmail.com>.
I try see something here.
But I have a problem.. my laptop not build bval.
The build stop in Building Apache BVal :: bval-jsr 1.1.0-alpha-SNAPSHOT
Linux 3.13.0 32bits
4GB ram
JDK 1.8.0_25
On Sat, Dec 6, 2014 at 8:08 AM, Romain Manni-Bucau <rm...@gmail.com>
wrote:
> Hi Matt,
>
> I have 2 questions:
> 1) surely obvious but I dont get why you re-set the accessible (if
> (mustSet)). While we need it accessible we can keep it set to true no?
> 2) more important: tck are broken now Tests run: 758, Failures: 13,
> Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
>
>
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
>
>
>
> ---------- Forwarded message ----------
> From: <mb...@apache.org>
> Date: 2014-10-01 6:37 GMT+02:00
> Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
> bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
> To: commits@bval.apache.org
>
>
> Author: mbenson
> Date: Wed Oct 1 04:37:36 2014
> New Revision: 1628598
>
> URL: http://svn.apache.org/r1628598
> Log:
> use commons weaver/privilizer
>
> Removed:
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
> Modified:
> bval/branches/bval-11/bval-core/pom.xml
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
>
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> bval/branches/bval-11/bval-jsr/ (props changed)
> bval/branches/bval-11/bval-jsr/pom.xml
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
>
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
>
> bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
> bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
> bval/branches/bval-11/bval-tck11/ (props changed)
> bval/branches/bval-11/bval-xstream/pom.xml
>
> bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
> bval/branches/bval-11/pom.xml
>
> Modified: bval/branches/bval-11/bval-core/pom.xml
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> --- bval/branches/bval-11/bval-core/pom.xml (original)
> +++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
> @@ -46,6 +46,10 @@
> <artifactId>commons-beanutils-core</artifactId>
> </dependency>
> <dependency>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-privilizer-api</artifactId>
> + </dependency>
> + <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <scope>test</scope>
> @@ -118,6 +122,10 @@ build.timestamp=${timestamp}
> </execution>
> </executions>
> </plugin>
> + <plugin>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-maven-plugin</artifactId>
> + </plugin>
> </plugins>
> <pluginManagement>
> <plugins>
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,13 +16,11 @@
> */
> package org.apache.bval;
>
> -import org.apache.bval.util.AccessStrategy;
> -
> import java.lang.annotation.ElementType;
> import java.lang.reflect.Constructor;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> +
> +import org.apache.bval.util.AccessStrategy;
>
> public class ConstructorAccess extends AccessStrategy {
>
> @@ -30,18 +28,7 @@ public class ConstructorAccess extends A
>
> public ConstructorAccess(final Constructor<?> constructor) {
> this.constructor = constructor;
> - if (!constructor.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - constructor.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - constructor.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(constructor);
> }
>
> @Override
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
> Wed Oct 1 04:37:36 2014
> @@ -17,6 +17,8 @@
> package org.apache.bval.model;
>
> import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import java.beans.Introspector;
> import java.lang.reflect.Constructor;
> @@ -34,6 +36,7 @@ import java.util.TreeMap;
> *
> * @see MetaProperty
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class MetaBean extends FeaturesCapable implements Cloneable,
> Features.Bean {
> private static final long serialVersionUID = 2L;
>
> @@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
> int i = 0;
> Class<?> clazz = beanClass;
> while (clazz != null && clazz != Object.class) {
> - for (final Field f :
> Reflection.INSTANCE.getDeclaredFields(clazz)) {
> + for (final Field f : Reflection.getDeclaredFields(clazz))
> {
> i++;
> final String name = f.getName();
> if (!fields.containsKey(name)) {
> @@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
> protected MethodComparator(final Class<?> beanClass) {
> Class<?> clazz = beanClass;
> while (clazz != null && clazz != Object.class) {
> - for (final Method m :
> Reflection.INSTANCE.getDeclaredMethods(clazz)) {
> + for (final Method m :
> Reflection.getDeclaredMethods(clazz)) {
> methods.put(m,
> Arrays.hashCode(m.getParameterTypes()));
> }
> clazz = clazz.getSuperclass();
> @@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
> private final Map<Constructor<?>, Integer> constructors = new
> HashMap<Constructor<?>, Integer>();
>
> protected ConstructorComparator(final Class<?> beanClass) {
> - for (final Constructor<?> c :
> Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
> + for (final Constructor<?> c :
> Reflection.getDeclaredConstructors(beanClass)) {
> constructors.put(c,
> Arrays.hashCode(c.getParameterTypes()));
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
> Wed Oct 1 04:37:36 2014
> @@ -17,8 +17,11 @@
> package org.apache.bval.util;
>
> import java.lang.annotation.ElementType;
> +import java.lang.reflect.AccessibleObject;
> import java.lang.reflect.Type;
>
> +import org.apache.commons.weaver.privilizer.Privileged;
> +
> /**
> * Description: abstract class to encapsulate different strategies
> * to get the value of a Property. This class is designed such that
> @@ -55,4 +58,21 @@ public abstract class AccessStrategy {
> * @return String
> */
> public abstract String getPropertyName();
> +
> + /**
> + * Set {@code accessibleObject} as being accessible
> + * @param accessibleObject
> + */
> + protected boolean setAccessible(AccessibleObject accessibleObject) {
> + if (accessibleObject.isAccessible()) {
> + return false;
> + }
> + doSetAccessible(accessibleObject);
> + return true;
> + }
> +
> + @Privileged
> + private void doSetAccessible(AccessibleObject accessibleObject) {
> + accessibleObject.setAccessible(true);
> + }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
> Wed Oct 1 04:37:36 2014
> @@ -18,18 +18,21 @@
> */
> package org.apache.bval.util;
>
> -import org.apache.bval.util.reflection.Reflection;
> -
> import java.io.IOException;
> import java.io.InputStream;
> import java.util.Properties;
> import java.util.StringTokenizer;
>
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> /**
> * This class contains version information for BVal.
> * It uses Ant's filter tokens to convert the template into a java
> * file with current information.
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class BValVersion {
>
> /** Project name */
> @@ -157,7 +160,7 @@ public class BValVersion {
> * {@inheritDoc}
> */
> public String toString() {
> - StringBuilder buf = new StringBuilder(80 * 40);
> + final StringBuilder buf = new StringBuilder(80 * 40);
> appendBanner(buf);
> buf.append("\n");
>
> @@ -169,8 +172,7 @@ public class BValVersion {
> appendProperty("java.vendor", buf).append("\n\n");
>
> buf.append("java.class.path:\n");
> - StringTokenizer tok = new StringTokenizer(
> - Reflection.INSTANCE.getProperty("java.class.path"));
> + final StringTokenizer tok = new
> StringTokenizer(Reflection.getProperty("java.class.path"));
> while (tok.hasMoreTokens()) {
> buf.append("\t").append(tok.nextToken());
> buf.append("\n");
> @@ -191,7 +193,6 @@ public class BValVersion {
> }
>
> private StringBuilder appendProperty(String prop, StringBuilder buf) {
> - return buf.append(prop).append(": ").append(
> - Reflection.INSTANCE.getProperty(prop));
> + return buf.append(prop).append(":
> ").append(Reflection.getProperty(prop));
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -19,8 +19,6 @@ package org.apache.bval.util;
> import java.lang.annotation.ElementType;
> import java.lang.reflect.Field;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
>
> /**
> * Description: direct field access strategy.<br/>
> @@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
> */
> public FieldAccess(final Field field) {
> this.field = field;
> - if (!field.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - field.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - field.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(field);
> }
>
> /**
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,6 +16,7 @@
> */
> package org.apache.bval.util;
>
> +import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
>
> import java.lang.annotation.ElementType;
> @@ -28,7 +29,7 @@ import java.util.Map;
> /**
> * {@link AccessStrategy} to get an indexed member of an {@link Iterable}
> or
> * array object.
> - */
> + */
> public class IndexedAccess extends AccessStrategy {
> private static final TypeVariable<?> ITERABLE_TYPE =
> Iterable.class.getTypeParameters()[0];
>
> @@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
> }
> if (TypeUtils.isAssignable(containerType, Iterable.class)) {
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Iterable.class);
> - return typeArguments.containsKey(ITERABLE_TYPE) ?
> typeArguments.get(ITERABLE_TYPE) : Object.class;
> + return
> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> ITERABLE_TYPE), Object.class);
> }
> return null;
> }
>
> - private Type containerType;
> - private Integer index;
> + private final Type containerType;
> + private final Integer index;
>
> /**
> * Create a new IndexedAccessStrategy instance.
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -16,6 +16,7 @@
> */
> package org.apache.bval.util;
>
> +import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
>
> import java.lang.annotation.ElementType;
> @@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
> public static Type getJavaElementType(Type containerType) {
> if (TypeUtils.isAssignable(containerType, Map.class)) {
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Map.class);
> - return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
> typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
> + return
> ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
> MAP_TYPEVARS[1]), Object.class);
> }
> return null;
> }
>
> - private Type containerType;
> - private Object key;
> + private final Type containerType;
> + private final Object key;
>
> /**
> * Create a new KeyedAccess instance.
> @@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
> if (instance instanceof Map<?, ?>) {
> Map<?, ?> map = (Map<?, ?>) instance;
> Map<TypeVariable<?>, Type> typeArguments =
> TypeUtils.getTypeArguments(containerType, Map.class);
> - Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
> + Type keyType = TypeUtils.unrollVariables(typeArguments,
> MAP_TYPEVARS[0]);
> if (key == null || keyType == null ||
> TypeUtils.isInstance(key, keyType)) {
> return map.get(key);
> }
> @@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
> */
> @Override
> public Type getJavaType() {
> - Type result = getJavaElementType(containerType);
> + final Type result = getJavaElementType(containerType);
> return result == null ? Object.class : result;
> }
>
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
> Wed Oct 1 04:37:36 2014
> @@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
>
> /**
> * Description: invoke a zero-argument method (getter)<br/>
> @@ -47,18 +45,7 @@ public class MethodAccess extends Access
> public MethodAccess(String propertyName, final Method method) {
> this.method = method;
> this.propertyName = propertyName;
> - if (!method.isAccessible()) {
> - if (System.getSecurityManager() == null) {
> - method.setAccessible(true);
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> - public Void run() {
> - method.setAccessible(true);
> - return null;
> - }
> - });
> - }
> - }
> + setAccessible(method);
> }
>
> /**
> @@ -69,21 +56,14 @@ public class MethodAccess extends Access
> * the method name id not according to the JavaBeans standard.
> */
> public static String getPropertyName(Method member) {
> - String name = null;
> - String methodName = member.getName();
> + final String methodName = member.getName();
> if (methodName.startsWith("is")) {
> - name = Introspector.decapitalize(methodName.substring(2));
> - } /* else if ( methodName.startsWith("has")) {
> - name = Introspector.decapitalize(
> methodName.substring( 3 ) );
> - } */
> - // setter annotation is NOT supported in the spec
> - /* else if (method.getName().startsWith("set") &&
> method.getParameterTypes().length == 1) {
> - propName =
> Introspector.decapitalize(method.getName().substring(3));
> - } */
> - else if (methodName.startsWith("get")) {
> - name = Introspector.decapitalize(methodName.substring(3));
> + return Introspector.decapitalize(methodName.substring(2));
> + }
> + if (methodName.startsWith("get")) {
> + return Introspector.decapitalize(methodName.substring(3));
> }
> - return name;
> + return null;
> }
>
> /**
>
> Modified:
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> (original)
> +++
> bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
> Wed Oct 1 04:37:36 2014
> @@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
> import java.lang.reflect.Field;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> +import java.lang.reflect.Modifier;
>
> -public interface Reflection {
> - static final Reflection INSTANCE = ReflectionFactory.newInstance();
> +import org.apache.commons.lang3.ClassUtils;
>
> - Class<?> getClass(final ClassLoader classLoader, final String
> className) throws Exception;
> -
> - Object getAnnotationValue(final Annotation annotation, final
> String name) throws IllegalAccessException, InvocationTargetException;
> +/**
> + * Security-agnostic "blueprint" class for reflection-related operations.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class Reflection {
> +
> + private static void setAccessibility(final Field field) {
> + // FIXME 2011-03-27 jw:
> + // - Why not simply call field.setAccessible(true)?
> + // - Fields can not be abstract.
> + if (!Modifier.isPublic(field.getModifiers())
> + || (Modifier.isPublic(field.getModifiers()) &&
> Modifier.isAbstract(field.getModifiers()))) {
> + field.setAccessible(true);
> + }
> + }
>
> - ClassLoader getClassLoader(final Class<?> clazz);
> + public static Class<?> getClass(final ClassLoader classLoader,
> final String className) throws Exception {
> + return ClassUtils.getClass(classLoader, className, true);
> + }
>
> - String getProperty(final String name);
> + public static Object getAnnotationValue(final Annotation
> annotation, final String name)
> + throws IllegalAccessException, InvocationTargetException {
> + Method valueMethod;
> + try {
> + valueMethod =
> annotation.annotationType().getDeclaredMethod(name);
> + } catch (final NoSuchMethodException ex) {
> + // do nothing
> + valueMethod = null;
> + }
> + if (null != valueMethod) {
> + if (!valueMethod.isAccessible()) {
> + valueMethod.setAccessible(true);
> + }
> + return valueMethod.invoke(annotation);
> + }
> + return null;
> + }
>
> - Field getDeclaredField(final Class<?> clazz, final String fieldName);
> + public static ClassLoader getClassLoader(final Class<?> clazz) {
> + final ClassLoader cl =
> Thread.currentThread().getContextClassLoader();
> + if (cl != null) {
> + return cl;
> + }
> + return clazz.getClassLoader();
> + }
>
> - Field[] getDeclaredFields(final Class<?> clazz);
> + public static String getProperty(final String name) {
> + return System.getProperty(name);
> + }
>
> - Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
> Class<?>... parameters);
> + public static Field getDeclaredField(final Class<?> clazz, final
> String fieldName) {
> + final Field f;
> + try {
> + f = clazz.getDeclaredField(fieldName);
> + } catch (final NoSuchFieldException e) {
> + return null;
> + }
> + setAccessibility(f);
> + return f;
> + }
>
> - Method getDeclaredMethod(final Class<?> clazz, final String name,
> final Class<?>... parameters);
> + public static Field[] getDeclaredFields(final Class<?> clazz) {
> + final Field[] fields = clazz.getDeclaredFields();
> + if (fields.length > 0) {
> + for (final Field f : fields) {
> + if (!f.isAccessible()) {
> + f.setAccessible(true);
> + }
> + }
> + }
> + return fields;
> + }
>
> - Method[] getDeclaredMethods(final Class<?> clazz);
> + public static Constructor<?> getDeclaredConstructor(final
> Class<?> clazz, final Class<?>... parameters) {
> + try {
> + return clazz.getDeclaredConstructor(parameters);
> + } catch (final NoSuchMethodException e) {
> + return null;
> + }
> + }
>
> - Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
> + public static Method getDeclaredMethod(final Class<?> clazz,
> final String name, final Class<?>... parameters) {
> + try {
> + return clazz.getDeclaredMethod(name, parameters);
> + } catch (final NoSuchMethodException e) {
> + return null;
> + }
> + }
>
> - Method getPublicMethod(final Class<?> clazz, final String methodName);
> + public static Method[] getDeclaredMethods(final Class<?> clazz) {
> + return clazz.getDeclaredMethods();
> + }
>
> - <T> T newInstance(final Class<T> cls);
> + public static Constructor<?>[] getDeclaredConstructors(final
> Class<?> clazz) {
> + return clazz.getDeclaredConstructors();
> + }
>
> - public static class ReflectionFactory {
> - public static Reflection newInstance() {
> - if (System.getSecurityManager() != null) {
> - return new SecurityManagerReflection();
> - }
> - return new DefaultReflection();
> + public static Method getPublicMethod(final Class<?> clazz, final
> String methodName) {
> + try {
> + return clazz.getMethod(methodName);
> + } catch (final NoSuchMethodException e) {
> + return null;
> }
> + }
>
> - private ReflectionFactory() {
> - // no-op
> + public static <T> T newInstance(final Class<T> cls) {
> + try {
> + return cls.newInstance();
> + } catch (final Exception ex) {
> + throw new RuntimeException("Cannot instantiate : " + cls, ex);
> }
> }
> +
> }
>
> Propchange: bval/branches/bval-11/bval-jsr/
>
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Wed Oct 1 04:37:36 2014
> @@ -0,0 +1,4 @@
> +.classpath
> +.project
> +.settings
> +target
>
> Propchange: bval/branches/bval-11/bval-jsr/
>
> ------------------------------------------------------------------------------
> --- svn:mergeinfo (added)
> +++ svn:mergeinfo Wed Oct 1 04:37:36 2014
> @@ -0,0 +1,2 @@
> +/bval/trunk/bval-jsr303:1598345
> +/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
>
> Modified: bval/branches/bval-11/bval-jsr/pom.xml
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> --- bval/branches/bval-11/bval-jsr/pom.xml (original)
> +++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
> @@ -79,13 +79,73 @@
> <plugins>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> + <artifactId>maven-resources-plugin</artifactId>
> + <executions>
> + <execution>
> + <id>default-testResources</id>
> + <phase />
> + <goals>
> + <goal>testResources</goal>
> + </goals>
> + </execution>
> + </executions>
> + </plugin>
> + <plugin>
> + <groupId>org.apache.maven.plugins</groupId>
> + <artifactId>maven-antrun-plugin</artifactId>
> + <executions>
> + <execution>
> + <id>filter-testResources</id>
> + <phase>process-test-resources</phase>
> + <goals>
> + <goal>run</goal>
> + </goals>
> + <configuration>
> + <target>
> + <mkdir
> dir="${project.build.testOutputDirectory}" />
> + <condition property="slash"
> value="/" else="">
> + <os family="windows" />
> + </condition>
> + <copy
> todir="${project.build.testOutputDirectory}" overwrite="true">
> + <fileset
> dir="${project.basedir}/src/test/resources" excludes="java.policy" />
> + </copy>
> + <copy
> todir="${project.build.testOutputDirectory}" overwrite="true">
> + <fileset
> file="${project.basedir}/src/test/resources/java.policy" />
> + <filterchain>
> + <expandproperties />
> + <!-- append extra
> slash on windows only -->
> + <replacestring
> from="file://" to="file://${slash}" />
> + <replacestring
> from="${file.separator}" to="/" />
> + <!-- preserve
> system-specific file separator -->
> + <expandproperties>
> + <propertyset>
> + <propertyref
> prefix="project." />
> + <globmapper
> from="*" to="preserve.*" />
> + </propertyset>
> + </expandproperties>
> + </filterchain>
> + </copy>
> + </target>
> + </configuration>
> + </execution>
> + </executions>
> + <dependencies>
> + <dependency>
> + <groupId>org.apache.ant</groupId>
> + <artifactId>ant</artifactId>
> + <version>1.9.3</version>
> + </dependency>
> + </dependencies>
> + </plugin>
> + <plugin>
> + <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-surefire-plugin</artifactId>
> <configuration>
> <includes>
> <include>**/*Test.java</include>
> <include>**/*TestCase.java</include>
> </includes>
> - <argLine>-Djava.security.manager
>
> -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
> + <argLine>-Djava.security.manager
>
> -Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
> </configuration>
> </plugin>
> </plugins>
> @@ -103,6 +163,10 @@
> <groupId>org.apache.commons</groupId>
> <artifactId>commons-lang3</artifactId>
> </dependency>
> + <dependency>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-privilizer-api</artifactId>
> + </dependency>
> <!-- optional dependencies -->
> <dependency>
> <groupId>org.apache.bval</groupId>
> @@ -235,6 +299,10 @@
> </includes>
> </configuration>
> </plugin>
> + <plugin>
> + <groupId>org.apache.commons</groupId>
> + <artifactId>commons-weaver-maven-plugin</artifactId>
> + </plugin>
> </plugins>
> </build>
> </project>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
> Wed Oct 1 04:37:36 2014
> @@ -18,27 +18,9 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.bval.jsr.groups.GroupsComputer;
> -import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> -import org.apache.bval.util.AccessStrategy;
> -import org.apache.commons.lang3.reflect.TypeUtils;
> -
> -import javax.validation.Constraint;
> -import javax.validation.ConstraintDeclarationException;
> -import javax.validation.ConstraintDefinitionException;
> -import javax.validation.ConstraintTarget;
> -import javax.validation.ConstraintValidator;
> -import javax.validation.ConstraintValidatorFactory;
> -import javax.validation.OverridesAttribute;
> -import javax.validation.Payload;
> -import javax.validation.ReportAsSingleViolation;
> -import javax.validation.constraintvalidation.SupportedValidationTarget;
> -import javax.validation.constraintvalidation.ValidationTarget;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.Arrays;
> import java.util.Collections;
> import java.util.HashMap;
> @@ -50,6 +32,24 @@ import java.util.Set;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> +import javax.validation.Constraint;
> +import javax.validation.ConstraintDeclarationException;
> +import javax.validation.ConstraintDefinitionException;
> +import javax.validation.ConstraintTarget;
> +import javax.validation.ConstraintValidator;
> +import javax.validation.ConstraintValidatorFactory;
> +import javax.validation.OverridesAttribute;
> +import javax.validation.Payload;
> +import javax.validation.ReportAsSingleViolation;
> +import javax.validation.constraintvalidation.SupportedValidationTarget;
> +import javax.validation.constraintvalidation.ValidationTarget;
> +
> +import org.apache.bval.jsr.groups.GroupsComputer;
> +import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
> +import org.apache.bval.util.AccessStrategy;
> +import org.apache.commons.lang3.reflect.TypeUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +
> /**
> * Description: helper class that builds a {@link ConstraintValidation}
> or its
> * composite constraint validations by parsing the jsr-annotations and
> @@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
> }
>
> /** build attributes, payload, groups from 'annotation' */
> + @Privileged
> private void buildFromAnnotation() {
> - if (constraintValidation.getAnnotation() != null) {
> - if (System.getSecurityManager() == null) {
> - doBuildFromAnnotations();
> - } else {
> - AccessController.doPrivileged(new
> PrivilegedAction<Object>() {
> - public Object run() {
> - doBuildFromAnnotations();
> - return null;
> - }
> - });
> - }
> + if (constraintValidation.getAnnotation() == null) {
> + return;
> }
> - }
> -
> - private void doBuildFromAnnotations() {
> final Class<? extends Annotation> annotationType =
> constraintValidation.getAnnotation().annotationType();
>
> boolean foundPayload = false;
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
> Wed Oct 1 04:37:36 2014
> @@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
> import org.apache.bval.util.AccessStrategy;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintValidator;
> @@ -32,6 +34,7 @@ import javax.validation.constraintvalida
> import javax.validation.constraintvalidation.ValidationTarget;
> import javax.validation.groups.ConvertGroup;
> import javax.validation.groups.Default;
> +
> import java.lang.annotation.Annotation;
> import java.lang.reflect.AnnotatedElement;
> import java.lang.reflect.InvocationTargetException;
> @@ -44,6 +47,7 @@ import java.util.Set;
> * annotations, including composed constraints and the resolution of
> * {@link ConstraintValidator} implementations.
> */
> +@Privilizing(@CallTo(Reflection.class))
> public final class AnnotationProcessor {
> /** {@link ApacheFactoryContext} used */
> private final ApacheFactoryContext factoryContext;
> @@ -142,7 +146,8 @@ public final class AnnotationProcessor {
> * annotated by @Constraint) whose value element has a return
> type of an
> * array of constraint annotations in a special way.
> */
> - final Object result =
> Reflection.INSTANCE.getAnnotationValue(annotation,
> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> + final Object result =
> + Reflection.getAnnotationValue(annotation,
> ConstraintAnnotationAttributes.VALUE.getAttributeName());
> if (result instanceof Annotation[]) {
> boolean changed = false;
> for (final Annotation each : (Annotation[]) result) {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
> Wed Oct 1 04:37:36 2014
> @@ -18,6 +18,18 @@
> */
> package org.apache.bval.jsr;
>
> +import java.lang.reflect.Constructor;
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +import javax.validation.ConstraintValidatorFactory;
> +import javax.validation.MessageInterpolator;
> +import javax.validation.ParameterNameProvider;
> +import javax.validation.TraversableResolver;
> +import javax.validation.ValidationException;
> +import javax.validation.Validator;
> +import javax.validation.ValidatorContext;
> +
> import org.apache.bval.IntrospectorMetaBeanFactory;
> import org.apache.bval.MetaBeanBuilder;
> import org.apache.bval.MetaBeanFactory;
> @@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
> import org.apache.bval.xml.XMLMetaBeanManager;
> import org.apache.commons.lang3.StringUtils;
> import org.apache.commons.lang3.reflect.ConstructorUtils;
> -
> -import javax.validation.ConstraintValidatorFactory;
> -import javax.validation.MessageInterpolator;
> -import javax.validation.ParameterNameProvider;
> -import javax.validation.TraversableResolver;
> -import javax.validation.ValidationException;
> -import javax.validation.Validator;
> -import javax.validation.ValidatorContext;
> -import java.lang.reflect.Constructor;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -import java.util.ArrayList;
> -import java.util.List;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> /**
> * Description: Represents the context that is used to create
> * <code>ClassValidator</code> instances.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ApacheFactoryContext implements ValidatorContext {
> private final ApacheValidatorFactory factory;
> private final MetaBeanFinder metaBeanFinder;
> @@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
> return new MetaBeanManager(new
> MetaBeanBuilder(builders.toArray(new
> MetaBeanFactory[builders.size()])));
> }
>
> + @Privileged
> private <F extends MetaBeanFactory> F createMetaBeanFactory(final
> Class<F> cls) {
> - if (System.getSecurityManager() == null) {
> - return doCreateMetaBeanFactory(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<F>() {
> - public F run() {
> - return doCreateMetaBeanFactory(cls);
> - }
> - });
> - }
> -
> - private <F extends MetaBeanFactory> F
> doCreateMetaBeanFactory(final Class<F> cls) {
> try {
> Constructor<F> c =
> ConstructorUtils.getMatchingAccessibleConstructor(cls,
> ApacheFactoryContext.this.getClass());
> if (c != null) {
> @@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
>
> private Class<?> loadClass(final String className) {
> try {
> - return Class.forName(className, true,
> Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
> + return Class.forName(className, true,
> Reflection.getClassLoader(ApacheFactoryContext.class));
> } catch (ClassNotFoundException ex) {
> throw new ValidationException("Unable to load class: " +
> className, ex);
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
> Wed Oct 1 04:37:36 2014
> @@ -18,16 +18,15 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.commons.lang3.ClassUtils;
> -
> import javax.validation.Configuration;
> import javax.validation.ValidationException;
> import javax.validation.ValidatorFactory;
> import javax.validation.spi.BootstrapState;
> import javax.validation.spi.ConfigurationState;
> import javax.validation.spi.ValidationProvider;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> +
> +import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
>
> /**
> * Description: Implementation of {@link ValidationProvider} for jsr
> @@ -98,15 +97,10 @@ public class ApacheValidationProvider im
> // No privileges should be required to access the constructor,
> // because the classloader of ApacheValidationProvider will always
> // be an ancestor of the loader of validatorFactoryClass.
> - return (System.getSecurityManager() == null)
> - ? instantiateValidatorFactory(validatorFactoryClass,
> configuration) : AccessController
> - .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
> - public ValidatorFactory run() {
> - return
> instantiateValidatorFactory(validatorFactoryClass, configuration);
> - }
> - });
> + return instantiateValidatorFactory(validatorFactoryClass,
> configuration);
> }
>
> + @Privileged
> private static ValidatorFactory instantiateValidatorFactory(
> final Class<? extends ValidatorFactory>
> validatorFactoryClass, final ConfigurationState configuration) {
> try {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
> Wed Oct 1 04:37:36 2014
> @@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
> * class is presumed have a constructor that accepts a single
> * {@link ConfigurationState} argument.
> */
> - String VALIDATOR_FACTORY_CLASSNAME =
> "apache.bval.validator-factory-classname";
> + String VALIDATOR_FACTORY_CLASSNAME =
> "apache.bval.validator-factory-classname";
>
> /**
> * Specifies the names, delimited by whitespace, of
> @@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
> * <li>default (no-args) constructor</li>
> * </ol>
> */
> - String METABEAN_FACTORY_CLASSNAMES =
> "apache.bval.metabean-factory-classnames";
> + String METABEAN_FACTORY_CLASSNAMES =
> "apache.bval.metabean-factory-classnames";
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
> Wed Oct 1 04:37:36 2014
> @@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.ConstraintValidatorFactory;
> import javax.validation.MessageInterpolator;
> @@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
> import javax.validation.Validator;
> import javax.validation.ValidatorFactory;
> import javax.validation.spi.ConfigurationState;
> +
> import java.io.Closeable;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Modifier;
> @@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
> * validators.<br/>
> * This instance is not thread-safe.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ApacheValidatorFactory implements ValidatorFactory,
> Cloneable {
> private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
> private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
> ConstraintDefaults();
> @@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
>
> private <T> T newInstance(final Class<T> cls) {
> try {
> - return Reflection.INSTANCE.newInstance(cls);
> + return Reflection.newInstance(cls);
> } catch (final RuntimeException e) {
> throw new ValidationException(e.getCause());
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
> Wed Oct 1 04:37:36 2014
> @@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
> import org.apache.bval.util.AccessStrategy;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintDeclarationException;
> @@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
> import javax.validation.metadata.ParameterDescriptor;
> import javax.validation.metadata.PropertyDescriptor;
> import javax.validation.metadata.ReturnValueDescriptor;
> +
> import java.beans.Introspector;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.AccessibleObject;
> @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
> /**
> * Description: Implements {@link BeanDescriptor}.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class BeanDescriptorImpl extends ElementDescriptorImpl
> implements BeanDescriptor {
> private static final CopyOnWriteArraySet<ConstraintValidation<?>>
> NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
> private static final Validation[] EMPTY_VALIDATION = new
> Validation[0];
> @@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
> Class<?> current = prop.getParentMetaBean().getBeanClass();
> while (current != null && current != Object.class &&
> (!methodFound || !fieldFound)) {
> if (!fieldFound) {
> - final Field field =
> Reflection.INSTANCE.getDeclaredField(current, prop.getName());
> + final Field field =
> Reflection.getDeclaredField(current, prop.getName());
> if (field != null) {
> processConvertGroup(edesc, field);
> fieldFound = true;
> @@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
>
> if (!methodFound) {
> final String name =
> Character.toUpperCase(prop.getName().charAt(0)) +
> prop.getName().substring(1);
> - Method m =
> Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
> + Method m = Reflection.getDeclaredMethod(current, "get" +
> name);
> if (m != null) {
> processConvertGroup(edesc, m);
> methodFound = true;
> } else {
> - m =
> Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
> + m = Reflection.getDeclaredMethod(current, "is" +
> name);
> if (m != null) {
> processConvertGroup(edesc, m);
> methodFound = true;
> @@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
> }
>
> private void buildConstructorConstraints() throws
> InvocationTargetException, IllegalAccessException {
> - for (final Constructor<?> cons :
> Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
> {
> + for (final Constructor<?> cons :
> Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
> final ConstructorDescriptorImpl consDesc = new
> ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
>
> contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
> consDesc);
>
> @@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
> final List<Class<?>> classHierarchy =
> ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
> current);
> classHierarchy.remove(current);
>
> - for (final Method method :
> Reflection.INSTANCE.getDeclaredMethods(current)) {
> + for (final Method method :
> Reflection.getDeclaredMethods(current)) {
> if (Modifier.isStatic(method.getModifiers()) ||
> method.isSynthetic()) {
> continue;
> }
> @@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
>
> final Collection<Method> parents = new
> ArrayList<Method>();
> for (final Class<?> clazz : classHierarchy) {
> - final Method overriden =
> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> - if (overriden != null) {
> - parents.add(overriden);
> - processMethod(overriden, methodDesc);
> + final Method overridden =
> Reflection.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> + if (overridden != null) {
> + parents.add(overridden);
> + processMethod(overridden, methodDesc);
> }
> }
>
> @@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
> final Class<?>[] interfaces =
> method.getDeclaringClass().getInterfaces();
> final Collection<Method> itfWithThisMethod = new
> ArrayList<Method>();
> for (final Class<?> i : interfaces) {
> - final Method m =
> Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
> method.getParameterTypes());
> + final Method m =
> Reflection.getDeclaredMethod(i, method.getName(),
> method.getParameterTypes());
> if (m != null) {
> itfWithThisMethod.add(m);
> }
> @@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
> returnValid++;
> }
> for (final Class<?> clazz : classHierarchy) {
> - final Method overriden =
> Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> - if (overriden != null) {
> - if (overriden.getAnnotation(Valid.class) !=
> null) {
> + final Method overridden =
> Reflection.getDeclaredMethod(clazz, method.getName(),
> method.getParameterTypes());
> + if (overridden != null) {
> + if (overridden.getAnnotation(Valid.class)
> != null) {
> returnValid++;
> }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
> Wed Oct 1 04:37:36 2014
> @@ -18,6 +18,33 @@
> */
> package org.apache.bval.jsr;
>
> +import java.lang.reflect.Constructor;
> +import java.lang.reflect.Member;
> +import java.lang.reflect.Method;
> +import java.lang.reflect.Modifier;
> +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 javax.validation.ConstraintDeclarationException;
> +import javax.validation.ConstraintDefinitionException;
> +import javax.validation.ConstraintTarget;
> +import javax.validation.ConstraintViolation;
> +import javax.validation.ElementKind;
> +import javax.validation.ValidationException;
> +import javax.validation.executable.ExecutableValidator;
> +import javax.validation.groups.Default;
> +import javax.validation.metadata.BeanDescriptor;
> +import javax.validation.metadata.ConstraintDescriptor;
> +import javax.validation.metadata.ElementDescriptor;
> +import javax.validation.metadata.ParameterDescriptor;
> +import javax.validation.metadata.PropertyDescriptor;
> +
> import org.apache.bval.DynamicMetaBean;
> import org.apache.bval.MetaBeanFinder;
> import org.apache.bval.jsr.groups.Group;
> @@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
> import org.apache.commons.lang3.ClassUtils;
> import org.apache.commons.lang3.ObjectUtils;
> import org.apache.commons.lang3.reflect.TypeUtils;
> -
> -import javax.validation.ConstraintDeclarationException;
> -import javax.validation.ConstraintDefinitionException;
> -import javax.validation.ConstraintTarget;
> -import javax.validation.ConstraintViolation;
> -import javax.validation.ElementKind;
> -import javax.validation.ValidationException;
> -import javax.validation.executable.ExecutableValidator;
> -import javax.validation.groups.Default;
> -import javax.validation.metadata.BeanDescriptor;
> -import javax.validation.metadata.ConstraintDescriptor;
> -import javax.validation.metadata.ElementDescriptor;
> -import javax.validation.metadata.ParameterDescriptor;
> -import javax.validation.metadata.PropertyDescriptor;
> -import java.lang.reflect.Constructor;
> -import java.lang.reflect.Member;
> -import java.lang.reflect.Method;
> -import java.lang.reflect.Modifier;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -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 org.apache.commons.weaver.privilizer.Privileged;
>
> // TODO: centralize treatMapsLikeBeans
>
> @@ -312,18 +312,8 @@ public class ClassValidator implements C
> return this;
> }
>
> + @Privileged
> private <T> T newInstance(final Class<T> cls) {
> - if (System.getSecurityManager() == null) {
> - return doNewInstance(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
> - public T run() {
> - return doNewInstance(cls);
> - }
> - });
> - }
> -
> - private <T> T doNewInstance(final Class<T> cls) {
> try {
> Constructor<T> cons =
> cls.getConstructor(ApacheFactoryContext.class);
> if (!cons.isAccessible()) {
> @@ -399,6 +389,7 @@ public class ClassValidator implements C
>
> // For each owner in the hierarchy
> for (final Class<?> owner : classHierarchy) {
> +
> context.setCurrentOwner(owner);
>
> int numViolations = result.violationsSize();
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
> Wed Oct 1 04:37:36 2014
> @@ -18,11 +18,16 @@
> */
> package org.apache.bval.jsr;
>
> -import org.apache.bval.cdi.BValExtension;
> -import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
> -import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
> -import org.apache.bval.jsr.util.IOs;
> -import org.apache.bval.jsr.xml.ValidationParser;
> +import java.io.Closeable;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.util.Collection;
> +import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.Set;
> +import java.util.concurrent.CopyOnWriteArrayList;
>
> import javax.validation.BootstrapConfiguration;
> import javax.validation.ConstraintValidatorFactory;
> @@ -36,18 +41,13 @@ import javax.validation.executable.Execu
> import javax.validation.spi.BootstrapState;
> import javax.validation.spi.ConfigurationState;
> import javax.validation.spi.ValidationProvider;
> -import java.io.Closeable;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -import java.util.Collection;
> -import java.util.HashMap;
> -import java.util.HashSet;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.Set;
> -import java.util.concurrent.CopyOnWriteArrayList;
> +
> +import org.apache.bval.cdi.BValExtension;
> +import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
> +import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
> +import org.apache.bval.jsr.util.IOs;
> +import org.apache.bval.jsr.xml.ValidationParser;
> +import org.apache.commons.weaver.privilizer.Privileged;
>
> /**
> * Description: used to configure apache-validation for jsr.
> @@ -98,7 +98,7 @@ public class ConfigurationImpl implement
>
> protected Collection<ExecutableType> executableValidation;
>
> - private Collection<BValExtension.Releasable> releasables = new
> CopyOnWriteArrayList<BValExtension.Releasable>();
> + private Collection<BValExtension.Releasable<?>> releasables = new
> CopyOnWriteArrayList<BValExtension.Releasable<?>>();
>
> private boolean beforeCdi = false;
>
> @@ -305,27 +305,18 @@ public class ConfigurationImpl implement
> * @throws ValidationException if the ValidatorFactory cannot be built
> */
> public ValidatorFactory buildValidatorFactory() {
> - if (System.getSecurityManager() == null) {
> - return doPrivBuildValidatorFactory(this);
> - }
> - return AccessController.doPrivileged(new
> PrivilegedAction<ValidatorFactory>() {
> - public ValidatorFactory run() {
> - return
> doPrivBuildValidatorFactory(ConfigurationImpl.this);
> - }
> - });
> + return doBuildValidatorFactory();
> }
>
> - public ValidatorFactory doPrivBuildValidatorFactory(final
> ConfigurationImpl impl) {
> + @Privileged
> + private ValidatorFactory doBuildValidatorFactory() {
> prepare();
> parser.ensureValidatorFactoryCanBeBuilt();
> - if (provider != null) {
> - return provider.buildValidatorFactory(impl);
> - } else {
> - return findProvider().buildValidatorFactory(impl);
> - }
> + final ValidationProvider<?> useProvider = provider == null ?
> findProvider() : provider;
> + return useProvider.buildValidatorFactory(this);
> }
>
> - public ConfigurationImpl prepare() {
> + private ConfigurationImpl prepare() {
> if (prepared) {
> return this;
> }
> @@ -466,38 +457,19 @@ public class ConfigurationImpl implement
> };
> }
>
> + @Privileged
> private <T> T newInstance(final Class<T> cls) {
> - if (System.getSecurityManager() == null) {
> - return createInstance(cls);
> - }
> - return AccessController.doPrivileged(new PrivilegedAction<T>() {
> - public T run() {
> - return createInstance(cls);
> - }
> - });
> - }
> -
> - private <T> T createInstance(final Class<T> cls) {
> try {
> final BValExtension.Releasable<T> releasable =
> BValExtension.inject(cls);
> releasables.add(releasable);
> return releasable.getInstance();
> } catch (final Exception e) {
> - try {
> - return cls.newInstance();
> - } catch (final InstantiationException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - } catch (final IllegalAccessException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - }
> } catch (final NoClassDefFoundError error) {
> - try {
> - return cls.newInstance();
> - } catch (final InstantiationException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - } catch (final IllegalAccessException e1) {
> - throw new ValidationException(e1.getMessage(), e1);
> - }
> + }
> + try {
> + return cls.newInstance();
> + } catch (final Exception e) {
> + throw new ValidationException(e.getMessage(), e);
> }
> }
>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
> Wed Oct 1 04:37:36 2014
> @@ -18,15 +18,17 @@ package org.apache.bval.jsr;
>
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.reflect.TypeUtils;
> +import org.apache.commons.weaver.privilizer.Privileged;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Constraint;
> import javax.validation.ConstraintTarget;
> import javax.validation.Payload;
> +
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Method;
> import java.lang.reflect.Type;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.Map;
> import java.util.concurrent.ConcurrentHashMap;
> import java.util.concurrent.ConcurrentMap;
> @@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
> /**
> * "message"
> */
> - MESSAGE(false, "message"),
> + MESSAGE("message"),
>
> /**
> * "groups"
> */
> - GROUPS(false, "groups"),
> + GROUPS("groups"),
>
> /**
> * "payload"
> */
> - PAYLOAD(false, "payload"),
> + PAYLOAD("payload"),
>
> /**
> * "validationAppliesTo"
> */
> - VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
> + VALIDATION_APPLIES_TO("validationAppliesTo"),
>
> /**
> * "value" for multi-valued constraints
> */
> - VALUE(true, "value");
> + VALUE("value");
>
> @SuppressWarnings("unused")
> private static class Types {
> @@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
> }
>
> private final Type type;
> - private final boolean permitNullDefaultValue;
> private final String attributeName;
>
> - private ConstraintAnnotationAttributes(final boolean
> permitNullDefaultValue, final String name) {
> - this.permitNullDefaultValue = permitNullDefaultValue;
> + private ConstraintAnnotationAttributes(final String name) {
> this.attributeName = name;
> try {
> this.type =
> Types.class.getDeclaredField(getAttributeName()).getGenericType();
> @@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
>
> public <C extends Annotation> Worker<C> analyze(final Class<C> clazz)
> {
> if (clazz.getName().startsWith("javax.validation.constraint."))
> { // cache only APIs classes to avoid memory leaks
> + @SuppressWarnings("unchecked")
> Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
> if (w == null) {
> w = new Worker<C>(clazz);
> @@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
> throw new RuntimeException("Impossible normally");
> }
> }
> +
> + @Privilizing(@CallTo(Reflection.class))
> public class Worker<C extends Annotation> {
>
> public final Method method;
> @@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
> if (found != null) {
> return found;
> }
> - final Method m =
> Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
> + final Method m =
> Reflection.getPublicMethod(constraintType, attributeName);
> if (m == null) {
> cache.putIfAbsent(attributeName, NULL_METHOD);
> return null;
> @@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
> return method != null && method != NULL_METHOD;
> }
>
> - public Object read(final Annotation constraint) {
> - if (System.getSecurityManager() == null) {
> - return doInvoke(constraint);
> - }
> - return AccessController.doPrivileged(new
> PrivilegedAction<Object>() {
> - public Object run() {
> - return doInvoke(constraint);
> - }
> - });
> + public <T> T read(final Annotation constraint) {
> + @SuppressWarnings("unchecked")
> + final T result = (T) doInvoke(constraint);
> + return result;
> }
>
> + @Privileged
> private Object doInvoke(final Annotation constraint) {
> try {
> return method.invoke(constraint);
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
> Wed Oct 1 04:37:36 2014
> @@ -18,12 +18,9 @@
> */
> package org.apache.bval.jsr;
>
> -import javax.validation.ConstraintValidator;
> import java.io.IOException;
> import java.io.InputStream;
> import java.lang.annotation.Annotation;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.HashMap;
> import java.util.LinkedList;
> import java.util.Map;
> @@ -32,10 +29,17 @@ import java.util.StringTokenizer;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> +import javax.validation.ConstraintValidator;
> +
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> /**
> * Description: Provides access to the default constraints/validator
> implementation classes built into the framework.
> * These are configured in DefaultConstraints.properties.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class ConstraintDefaults {
> private static final Logger log =
> Logger.getLogger(ConstraintDefaults.class.getName());
> private static final String DEFAULT_CONSTRAINTS =
> @@ -101,31 +105,11 @@ public class ConstraintDefaults {
> while (tokens.hasMoreTokens()) {
> final String eachClassName = tokens.nextToken();
>
> - Class<?> constraintValidatorClass;
> - if (System.getSecurityManager() == null) {
> - try {
> - constraintValidatorClass =
> Class.forName(eachClassName, true, classloader);
> - } catch (final ClassNotFoundException e) {
> - log.log(Level.SEVERE, String.format("Cannot
> find class %s", eachClassName), e);
> - constraintValidatorClass = null;
> - }
> - } else {
> - constraintValidatorClass =
> AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
> - public Class<?> run() {
> - try {
> - return Class.forName(eachClassName,
> true, classloader);
> - } catch (final ClassNotFoundException e) {
> - log.log(Level.SEVERE,
> String.format("Cannot find class %s", eachClassName), e);
> - return null;
> - }
> - }
> - });
> - }
> -
> - if (constraintValidatorClass != null) {
> - classes.add(constraintValidatorClass);
> + try {
> + classes.add(Reflection.getClass(classloader,
> eachClassName));
> + } catch (Exception e) {
> + log.log(Level.SEVERE, String.format("Cannot find
> class %s", eachClassName), e);
> }
> -
> }
>
> loadedConstraints.put((String) entry.getKey(),
> classes.toArray(new Class[classes.size()]));
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
> Wed Oct 1 04:37:36 2014
> @@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
> }
>
> private <A extends Annotation, T> ConstraintValidator<A, ? super
> T> getConstraintValidator(A annotation,
> -
> Class<? extends ConstraintValidator<A, ?>>[]
> constraintClasses, Class<?> owner, AccessStrategy access) {
> + Class<? extends ConstraintValidator<A, ?>>[]
> constraintClasses, Class<?> owner, AccessStrategy access) {
> if (constraintClasses != null && constraintClasses.length > 0) {
> Type type = determineTargetedType(owner, access);
>
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
> Wed Oct 1 04:37:36 2014
> @@ -19,8 +19,11 @@ package org.apache.bval.jsr;
> import org.apache.bval.el.MessageEvaluator;
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ArrayUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.MessageInterpolator;
> +
> import java.util.Locale;
> import java.util.Map;
> import java.util.MissingResourceException;
> @@ -37,6 +40,7 @@ import java.util.regex.Pattern;
> * into human-readable messages. It uses ResourceBundles to find the
> messages.
> * This class is threadsafe.<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultMessageInterpolator implements MessageInterpolator {
> private static final Logger log =
> Logger.getLogger(DefaultMessageInterpolator.class.getName());
> private static final boolean LOG_FINEST =
> log.isLoggable(Level.FINEST);
> @@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
> */
> private ResourceBundle getFileBasedResourceBundle(Locale locale) {
> ResourceBundle rb = null;
> - final ClassLoader classLoader =
> Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
> + final ClassLoader classLoader =
> Reflection.getClassLoader(DefaultMessageInterpolator.class);
> if (classLoader != null) {
> rb = loadBundle(classLoader, locale,
> USER_VALIDATION_MESSAGES + " not found by thread
> local classloader");
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
> Wed Oct 1 04:37:36 2014
> @@ -17,19 +17,23 @@
> package org.apache.bval.jsr;
>
>
> -import javax.validation.ValidationException;
> -import javax.validation.ValidationProviderResolver;
> -import javax.validation.spi.ValidationProvider;
> import java.io.BufferedReader;
> import java.io.IOException;
> import java.io.InputStreamReader;
> import java.net.URL;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> import java.util.ArrayList;
> import java.util.Enumeration;
> import java.util.List;
>
> +import javax.validation.ValidationException;
> +import javax.validation.ValidationProviderResolver;
> +import javax.validation.spi.ValidationProvider;
> +
> +import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
> +
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultValidationProviderResolver implements
> ValidationProviderResolver {
>
> //TODO - Spec recommends caching per classloader
> @@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
> // find all service provider cfgs
> Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
> while (cfgs.hasMoreElements()) {
> - URL url = cfgs.nextElement();
> + final URL url = cfgs.nextElement();
> BufferedReader br = null;
> try {
> br = new BufferedReader(new
> InputStreamReader(url.openStream()), 256);
> @@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
> if (!line.startsWith("#")) {
> try {
> // try loading the specified class
> - final Class<?> provider =
> cl.loadClass(line);
> + @SuppressWarnings("rawtypes")
> + final Class<? extends
> ValidationProvider> providerType =
> +
> cl.loadClass(line).asSubclass(ValidationProvider.class);
> // create an instance to return
> - final ValidationProvider<?> vp;
> - if (System.getSecurityManager() == null) {
> - try {
> - vp = (ValidationProvider<?>)
> provider.newInstance();
> - } catch (final Exception ex) {
> - throw new
> ValidationException("Cannot instantiate : " + provider, ex);
> - }
> - } else {
> - vp =
> AccessController.doPrivileged(new
> PrivilegedAction<ValidationProvider<?>>() {
> - public ValidationProvider<?>
> run() {
> - try {
> - return
> (ValidationProvider<?>) provider.newInstance();
> - } catch (final Exception ex) {
> - throw new
> ValidationException("Cannot instantiate : " + provider, ex);
> - }
> - }
> - });
> - }
> - providers.add(vp);
> +
>
> providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
>
> } catch (ClassNotFoundException e) {
> throw new ValidationException("Failed
> to load provider " +
> @@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
> }
> line = br.readLine();
> }
> - br.close();
> } catch (IOException e) {
> throw new ValidationException("Error trying to
> read " + url, e);
> } finally {
> - if (br != null)
> + if (br != null) {
> br.close();
> + }
> }
> }
> } catch (IOException e) {
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
> Wed Oct 1 04:37:36 2014
> @@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
> import org.apache.bval.util.FieldAccess;
> import org.apache.bval.util.MethodAccess;
> import org.apache.bval.util.reflection.Reflection;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.ConstraintDeclarationException;
> import javax.validation.GroupDefinitionException;
> import javax.validation.GroupSequence;
> import javax.validation.groups.ConvertGroup;
> import javax.validation.groups.Default;
> +
> import java.io.Serializable;
> import java.lang.annotation.Annotation;
> import java.lang.annotation.ElementType;
> @@ -55,6 +58,7 @@ import java.util.logging.Logger;
> * Description: process the class annotations for JSR303 constraint
> validations to build the MetaBean with information
> * from annotations and JSR303 constraint mappings (defined in xml)<br/>
> */
> +@Privilizing(@CallTo(Reflection.class))
> public class JsrMetaBeanFactory implements MetaBeanFactory {
> /** Shared log instance */
> // of dubious utility as it's static :/
> @@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
> processGroupSequence(beanClass, metabean);
>
> // process class, superclasses and interfaces
> - List<Class<?>> classSequence = new ArrayList<Class<?>>();
> - ClassHelper.fillFullClassHierarchyAsList(classSequence,
> beanClass);
> + final List<Class<?>> classSequence =
> + ClassHelper.fillFullClassHierarchyAsList(new
> ArrayList<Class<?>>(), beanClass);
>
> // start with superclasses and go down the hierarchy so that
> // the child classes are processed last to have the chance to
> @@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
>
> final Collection<String> missingValid = new ArrayList<String>();
>
> - final Field[] fields =
> Reflection.INSTANCE.getDeclaredFields(beanClass);
> + final Field[] fields = Reflection.getDeclaredFields(beanClass);
> for (final Field field : fields) {
> MetaProperty metaProperty =
> metabean.getProperty(field.getName());
> // create a property for those fields for which there is not
> yet a
> @@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
> }
> }
> }
> - final Method[] methods =
> Reflection.INSTANCE.getDeclaredMethods(beanClass);
> + final Method[] methods = Reflection.getDeclaredMethods(beanClass);
> for (final Method method : methods) {
> if (method.isSynthetic() || method.isBridge()) {
> continue;
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
> Wed Oct 1 04:37:36 2014
> @@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
>
> import org.apache.bval.util.reflection.Reflection;
> import org.apache.commons.lang3.ClassUtils;
> +import org.apache.commons.weaver.privilizer.Privilizing;
> +import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
>
> import javax.validation.Path;
> import javax.validation.TraversableResolver;
> +
> import java.lang.annotation.ElementType;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> /** @see javax.validation.TraversableResolver */
> +@Privilizing(@CallTo(Reflection.class))
> public class DefaultTraversableResolver implements
> TraversableResolver, CachingRelevant {
> private static final Logger log =
> Logger.getLogger(DefaultTraversableResolver.class.getName());
> private static final boolean LOG_FINEST =
> log.isLoggable(Level.FINEST);
> @@ -71,9 +75,9 @@ public class DefaultTraversableResolver
> /** Tries to load detect and load JPA. */
> @SuppressWarnings("unchecked")
> private void initJpa() {
> - final ClassLoader classLoader = getClassLoader();
> + final ClassLoader classLoader =
> Reflection.getClassLoader(DefaultTraversableResolver.class);
> try {
> - Reflection.INSTANCE.getClass(classLoader,
> PERSISTENCE_UTIL_CLASSNAME);
> + Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
> if (LOG_FINEST) {
> log.log(Level.FINEST, String.format("Found %s on
> classpath.", PERSISTENCE_UTIL_CLASSNAME));
> }
> @@ -101,9 +105,4 @@ public class DefaultTraversableResolver
> public boolean needsCaching() {
> return jpaTR != null &&
> CachingTraversableResolver.needsCaching(jpaTR);
> }
> -
> - private static ClassLoader getClassLoader()
> - {
> - return
> Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
> - }
> }
>
> Modified:
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> URL:
> http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
>
> ==============================================================================
> ---
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> (original)
> +++
> bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
> Wed Oct 1 04:37:36 2014
> @@ -43,6 +43,7 @@ public class ClassHelper {
> * The current list of classes in the hierarchy.
> * @param clazz
> */
> + @Deprecated
> static public List<Class<?>>
> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
> clazz) {
> if (clazz == null || clazz == Object.class || clazz ==
> Serializable.class || clazz == Cloneable.class) {
> return allClasses;
> @@ -58,26 +59,4 @@ public class ClassHelper {
> return allClasses;
> }
>
> - /**
> - * @deprecated Will be removed for security reasons.
> - *
> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
> - */
> - @Deprecated
> - public static Class<?> getClass(String className) throws
> ClassNotFoundException {
> - return getClass(className, true);
> - }
> -
> - /**
> - * @deprecated Will be removed for security reasons.
> - *
> - * Perform ClassUtils.getClass functions with Java 2 Security enabled.
> - */
> - @Deprecated
> - public static Class<?> getClass(String className, boolean
> initialize) throws ClassNotFoundException {
> - ClassLoader loader =
> Thread.currentThread().getContextClassLoader();
> - if (loader == null)
> - loader = ClassHelper.class.getClassLoader();
> - return ClassUtils.getClass(loader, className, initialize);
> - }
> }
>
--
Daniel Cunha (soro) <http://www.cejug.net>
Blog: http://www.danielsoro.com.br
Twitter: https://twitter.com/dvlc_
GitHub: https://github.com/danielsoro
LinkedIn: http://www.linkedin.com/in/danielvlcunha
Fwd: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi Matt,
I have 2 questions:
1) surely obvious but I dont get why you re-set the accessible (if
(mustSet)). While we need it accessible we can keep it set to true no?
2) more important: tck are broken now Tests run: 758, Failures: 13,
Errors: 0, Skipped: 0 (mvn clean install -Ptck11) :(
Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau
---------- Forwarded message ----------
From: <mb...@apache.org>
Date: 2014-10-01 6:37 GMT+02:00
Subject: svn commit: r1628598 [1/2] - in /bval/branches/bval-11: ./
bval-core/ 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-core/src/main/java/org/apache/bval/util/ref...
To: commits@bval.apache.org
Author: mbenson
Date: Wed Oct 1 04:37:36 2014
New Revision: 1628598
URL: http://svn.apache.org/r1628598
Log:
use commons weaver/privilizer
Removed:
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/DefaultReflection.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/SecurityManagerReflection.java
Modified:
bval/branches/bval-11/bval-core/pom.xml
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
bval/branches/bval-11/bval-jsr/ (props changed)
bval/branches/bval-11/bval-jsr/pom.xml
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxyBuilder.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
bval/branches/bval-11/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
bval/branches/bval-11/bval-jsr/src/test/resources/java.policy
bval/branches/bval-11/bval-tck11/ (props changed)
bval/branches/bval-11/bval-xstream/pom.xml
bval/branches/bval-11/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
bval/branches/bval-11/pom.xml
Modified: bval/branches/bval-11/bval-core/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/pom.xml (original)
+++ bval/branches/bval-11/bval-core/pom.xml Wed Oct 1 04:37:36 2014
@@ -46,6 +46,10 @@
<artifactId>commons-beanutils-core</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-privilizer-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
@@ -118,6 +122,10 @@ build.timestamp=${timestamp}
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-maven-plugin</artifactId>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/ConstructorAccess.java
Wed Oct 1 04:37:36 2014
@@ -16,13 +16,11 @@
*/
package org.apache.bval;
-import org.apache.bval.util.AccessStrategy;
-
import java.lang.annotation.ElementType;
import java.lang.reflect.Constructor;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+
+import org.apache.bval.util.AccessStrategy;
public class ConstructorAccess extends AccessStrategy {
@@ -30,18 +28,7 @@ public class ConstructorAccess extends A
public ConstructorAccess(final Constructor<?> constructor) {
this.constructor = constructor;
- if (!constructor.isAccessible()) {
- if (System.getSecurityManager() == null) {
- constructor.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- constructor.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(constructor);
}
@Override
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
Wed Oct 1 04:37:36 2014
@@ -17,6 +17,8 @@
package org.apache.bval.model;
import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import java.beans.Introspector;
import java.lang.reflect.Constructor;
@@ -34,6 +36,7 @@ import java.util.TreeMap;
*
* @see MetaProperty
*/
+@Privilizing(@CallTo(Reflection.class))
public class MetaBean extends FeaturesCapable implements Cloneable,
Features.Bean {
private static final long serialVersionUID = 2L;
@@ -280,7 +283,7 @@ public class MetaBean extends FeaturesCa
int i = 0;
Class<?> clazz = beanClass;
while (clazz != null && clazz != Object.class) {
- for (final Field f :
Reflection.INSTANCE.getDeclaredFields(clazz)) {
+ for (final Field f : Reflection.getDeclaredFields(clazz)) {
i++;
final String name = f.getName();
if (!fields.containsKey(name)) {
@@ -321,7 +324,7 @@ public class MetaBean extends FeaturesCa
protected MethodComparator(final Class<?> beanClass) {
Class<?> clazz = beanClass;
while (clazz != null && clazz != Object.class) {
- for (final Method m :
Reflection.INSTANCE.getDeclaredMethods(clazz)) {
+ for (final Method m : Reflection.getDeclaredMethods(clazz)) {
methods.put(m, Arrays.hashCode(m.getParameterTypes()));
}
clazz = clazz.getSuperclass();
@@ -345,7 +348,7 @@ public class MetaBean extends FeaturesCa
private final Map<Constructor<?>, Integer> constructors = new
HashMap<Constructor<?>, Integer>();
protected ConstructorComparator(final Class<?> beanClass) {
- for (final Constructor<?> c :
Reflection.INSTANCE.getDeclaredConstructors(beanClass)) {
+ for (final Constructor<?> c :
Reflection.getDeclaredConstructors(beanClass)) {
constructors.put(c, Arrays.hashCode(c.getParameterTypes()));
}
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
Wed Oct 1 04:37:36 2014
@@ -17,8 +17,11 @@
package org.apache.bval.util;
import java.lang.annotation.ElementType;
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Type;
+import org.apache.commons.weaver.privilizer.Privileged;
+
/**
* Description: abstract class to encapsulate different strategies
* to get the value of a Property. This class is designed such that
@@ -55,4 +58,21 @@ public abstract class AccessStrategy {
* @return String
*/
public abstract String getPropertyName();
+
+ /**
+ * Set {@code accessibleObject} as being accessible
+ * @param accessibleObject
+ */
+ protected boolean setAccessible(AccessibleObject accessibleObject) {
+ if (accessibleObject.isAccessible()) {
+ return false;
+ }
+ doSetAccessible(accessibleObject);
+ return true;
+ }
+
+ @Privileged
+ private void doSetAccessible(AccessibleObject accessibleObject) {
+ accessibleObject.setAccessible(true);
+ }
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
Wed Oct 1 04:37:36 2014
@@ -18,18 +18,21 @@
*/
package org.apache.bval.util;
-import org.apache.bval.util.reflection.Reflection;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.StringTokenizer;
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
/**
* This class contains version information for BVal.
* It uses Ant's filter tokens to convert the template into a java
* file with current information.
*/
+@Privilizing(@CallTo(Reflection.class))
public class BValVersion {
/** Project name */
@@ -157,7 +160,7 @@ public class BValVersion {
* {@inheritDoc}
*/
public String toString() {
- StringBuilder buf = new StringBuilder(80 * 40);
+ final StringBuilder buf = new StringBuilder(80 * 40);
appendBanner(buf);
buf.append("\n");
@@ -169,8 +172,7 @@ public class BValVersion {
appendProperty("java.vendor", buf).append("\n\n");
buf.append("java.class.path:\n");
- StringTokenizer tok = new StringTokenizer(
- Reflection.INSTANCE.getProperty("java.class.path"));
+ final StringTokenizer tok = new
StringTokenizer(Reflection.getProperty("java.class.path"));
while (tok.hasMoreTokens()) {
buf.append("\t").append(tok.nextToken());
buf.append("\n");
@@ -191,7 +193,6 @@ public class BValVersion {
}
private StringBuilder appendProperty(String prop, StringBuilder buf) {
- return buf.append(prop).append(": ").append(
- Reflection.INSTANCE.getProperty(prop));
+ return buf.append(prop).append(":
").append(Reflection.getProperty(prop));
}
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
Wed Oct 1 04:37:36 2014
@@ -19,8 +19,6 @@ package org.apache.bval.util;
import java.lang.annotation.ElementType;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
/**
* Description: direct field access strategy.<br/>
@@ -35,18 +33,7 @@ public class FieldAccess extends AccessS
*/
public FieldAccess(final Field field) {
this.field = field;
- if (!field.isAccessible()) {
- if (System.getSecurityManager() == null) {
- field.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- field.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(field);
}
/**
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
Wed Oct 1 04:37:36 2014
@@ -16,6 +16,7 @@
*/
package org.apache.bval.util;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import java.lang.annotation.ElementType;
@@ -28,7 +29,7 @@ import java.util.Map;
/**
* {@link AccessStrategy} to get an indexed member of an {@link Iterable} or
* array object.
- */
+ */
public class IndexedAccess extends AccessStrategy {
private static final TypeVariable<?> ITERABLE_TYPE =
Iterable.class.getTypeParameters()[0];
@@ -45,13 +46,13 @@ public class IndexedAccess extends Acces
}
if (TypeUtils.isAssignable(containerType, Iterable.class)) {
Map<TypeVariable<?>, Type> typeArguments =
TypeUtils.getTypeArguments(containerType, Iterable.class);
- return typeArguments.containsKey(ITERABLE_TYPE) ?
typeArguments.get(ITERABLE_TYPE) : Object.class;
+ return
ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
ITERABLE_TYPE), Object.class);
}
return null;
}
- private Type containerType;
- private Integer index;
+ private final Type containerType;
+ private final Integer index;
/**
* Create a new IndexedAccessStrategy instance.
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
Wed Oct 1 04:37:36 2014
@@ -16,6 +16,7 @@
*/
package org.apache.bval.util;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import java.lang.annotation.ElementType;
@@ -43,13 +44,13 @@ public class KeyedAccess extends AccessS
public static Type getJavaElementType(Type containerType) {
if (TypeUtils.isAssignable(containerType, Map.class)) {
Map<TypeVariable<?>, Type> typeArguments =
TypeUtils.getTypeArguments(containerType, Map.class);
- return typeArguments.containsKey(MAP_TYPEVARS[1]) ?
typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
+ return
ObjectUtils.defaultIfNull(TypeUtils.unrollVariables(typeArguments,
MAP_TYPEVARS[1]), Object.class);
}
return null;
}
- private Type containerType;
- private Object key;
+ private final Type containerType;
+ private final Object key;
/**
* Create a new KeyedAccess instance.
@@ -71,7 +72,7 @@ public class KeyedAccess extends AccessS
if (instance instanceof Map<?, ?>) {
Map<?, ?> map = (Map<?, ?>) instance;
Map<TypeVariable<?>, Type> typeArguments =
TypeUtils.getTypeArguments(containerType, Map.class);
- Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
+ Type keyType = TypeUtils.unrollVariables(typeArguments,
MAP_TYPEVARS[0]);
if (key == null || keyType == null ||
TypeUtils.isInstance(key, keyType)) {
return map.get(key);
}
@@ -106,7 +107,7 @@ public class KeyedAccess extends AccessS
*/
@Override
public Type getJavaType() {
- Type result = getJavaElementType(containerType);
+ final Type result = getJavaElementType(containerType);
return result == null ? Object.class : result;
}
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
Wed Oct 1 04:37:36 2014
@@ -21,8 +21,6 @@ import java.lang.annotation.ElementType;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
/**
* Description: invoke a zero-argument method (getter)<br/>
@@ -47,18 +45,7 @@ public class MethodAccess extends Access
public MethodAccess(String propertyName, final Method method) {
this.method = method;
this.propertyName = propertyName;
- if (!method.isAccessible()) {
- if (System.getSecurityManager() == null) {
- method.setAccessible(true);
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- method.setAccessible(true);
- return null;
- }
- });
- }
- }
+ setAccessible(method);
}
/**
@@ -69,21 +56,14 @@ public class MethodAccess extends Access
* the method name id not according to the JavaBeans standard.
*/
public static String getPropertyName(Method member) {
- String name = null;
- String methodName = member.getName();
+ final String methodName = member.getName();
if (methodName.startsWith("is")) {
- name = Introspector.decapitalize(methodName.substring(2));
- } /* else if ( methodName.startsWith("has")) {
- name = Introspector.decapitalize(
methodName.substring( 3 ) );
- } */
- // setter annotation is NOT supported in the spec
- /* else if (method.getName().startsWith("set") &&
method.getParameterTypes().length == 1) {
- propName = Introspector.decapitalize(method.getName().substring(3));
- } */
- else if (methodName.startsWith("get")) {
- name = Introspector.decapitalize(methodName.substring(3));
+ return Introspector.decapitalize(methodName.substring(2));
+ }
+ if (methodName.startsWith("get")) {
+ return Introspector.decapitalize(methodName.substring(3));
}
- return name;
+ return null;
}
/**
Modified: bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
(original)
+++ bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
Wed Oct 1 04:37:36 2014
@@ -21,44 +21,122 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
-public interface Reflection {
- static final Reflection INSTANCE = ReflectionFactory.newInstance();
+import org.apache.commons.lang3.ClassUtils;
- Class<?> getClass(final ClassLoader classLoader, final String
className) throws Exception;
-
- Object getAnnotationValue(final Annotation annotation, final
String name) throws IllegalAccessException, InvocationTargetException;
+/**
+ * Security-agnostic "blueprint" class for reflection-related operations.
+ *
+ * @version $Rev$ $Date$
+ */
+public class Reflection {
+
+ private static void setAccessibility(final Field field) {
+ // FIXME 2011-03-27 jw:
+ // - Why not simply call field.setAccessible(true)?
+ // - Fields can not be abstract.
+ if (!Modifier.isPublic(field.getModifiers())
+ || (Modifier.isPublic(field.getModifiers()) &&
Modifier.isAbstract(field.getModifiers()))) {
+ field.setAccessible(true);
+ }
+ }
- ClassLoader getClassLoader(final Class<?> clazz);
+ public static Class<?> getClass(final ClassLoader classLoader,
final String className) throws Exception {
+ return ClassUtils.getClass(classLoader, className, true);
+ }
- String getProperty(final String name);
+ public static Object getAnnotationValue(final Annotation
annotation, final String name)
+ throws IllegalAccessException, InvocationTargetException {
+ Method valueMethod;
+ try {
+ valueMethod = annotation.annotationType().getDeclaredMethod(name);
+ } catch (final NoSuchMethodException ex) {
+ // do nothing
+ valueMethod = null;
+ }
+ if (null != valueMethod) {
+ if (!valueMethod.isAccessible()) {
+ valueMethod.setAccessible(true);
+ }
+ return valueMethod.invoke(annotation);
+ }
+ return null;
+ }
- Field getDeclaredField(final Class<?> clazz, final String fieldName);
+ public static ClassLoader getClassLoader(final Class<?> clazz) {
+ final ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if (cl != null) {
+ return cl;
+ }
+ return clazz.getClassLoader();
+ }
- Field[] getDeclaredFields(final Class<?> clazz);
+ public static String getProperty(final String name) {
+ return System.getProperty(name);
+ }
- Constructor<?> getDeclaredConstructor(final Class<?> clazz, final
Class<?>... parameters);
+ public static Field getDeclaredField(final Class<?> clazz, final
String fieldName) {
+ final Field f;
+ try {
+ f = clazz.getDeclaredField(fieldName);
+ } catch (final NoSuchFieldException e) {
+ return null;
+ }
+ setAccessibility(f);
+ return f;
+ }
- Method getDeclaredMethod(final Class<?> clazz, final String name,
final Class<?>... parameters);
+ public static Field[] getDeclaredFields(final Class<?> clazz) {
+ final Field[] fields = clazz.getDeclaredFields();
+ if (fields.length > 0) {
+ for (final Field f : fields) {
+ if (!f.isAccessible()) {
+ f.setAccessible(true);
+ }
+ }
+ }
+ return fields;
+ }
- Method[] getDeclaredMethods(final Class<?> clazz);
+ public static Constructor<?> getDeclaredConstructor(final
Class<?> clazz, final Class<?>... parameters) {
+ try {
+ return clazz.getDeclaredConstructor(parameters);
+ } catch (final NoSuchMethodException e) {
+ return null;
+ }
+ }
- Constructor<?>[] getDeclaredConstructors(final Class<?> clazz);
+ public static Method getDeclaredMethod(final Class<?> clazz,
final String name, final Class<?>... parameters) {
+ try {
+ return clazz.getDeclaredMethod(name, parameters);
+ } catch (final NoSuchMethodException e) {
+ return null;
+ }
+ }
- Method getPublicMethod(final Class<?> clazz, final String methodName);
+ public static Method[] getDeclaredMethods(final Class<?> clazz) {
+ return clazz.getDeclaredMethods();
+ }
- <T> T newInstance(final Class<T> cls);
+ public static Constructor<?>[] getDeclaredConstructors(final
Class<?> clazz) {
+ return clazz.getDeclaredConstructors();
+ }
- public static class ReflectionFactory {
- public static Reflection newInstance() {
- if (System.getSecurityManager() != null) {
- return new SecurityManagerReflection();
- }
- return new DefaultReflection();
+ public static Method getPublicMethod(final Class<?> clazz, final
String methodName) {
+ try {
+ return clazz.getMethod(methodName);
+ } catch (final NoSuchMethodException e) {
+ return null;
}
+ }
- private ReflectionFactory() {
- // no-op
+ public static <T> T newInstance(final Class<T> cls) {
+ try {
+ return cls.newInstance();
+ } catch (final Exception ex) {
+ throw new RuntimeException("Cannot instantiate : " + cls, ex);
}
}
+
}
Propchange: bval/branches/bval-11/bval-jsr/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Oct 1 04:37:36 2014
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target
Propchange: bval/branches/bval-11/bval-jsr/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Oct 1 04:37:36 2014
@@ -0,0 +1,2 @@
+/bval/trunk/bval-jsr303:1598345
+/incubator/bval/sandbox/lang3-work/bval-jsr:992137-1166425
Modified: bval/branches/bval-11/bval-jsr/pom.xml
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/pom.xml?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/pom.xml (original)
+++ bval/branches/bval-11/bval-jsr/pom.xml Wed Oct 1 04:37:36 2014
@@ -79,13 +79,73 @@
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-testResources</id>
+ <phase />
+ <goals>
+ <goal>testResources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter-testResources</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <mkdir
dir="${project.build.testOutputDirectory}" />
+ <condition property="slash"
value="/" else="">
+ <os family="windows" />
+ </condition>
+ <copy
todir="${project.build.testOutputDirectory}" overwrite="true">
+ <fileset
dir="${project.basedir}/src/test/resources" excludes="java.policy" />
+ </copy>
+ <copy
todir="${project.build.testOutputDirectory}" overwrite="true">
+ <fileset
file="${project.basedir}/src/test/resources/java.policy" />
+ <filterchain>
+ <expandproperties />
+ <!-- append extra
slash on windows only -->
+ <replacestring
from="file://" to="file://${slash}" />
+ <replacestring
from="${file.separator}" to="/" />
+ <!-- preserve
system-specific file separator -->
+ <expandproperties>
+ <propertyset>
+ <propertyref
prefix="project." />
+ <globmapper
from="*" to="preserve.*" />
+ </propertyset>
+ </expandproperties>
+ </filterchain>
+ </copy>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.9.3</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
</includes>
- <argLine>-Djava.security.manager
-Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
+ <argLine>-Djava.security.manager
-Djava.security.policy=${project.build.testOutputDirectory}/java.policy</argLine>
</configuration>
</plugin>
</plugins>
@@ -103,6 +163,10 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-privilizer-api</artifactId>
+ </dependency>
<!-- optional dependencies -->
<dependency>
<groupId>org.apache.bval</groupId>
@@ -235,6 +299,10 @@
</includes>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-weaver-maven-plugin</artifactId>
+ </plugin>
</plugins>
</build>
</project>
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationConstraintBuilder.java
Wed Oct 1 04:37:36 2014
@@ -18,27 +18,9 @@
*/
package org.apache.bval.jsr;
-import org.apache.bval.jsr.groups.GroupsComputer;
-import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintDeclarationException;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.ConstraintTarget;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.ReportAsSingleViolation;
-import javax.validation.constraintvalidation.SupportedValidationTarget;
-import javax.validation.constraintvalidation.ValidationTarget;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -50,6 +32,24 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.validation.Constraint;
+import javax.validation.ConstraintDeclarationException;
+import javax.validation.ConstraintDefinitionException;
+import javax.validation.ConstraintTarget;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.OverridesAttribute;
+import javax.validation.Payload;
+import javax.validation.ReportAsSingleViolation;
+import javax.validation.constraintvalidation.SupportedValidationTarget;
+import javax.validation.constraintvalidation.ValidationTarget;
+
+import org.apache.bval.jsr.groups.GroupsComputer;
+import org.apache.bval.jsr.xml.AnnotationProxyBuilder;
+import org.apache.bval.util.AccessStrategy;
+import org.apache.commons.lang3.reflect.TypeUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
+
/**
* Description: helper class that builds a {@link ConstraintValidation} or its
* composite constraint validations by parsing the jsr-annotations and
@@ -78,22 +78,11 @@ final class AnnotationConstraintBuilder<
}
/** build attributes, payload, groups from 'annotation' */
+ @Privileged
private void buildFromAnnotation() {
- if (constraintValidation.getAnnotation() != null) {
- if (System.getSecurityManager() == null) {
- doBuildFromAnnotations();
- } else {
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- doBuildFromAnnotations();
- return null;
- }
- });
- }
+ if (constraintValidation.getAnnotation() == null) {
+ return;
}
- }
-
- private void doBuildFromAnnotations() {
final Class<? extends Annotation> annotationType =
constraintValidation.getAnnotation().annotationType();
boolean foundPayload = false;
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/AnnotationProcessor.java
Wed Oct 1 04:37:36 2014
@@ -24,6 +24,8 @@ import org.apache.bval.model.MetaBean;
import org.apache.bval.util.AccessStrategy;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
@@ -32,6 +34,7 @@ import javax.validation.constraintvalida
import javax.validation.constraintvalidation.ValidationTarget;
import javax.validation.groups.ConvertGroup;
import javax.validation.groups.Default;
+
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.InvocationTargetException;
@@ -44,6 +47,7 @@ import java.util.Set;
* annotations, including composed constraints and the resolution of
* {@link ConstraintValidator} implementations.
*/
+@Privilizing(@CallTo(Reflection.class))
public final class AnnotationProcessor {
/** {@link ApacheFactoryContext} used */
private final ApacheFactoryContext factoryContext;
@@ -142,7 +146,8 @@ public final class AnnotationProcessor {
* annotated by @Constraint) whose value element has a return
type of an
* array of constraint annotations in a special way.
*/
- final Object result =
Reflection.INSTANCE.getAnnotationValue(annotation,
ConstraintAnnotationAttributes.VALUE.getAttributeName());
+ final Object result =
+ Reflection.getAnnotationValue(annotation,
ConstraintAnnotationAttributes.VALUE.getAttributeName());
if (result instanceof Annotation[]) {
boolean changed = false;
for (final Annotation each : (Annotation[]) result) {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheFactoryContext.java
Wed Oct 1 04:37:36 2014
@@ -18,6 +18,18 @@
*/
package org.apache.bval.jsr;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.MessageInterpolator;
+import javax.validation.ParameterNameProvider;
+import javax.validation.TraversableResolver;
+import javax.validation.ValidationException;
+import javax.validation.Validator;
+import javax.validation.ValidatorContext;
+
import org.apache.bval.IntrospectorMetaBeanFactory;
import org.apache.bval.MetaBeanBuilder;
import org.apache.bval.MetaBeanFactory;
@@ -29,24 +41,15 @@ import org.apache.bval.xml.XMLMetaBeanFa
import org.apache.bval.xml.XMLMetaBeanManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.ParameterNameProvider;
-import javax.validation.TraversableResolver;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import javax.validation.ValidatorContext;
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.commons.weaver.privilizer.Privileged;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
/**
* Description: Represents the context that is used to create
* <code>ClassValidator</code> instances.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ApacheFactoryContext implements ValidatorContext {
private final ApacheValidatorFactory factory;
private final MetaBeanFinder metaBeanFinder;
@@ -238,18 +241,8 @@ public class ApacheFactoryContext implem
return new MetaBeanManager(new
MetaBeanBuilder(builders.toArray(new
MetaBeanFactory[builders.size()])));
}
+ @Privileged
private <F extends MetaBeanFactory> F createMetaBeanFactory(final
Class<F> cls) {
- if (System.getSecurityManager() == null) {
- return doCreateMetaBeanFactory(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<F>() {
- public F run() {
- return doCreateMetaBeanFactory(cls);
- }
- });
- }
-
- private <F extends MetaBeanFactory> F
doCreateMetaBeanFactory(final Class<F> cls) {
try {
Constructor<F> c =
ConstructorUtils.getMatchingAccessibleConstructor(cls,
ApacheFactoryContext.this.getClass());
if (c != null) {
@@ -294,7 +287,7 @@ public class ApacheFactoryContext implem
private Class<?> loadClass(final String className) {
try {
- return Class.forName(className, true,
Reflection.INSTANCE.getClassLoader(ApacheFactoryContext.class));
+ return Class.forName(className, true,
Reflection.getClassLoader(ApacheFactoryContext.class));
} catch (ClassNotFoundException ex) {
throw new ValidationException("Unable to load class: " +
className, ex);
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidationProvider.java
Wed Oct 1 04:37:36 2014
@@ -18,16 +18,15 @@
*/
package org.apache.bval.jsr;
-import org.apache.commons.lang3.ClassUtils;
-
import javax.validation.Configuration;
import javax.validation.ValidationException;
import javax.validation.ValidatorFactory;
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ConfigurationState;
import javax.validation.spi.ValidationProvider;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
/**
* Description: Implementation of {@link ValidationProvider} for jsr
@@ -98,15 +97,10 @@ public class ApacheValidationProvider im
// No privileges should be required to access the constructor,
// because the classloader of ApacheValidationProvider will always
// be an ancestor of the loader of validatorFactoryClass.
- return (System.getSecurityManager() == null)
- ? instantiateValidatorFactory(validatorFactoryClass,
configuration) : AccessController
- .doPrivileged(new PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return
instantiateValidatorFactory(validatorFactoryClass, configuration);
- }
- });
+ return instantiateValidatorFactory(validatorFactoryClass,
configuration);
}
+ @Privileged
private static ValidatorFactory instantiateValidatorFactory(
final Class<? extends ValidatorFactory>
validatorFactoryClass, final ConfigurationState configuration) {
try {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorConfiguration.java
Wed Oct 1 04:37:36 2014
@@ -72,7 +72,7 @@ public interface ApacheValidatorConfigur
* class is presumed have a constructor that accepts a single
* {@link ConfigurationState} argument.
*/
- String VALIDATOR_FACTORY_CLASSNAME =
"apache.bval.validator-factory-classname";
+ String VALIDATOR_FACTORY_CLASSNAME =
"apache.bval.validator-factory-classname";
/**
* Specifies the names, delimited by whitespace, of
@@ -86,6 +86,6 @@ public interface ApacheValidatorConfigur
* <li>default (no-args) constructor</li>
* </ol>
*/
- String METABEAN_FACTORY_CLASSNAMES =
"apache.bval.metabean-factory-classnames";
+ String METABEAN_FACTORY_CLASSNAMES =
"apache.bval.metabean-factory-classnames";
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ApacheValidatorFactory.java
Wed Oct 1 04:37:36 2014
@@ -25,6 +25,8 @@ import org.apache.bval.util.AccessStrate
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.ConstraintValidatorFactory;
import javax.validation.MessageInterpolator;
@@ -35,6 +37,7 @@ import javax.validation.ValidationExcept
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.spi.ConfigurationState;
+
import java.io.Closeable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Modifier;
@@ -52,6 +55,7 @@ import java.util.concurrent.ConcurrentMa
* validators.<br/>
* This instance is not thread-safe.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ApacheValidatorFactory implements ValidatorFactory, Cloneable {
private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
private static final ConstraintDefaults DEFAULT_CONSTRAINTS = new
ConstraintDefaults();
@@ -295,7 +299,7 @@ public class ApacheValidatorFactory impl
private <T> T newInstance(final Class<T> cls) {
try {
- return Reflection.INSTANCE.newInstance(cls);
+ return Reflection.newInstance(cls);
} catch (final RuntimeException e) {
throw new ValidationException(e.getCause());
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/BeanDescriptorImpl.java
Wed Oct 1 04:37:36 2014
@@ -33,6 +33,8 @@ import org.apache.bval.model.Validation;
import org.apache.bval.util.AccessStrategy;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintDeclarationException;
@@ -49,6 +51,7 @@ import javax.validation.metadata.MethodT
import javax.validation.metadata.ParameterDescriptor;
import javax.validation.metadata.PropertyDescriptor;
import javax.validation.metadata.ReturnValueDescriptor;
+
import java.beans.Introspector;
import java.lang.annotation.Annotation;
import java.lang.reflect.AccessibleObject;
@@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteA
/**
* Description: Implements {@link BeanDescriptor}.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class BeanDescriptorImpl extends ElementDescriptorImpl
implements BeanDescriptor {
private static final CopyOnWriteArraySet<ConstraintValidation<?>>
NO_CONSTRAINTS = new CopyOnWriteArraySet<ConstraintValidation<?>>();
private static final Validation[] EMPTY_VALIDATION = new Validation[0];
@@ -120,7 +124,7 @@ public class BeanDescriptorImpl extends
Class<?> current = prop.getParentMetaBean().getBeanClass();
while (current != null && current != Object.class &&
(!methodFound || !fieldFound)) {
if (!fieldFound) {
- final Field field =
Reflection.INSTANCE.getDeclaredField(current, prop.getName());
+ final Field field =
Reflection.getDeclaredField(current, prop.getName());
if (field != null) {
processConvertGroup(edesc, field);
fieldFound = true;
@@ -129,12 +133,12 @@ public class BeanDescriptorImpl extends
if (!methodFound) {
final String name =
Character.toUpperCase(prop.getName().charAt(0)) +
prop.getName().substring(1);
- Method m =
Reflection.INSTANCE.getDeclaredMethod(current, "get" + name);
+ Method m = Reflection.getDeclaredMethod(current, "get" + name);
if (m != null) {
processConvertGroup(edesc, m);
methodFound = true;
} else {
- m =
Reflection.INSTANCE.getDeclaredMethod(current, "is" + name);
+ m = Reflection.getDeclaredMethod(current, "is" + name);
if (m != null) {
processConvertGroup(edesc, m);
methodFound = true;
@@ -359,7 +363,7 @@ public class BeanDescriptorImpl extends
}
private void buildConstructorConstraints() throws
InvocationTargetException, IllegalAccessException {
- for (final Constructor<?> cons :
Reflection.INSTANCE.getDeclaredConstructors(metaBean.getBeanClass()))
{
+ for (final Constructor<?> cons :
Reflection.getDeclaredConstructors(metaBean.getBeanClass())) {
final ConstructorDescriptorImpl consDesc = new
ConstructorDescriptorImpl(metaBean, EMPTY_VALIDATION);
contructorConstraints.put(Arrays.toString(cons.getParameterTypes()),
consDesc);
@@ -500,7 +504,7 @@ public class BeanDescriptorImpl extends
final List<Class<?>> classHierarchy =
ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(),
current);
classHierarchy.remove(current);
- for (final Method method :
Reflection.INSTANCE.getDeclaredMethods(current)) {
+ for (final Method method :
Reflection.getDeclaredMethods(current)) {
if (Modifier.isStatic(method.getModifiers()) ||
method.isSynthetic()) {
continue;
}
@@ -518,10 +522,10 @@ public class BeanDescriptorImpl extends
final Collection<Method> parents = new ArrayList<Method>();
for (final Class<?> clazz : classHierarchy) {
- final Method overriden =
Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
method.getParameterTypes());
- if (overriden != null) {
- parents.add(overriden);
- processMethod(overriden, methodDesc);
+ final Method overridden =
Reflection.getDeclaredMethod(clazz, method.getName(),
method.getParameterTypes());
+ if (overridden != null) {
+ parents.add(overridden);
+ processMethod(overridden, methodDesc);
}
}
@@ -564,7 +568,7 @@ public class BeanDescriptorImpl extends
final Class<?>[] interfaces =
method.getDeclaringClass().getInterfaces();
final Collection<Method> itfWithThisMethod = new
ArrayList<Method>();
for (final Class<?> i : interfaces) {
- final Method m =
Reflection.INSTANCE.getDeclaredMethod(i, method.getName(),
method.getParameterTypes());
+ final Method m =
Reflection.getDeclaredMethod(i, method.getName(),
method.getParameterTypes());
if (m != null) {
itfWithThisMethod.add(m);
}
@@ -582,9 +586,9 @@ public class BeanDescriptorImpl extends
returnValid++;
}
for (final Class<?> clazz : classHierarchy) {
- final Method overriden =
Reflection.INSTANCE.getDeclaredMethod(clazz, method.getName(),
method.getParameterTypes());
- if (overriden != null) {
- if (overriden.getAnnotation(Valid.class) != null) {
+ final Method overridden =
Reflection.getDeclaredMethod(clazz, method.getName(),
method.getParameterTypes());
+ if (overridden != null) {
+ if (overridden.getAnnotation(Valid.class)
!= null) {
returnValid++;
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ClassValidator.java
Wed Oct 1 04:37:36 2014
@@ -18,6 +18,33 @@
*/
package org.apache.bval.jsr;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+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 javax.validation.ConstraintDeclarationException;
+import javax.validation.ConstraintDefinitionException;
+import javax.validation.ConstraintTarget;
+import javax.validation.ConstraintViolation;
+import javax.validation.ElementKind;
+import javax.validation.ValidationException;
+import javax.validation.executable.ExecutableValidator;
+import javax.validation.groups.Default;
+import javax.validation.metadata.BeanDescriptor;
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.metadata.ElementDescriptor;
+import javax.validation.metadata.ParameterDescriptor;
+import javax.validation.metadata.PropertyDescriptor;
+
import org.apache.bval.DynamicMetaBean;
import org.apache.bval.MetaBeanFinder;
import org.apache.bval.jsr.groups.Group;
@@ -40,34 +67,7 @@ import org.apache.commons.lang3.ArrayUti
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
-
-import javax.validation.ConstraintDeclarationException;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.ConstraintTarget;
-import javax.validation.ConstraintViolation;
-import javax.validation.ElementKind;
-import javax.validation.ValidationException;
-import javax.validation.executable.ExecutableValidator;
-import javax.validation.groups.Default;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import javax.validation.metadata.ParameterDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-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 org.apache.commons.weaver.privilizer.Privileged;
// TODO: centralize treatMapsLikeBeans
@@ -312,18 +312,8 @@ public class ClassValidator implements C
return this;
}
+ @Privileged
private <T> T newInstance(final Class<T> cls) {
- if (System.getSecurityManager() == null) {
- return doNewInstance(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- return doNewInstance(cls);
- }
- });
- }
-
- private <T> T doNewInstance(final Class<T> cls) {
try {
Constructor<T> cons =
cls.getConstructor(ApacheFactoryContext.class);
if (!cons.isAccessible()) {
@@ -399,6 +389,7 @@ public class ClassValidator implements C
// For each owner in the hierarchy
for (final Class<?> owner : classHierarchy) {
+
context.setCurrentOwner(owner);
int numViolations = result.violationsSize();
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
Wed Oct 1 04:37:36 2014
@@ -18,11 +18,16 @@
*/
package org.apache.bval.jsr;
-import org.apache.bval.cdi.BValExtension;
-import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
-import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
-import org.apache.bval.jsr.util.IOs;
-import org.apache.bval.jsr.xml.ValidationParser;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.validation.BootstrapConfiguration;
import javax.validation.ConstraintValidatorFactory;
@@ -36,18 +41,13 @@ import javax.validation.executable.Execu
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ConfigurationState;
import javax.validation.spi.ValidationProvider;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.bval.cdi.BValExtension;
+import org.apache.bval.jsr.parameter.DefaultParameterNameProvider;
+import org.apache.bval.jsr.resolver.DefaultTraversableResolver;
+import org.apache.bval.jsr.util.IOs;
+import org.apache.bval.jsr.xml.ValidationParser;
+import org.apache.commons.weaver.privilizer.Privileged;
/**
* Description: used to configure apache-validation for jsr.
@@ -98,7 +98,7 @@ public class ConfigurationImpl implement
protected Collection<ExecutableType> executableValidation;
- private Collection<BValExtension.Releasable> releasables = new
CopyOnWriteArrayList<BValExtension.Releasable>();
+ private Collection<BValExtension.Releasable<?>> releasables = new
CopyOnWriteArrayList<BValExtension.Releasable<?>>();
private boolean beforeCdi = false;
@@ -305,27 +305,18 @@ public class ConfigurationImpl implement
* @throws ValidationException if the ValidatorFactory cannot be built
*/
public ValidatorFactory buildValidatorFactory() {
- if (System.getSecurityManager() == null) {
- return doPrivBuildValidatorFactory(this);
- }
- return AccessController.doPrivileged(new
PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return doPrivBuildValidatorFactory(ConfigurationImpl.this);
- }
- });
+ return doBuildValidatorFactory();
}
- public ValidatorFactory doPrivBuildValidatorFactory(final
ConfigurationImpl impl) {
+ @Privileged
+ private ValidatorFactory doBuildValidatorFactory() {
prepare();
parser.ensureValidatorFactoryCanBeBuilt();
- if (provider != null) {
- return provider.buildValidatorFactory(impl);
- } else {
- return findProvider().buildValidatorFactory(impl);
- }
+ final ValidationProvider<?> useProvider = provider == null ?
findProvider() : provider;
+ return useProvider.buildValidatorFactory(this);
}
- public ConfigurationImpl prepare() {
+ private ConfigurationImpl prepare() {
if (prepared) {
return this;
}
@@ -466,38 +457,19 @@ public class ConfigurationImpl implement
};
}
+ @Privileged
private <T> T newInstance(final Class<T> cls) {
- if (System.getSecurityManager() == null) {
- return createInstance(cls);
- }
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- return createInstance(cls);
- }
- });
- }
-
- private <T> T createInstance(final Class<T> cls) {
try {
final BValExtension.Releasable<T> releasable =
BValExtension.inject(cls);
releasables.add(releasable);
return releasable.getInstance();
} catch (final Exception e) {
- try {
- return cls.newInstance();
- } catch (final InstantiationException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- } catch (final IllegalAccessException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- }
} catch (final NoClassDefFoundError error) {
- try {
- return cls.newInstance();
- } catch (final InstantiationException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- } catch (final IllegalAccessException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- }
+ }
+ try {
+ return cls.newInstance();
+ } catch (final Exception e) {
+ throw new ValidationException(e.getMessage(), e);
}
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
Wed Oct 1 04:37:36 2014
@@ -18,15 +18,17 @@ package org.apache.bval.jsr;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.reflect.TypeUtils;
+import org.apache.commons.weaver.privilizer.Privileged;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Constraint;
import javax.validation.ConstraintTarget;
import javax.validation.Payload;
+
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -40,27 +42,27 @@ public enum ConstraintAnnotationAttribut
/**
* "message"
*/
- MESSAGE(false, "message"),
+ MESSAGE("message"),
/**
* "groups"
*/
- GROUPS(false, "groups"),
+ GROUPS("groups"),
/**
* "payload"
*/
- PAYLOAD(false, "payload"),
+ PAYLOAD("payload"),
/**
* "validationAppliesTo"
*/
- VALIDATION_APPLIES_TO(true, "validationAppliesTo"),
+ VALIDATION_APPLIES_TO("validationAppliesTo"),
/**
* "value" for multi-valued constraints
*/
- VALUE(true, "value");
+ VALUE("value");
@SuppressWarnings("unused")
private static class Types {
@@ -72,11 +74,9 @@ public enum ConstraintAnnotationAttribut
}
private final Type type;
- private final boolean permitNullDefaultValue;
private final String attributeName;
- private ConstraintAnnotationAttributes(final boolean
permitNullDefaultValue, final String name) {
- this.permitNullDefaultValue = permitNullDefaultValue;
+ private ConstraintAnnotationAttributes(final String name) {
this.attributeName = name;
try {
this.type =
Types.class.getDeclaredField(getAttributeName()).getGenericType();
@@ -133,6 +133,7 @@ public enum ConstraintAnnotationAttribut
public <C extends Annotation> Worker<C> analyze(final Class<C> clazz) {
if (clazz.getName().startsWith("javax.validation.constraint."))
{ // cache only APIs classes to avoid memory leaks
+ @SuppressWarnings("unchecked")
Worker<C> w = Worker.class.cast(WORKER_CACHE.get(clazz));
if (w == null) {
w = new Worker<C>(clazz);
@@ -154,6 +155,8 @@ public enum ConstraintAnnotationAttribut
throw new RuntimeException("Impossible normally");
}
}
+
+ @Privilizing(@CallTo(Reflection.class))
public class Worker<C extends Annotation> {
public final Method method;
@@ -180,7 +183,7 @@ public enum ConstraintAnnotationAttribut
if (found != null) {
return found;
}
- final Method m =
Reflection.INSTANCE.getPublicMethod(constraintType, attributeName);
+ final Method m =
Reflection.getPublicMethod(constraintType, attributeName);
if (m == null) {
cache.putIfAbsent(attributeName, NULL_METHOD);
return null;
@@ -199,17 +202,13 @@ public enum ConstraintAnnotationAttribut
return method != null && method != NULL_METHOD;
}
- public Object read(final Annotation constraint) {
- if (System.getSecurityManager() == null) {
- return doInvoke(constraint);
- }
- return AccessController.doPrivileged(new
PrivilegedAction<Object>() {
- public Object run() {
- return doInvoke(constraint);
- }
- });
+ public <T> T read(final Annotation constraint) {
+ @SuppressWarnings("unchecked")
+ final T result = (T) doInvoke(constraint);
+ return result;
}
+ @Privileged
private Object doInvoke(final Annotation constraint) {
try {
return method.invoke(constraint);
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintDefaults.java
Wed Oct 1 04:37:36 2014
@@ -18,12 +18,9 @@
*/
package org.apache.bval.jsr;
-import javax.validation.ConstraintValidator;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -32,10 +29,17 @@ import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.validation.ConstraintValidator;
+
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
/**
* Description: Provides access to the default constraints/validator
implementation classes built into the framework.
* These are configured in DefaultConstraints.properties.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class ConstraintDefaults {
private static final Logger log =
Logger.getLogger(ConstraintDefaults.class.getName());
private static final String DEFAULT_CONSTRAINTS =
@@ -101,31 +105,11 @@ public class ConstraintDefaults {
while (tokens.hasMoreTokens()) {
final String eachClassName = tokens.nextToken();
- Class<?> constraintValidatorClass;
- if (System.getSecurityManager() == null) {
- try {
- constraintValidatorClass =
Class.forName(eachClassName, true, classloader);
- } catch (final ClassNotFoundException e) {
- log.log(Level.SEVERE, String.format("Cannot
find class %s", eachClassName), e);
- constraintValidatorClass = null;
- }
- } else {
- constraintValidatorClass =
AccessController.doPrivileged(new PrivilegedAction<Class<?>>() {
- public Class<?> run() {
- try {
- return Class.forName(eachClassName,
true, classloader);
- } catch (final ClassNotFoundException e) {
- log.log(Level.SEVERE,
String.format("Cannot find class %s", eachClassName), e);
- return null;
- }
- }
- });
- }
-
- if (constraintValidatorClass != null) {
- classes.add(constraintValidatorClass);
+ try {
+ classes.add(Reflection.getClass(classloader,
eachClassName));
+ } catch (Exception e) {
+ log.log(Level.SEVERE, String.format("Cannot find
class %s", eachClassName), e);
}
-
}
loadedConstraints.put((String) entry.getKey(),
classes.toArray(new Class[classes.size()]));
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
Wed Oct 1 04:37:36 2014
@@ -234,7 +234,7 @@ public class ConstraintValidation<T exte
}
private <A extends Annotation, T> ConstraintValidator<A, ? super
T> getConstraintValidator(A annotation,
-
Class<? extends ConstraintValidator<A, ?>>[]
constraintClasses, Class<?> owner, AccessStrategy access) {
+ Class<? extends ConstraintValidator<A, ?>>[]
constraintClasses, Class<?> owner, AccessStrategy access) {
if (constraintClasses != null && constraintClasses.length > 0) {
Type type = determineTargetedType(owner, access);
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultMessageInterpolator.java
Wed Oct 1 04:37:36 2014
@@ -19,8 +19,11 @@ package org.apache.bval.jsr;
import org.apache.bval.el.MessageEvaluator;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.MessageInterpolator;
+
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
@@ -37,6 +40,7 @@ import java.util.regex.Pattern;
* into human-readable messages. It uses ResourceBundles to find the messages.
* This class is threadsafe.<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class DefaultMessageInterpolator implements MessageInterpolator {
private static final Logger log =
Logger.getLogger(DefaultMessageInterpolator.class.getName());
private static final boolean LOG_FINEST = log.isLoggable(Level.FINEST);
@@ -168,7 +172,7 @@ public class DefaultMessageInterpolator
*/
private ResourceBundle getFileBasedResourceBundle(Locale locale) {
ResourceBundle rb = null;
- final ClassLoader classLoader =
Reflection.INSTANCE.getClassLoader(DefaultMessageInterpolator.class);
+ final ClassLoader classLoader =
Reflection.getClassLoader(DefaultMessageInterpolator.class);
if (classLoader != null) {
rb = loadBundle(classLoader, locale,
USER_VALIDATION_MESSAGES + " not found by thread
local classloader");
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultValidationProviderResolver.java
Wed Oct 1 04:37:36 2014
@@ -17,19 +17,23 @@
package org.apache.bval.jsr;
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.spi.ValidationProvider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
+import javax.validation.ValidationException;
+import javax.validation.ValidationProviderResolver;
+import javax.validation.spi.ValidationProvider;
+
+import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
+
+@Privilizing(@CallTo(Reflection.class))
public class DefaultValidationProviderResolver implements
ValidationProviderResolver {
//TODO - Spec recommends caching per classloader
@@ -49,7 +53,7 @@ public class DefaultValidationProviderRe
// find all service provider cfgs
Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
while (cfgs.hasMoreElements()) {
- URL url = cfgs.nextElement();
+ final URL url = cfgs.nextElement();
BufferedReader br = null;
try {
br = new BufferedReader(new
InputStreamReader(url.openStream()), 256);
@@ -60,27 +64,11 @@ public class DefaultValidationProviderRe
if (!line.startsWith("#")) {
try {
// try loading the specified class
- final Class<?> provider = cl.loadClass(line);
+ @SuppressWarnings("rawtypes")
+ final Class<? extends
ValidationProvider> providerType =
+
cl.loadClass(line).asSubclass(ValidationProvider.class);
// create an instance to return
- final ValidationProvider<?> vp;
- if (System.getSecurityManager() == null) {
- try {
- vp = (ValidationProvider<?>)
provider.newInstance();
- } catch (final Exception ex) {
- throw new
ValidationException("Cannot instantiate : " + provider, ex);
- }
- } else {
- vp =
AccessController.doPrivileged(new
PrivilegedAction<ValidationProvider<?>>() {
- public ValidationProvider<?> run() {
- try {
- return
(ValidationProvider<?>) provider.newInstance();
- } catch (final Exception ex) {
- throw new
ValidationException("Cannot instantiate : " + provider, ex);
- }
- }
- });
- }
- providers.add(vp);
+
providers.add(Reflection.newInstance(providerType.asSubclass(ValidationProvider.class)));
} catch (ClassNotFoundException e) {
throw new ValidationException("Failed
to load provider " +
@@ -89,12 +77,12 @@ public class DefaultValidationProviderRe
}
line = br.readLine();
}
- br.close();
} catch (IOException e) {
throw new ValidationException("Error trying to
read " + url, e);
} finally {
- if (br != null)
+ if (br != null) {
br.close();
+ }
}
}
} catch (IOException e) {
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java
Wed Oct 1 04:37:36 2014
@@ -32,12 +32,15 @@ import org.apache.bval.util.AccessStrate
import org.apache.bval.util.FieldAccess;
import org.apache.bval.util.MethodAccess;
import org.apache.bval.util.reflection.Reflection;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.ConstraintDeclarationException;
import javax.validation.GroupDefinitionException;
import javax.validation.GroupSequence;
import javax.validation.groups.ConvertGroup;
import javax.validation.groups.Default;
+
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
@@ -55,6 +58,7 @@ import java.util.logging.Logger;
* Description: process the class annotations for JSR303 constraint
validations to build the MetaBean with information
* from annotations and JSR303 constraint mappings (defined in xml)<br/>
*/
+@Privilizing(@CallTo(Reflection.class))
public class JsrMetaBeanFactory implements MetaBeanFactory {
/** Shared log instance */
// of dubious utility as it's static :/
@@ -87,8 +91,8 @@ public class JsrMetaBeanFactory implemen
processGroupSequence(beanClass, metabean);
// process class, superclasses and interfaces
- List<Class<?>> classSequence = new ArrayList<Class<?>>();
- ClassHelper.fillFullClassHierarchyAsList(classSequence, beanClass);
+ final List<Class<?>> classSequence =
+ ClassHelper.fillFullClassHierarchyAsList(new
ArrayList<Class<?>>(), beanClass);
// start with superclasses and go down the hierarchy so that
// the child classes are processed last to have the chance to
@@ -126,7 +130,7 @@ public class JsrMetaBeanFactory implemen
final Collection<String> missingValid = new ArrayList<String>();
- final Field[] fields =
Reflection.INSTANCE.getDeclaredFields(beanClass);
+ final Field[] fields = Reflection.getDeclaredFields(beanClass);
for (final Field field : fields) {
MetaProperty metaProperty = metabean.getProperty(field.getName());
// create a property for those fields for which there is not yet a
@@ -147,7 +151,7 @@ public class JsrMetaBeanFactory implemen
}
}
}
- final Method[] methods =
Reflection.INSTANCE.getDeclaredMethods(beanClass);
+ final Method[] methods = Reflection.getDeclaredMethods(beanClass);
for (final Method method : methods) {
if (method.isSynthetic() || method.isBridge()) {
continue;
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/resolver/DefaultTraversableResolver.java
Wed Oct 1 04:37:36 2014
@@ -18,14 +18,18 @@ package org.apache.bval.jsr.resolver;
import org.apache.bval.util.reflection.Reflection;
import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.weaver.privilizer.Privilizing;
+import org.apache.commons.weaver.privilizer.Privilizing.CallTo;
import javax.validation.Path;
import javax.validation.TraversableResolver;
+
import java.lang.annotation.ElementType;
import java.util.logging.Level;
import java.util.logging.Logger;
/** @see javax.validation.TraversableResolver */
+@Privilizing(@CallTo(Reflection.class))
public class DefaultTraversableResolver implements
TraversableResolver, CachingRelevant {
private static final Logger log =
Logger.getLogger(DefaultTraversableResolver.class.getName());
private static final boolean LOG_FINEST = log.isLoggable(Level.FINEST);
@@ -71,9 +75,9 @@ public class DefaultTraversableResolver
/** Tries to load detect and load JPA. */
@SuppressWarnings("unchecked")
private void initJpa() {
- final ClassLoader classLoader = getClassLoader();
+ final ClassLoader classLoader =
Reflection.getClassLoader(DefaultTraversableResolver.class);
try {
- Reflection.INSTANCE.getClass(classLoader,
PERSISTENCE_UTIL_CLASSNAME);
+ Reflection.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
if (LOG_FINEST) {
log.log(Level.FINEST, String.format("Found %s on
classpath.", PERSISTENCE_UTIL_CLASSNAME));
}
@@ -101,9 +105,4 @@ public class DefaultTraversableResolver
public boolean needsCaching() {
return jpaTR != null && CachingTraversableResolver.needsCaching(jpaTR);
}
-
- private static ClassLoader getClassLoader()
- {
- return Reflection.INSTANCE.getClassLoader(DefaultTraversableResolver.class);
- }
}
Modified: bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
URL: http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java?rev=1628598&r1=1628597&r2=1628598&view=diff
==============================================================================
--- bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
(original)
+++ bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java
Wed Oct 1 04:37:36 2014
@@ -43,6 +43,7 @@ public class ClassHelper {
* The current list of classes in the hierarchy.
* @param clazz
*/
+ @Deprecated
static public List<Class<?>>
fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?>
clazz) {
if (clazz == null || clazz == Object.class || clazz ==
Serializable.class || clazz == Cloneable.class) {
return allClasses;
@@ -58,26 +59,4 @@ public class ClassHelper {
return allClasses;
}
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className) throws
ClassNotFoundException {
- return getClass(className, true);
- }
-
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className, boolean
initialize) throws ClassNotFoundException {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if (loader == null)
- loader = ClassHelper.class.getClassLoader();
- return ClassUtils.getClass(loader, className, initialize);
- }
}