I have a same problem with JDK 7. On Sat, Dec 6, 2014 at 12:57 PM, Romain Manni-Bucau <[email protected]> wrote:
> Yep > > Not an issue afaik > Le 6 déc. 2014 13:41, "Roman Stumm" <[email protected]> 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 < > [email protected] > >> > > >> 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: <[email protected]> > >>> 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: [email protected] > >>> > >>> > >>> 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
