You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2012/10/05 09:52:58 UTC
svn commit: r1394399 - in /bval/sandbox/bval-jsr303-dynamic: ./
extval-shared-tests/ extval-shared/ extval12-tests/ extval12/
extval20-tests/ extval20/ provider/
provider/src/main/java/org/apache/bval/jsr303/dynamic/
Author: mbenson
Date: Fri Oct 5 07:52:57 2012
New Revision: 1394399
URL: http://svn.apache.org/viewvc?rev=1394399&view=rev
Log:
upgrade to BVal 0.6-SNAPSHOT, including also moving to jul
Modified:
bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml
bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml
bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml
bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml
bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml
bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml
bval/sandbox/bval-jsr303-dynamic/pom.xml
bval/sandbox/bval-jsr303-dynamic/provider/pom.xml
bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java
bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java
Modified: bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval-shared-tests/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303-dynamic</artifactId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval-shared-tests</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval-shared-tests</name>
Modified: bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval-shared/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303-dynamic</artifactId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval-shared</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval-shared</name>
Modified: bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval12-tests/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303-dynamic</artifactId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval12-tests</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval12-tests</name>
Modified: bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval12/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<artifactId>bval-jsr303-dynamic</artifactId>
<groupId>org.apache.bval</groupId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval12</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval12</name>
Modified: bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval20-tests/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303-dynamic</artifactId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval20-tests</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval20-tests</name>
Modified: bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/extval20/pom.xml Fri Oct 5 07:52:57 2012
@@ -26,7 +26,7 @@
<parent>
<artifactId>bval-jsr303-dynamic</artifactId>
<groupId>org.apache.bval</groupId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-extval20</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic-extval20</name>
Modified: bval/sandbox/bval-jsr303-dynamic/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/pom.xml Fri Oct 5 07:52:57 2012
@@ -23,7 +23,7 @@
<parent>
<artifactId>bval-parent</artifactId>
<groupId>org.apache.bval</groupId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic</artifactId>
<name>Apache BVal :: bval-jsr303-dynamic</name>
Modified: bval/sandbox/bval-jsr303-dynamic/provider/pom.xml
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/pom.xml?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/pom.xml (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/pom.xml Fri Oct 5 07:52:57 2012
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303-dynamic</artifactId>
- <version>0.4-incubating-SNAPSHOT</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<artifactId>bval-jsr303-dynamic-provider</artifactId>
@@ -55,16 +55,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-proxy2-stub</artifactId>
<optional>true</optional>
Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java Fri Oct 5 07:52:57 2012
@@ -33,6 +33,8 @@ import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.validation.Path;
import javax.validation.Valid;
@@ -60,8 +62,6 @@ import org.apache.commons.lang3.ArrayUti
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import org.apache.commons.lang3.tuple.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* {@link DynamicMetaGraphManager} implementation.
@@ -500,7 +500,7 @@ final class DynamicMetaGraphManagerImpl
}
- private final Logger log = LoggerFactory.getLogger(getClass());
+ private final Logger log = Logger.getLogger(getClass().getName());
private final Timestamped.Context timeContext = new Timestamped.Context();
private final DynamicMetaGraphManager.Interface writable = timeContext
@@ -645,7 +645,7 @@ final class DynamicMetaGraphManagerImpl
if (!path.isRootPath()) {
msg.append(": path ").append(path);
}
- log.error(msg.toString(), e);
+ log.log(Level.WARNING, msg.toString(), e);
}
return initial;
}
Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorFactory.java Fri Oct 5 07:52:57 2012
@@ -35,7 +35,7 @@ import org.apache.bval.util.AccessStrate
/**
* {@link ApacheValidatorFactory} extension that creates a {@link DynamicValidatorContext}.
- *
+ *
* @version $Rev$ $Date$
*/
public class DynamicValidatorFactory extends ApacheValidatorFactory {
@@ -44,7 +44,7 @@ public class DynamicValidatorFactory ext
/**
* Create a new TimestampedMetaBeanBuilder instance.
- *
+ *
* @param idDelegate
*/
private TimestampedMetaBeanBuilder(MetaBeanBuilder idDelegate, MetaBeanFactory[] builders) {
@@ -95,7 +95,7 @@ public class DynamicValidatorFactory ext
/**
* Create a new {@link DynamicValidatorFactory} instance.
- *
+ *
* @param configurationState
*/
public DynamicValidatorFactory(ConfigurationState configurationState) {
@@ -116,10 +116,8 @@ public class DynamicValidatorFactory ext
cache = ((MetaBeanManager) metaBeanFinder).getCache();
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.bval.jsr303.ApacheValidatorFactory#usingContext()
+ /**
+ * {@inheritDoc}
*/
@Override
public DynamicValidatorContext usingContext() {
@@ -147,7 +145,7 @@ public class DynamicValidatorFactory ext
/**
* {@inheritDoc}
*/
- public void addDefaultSequence(Class<?> beanClass, Class<?>[] groupSequence) {
+ public void addDefaultSequence(Class<?> beanClass, Class<?>... groupSequence) {
super.addDefaultSequence(beanClass, groupSequence);
invalidateCachedBean(beanClass);
}
Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java Fri Oct 5 07:52:57 2012
@@ -18,6 +18,8 @@ package org.apache.bval.jsr303.dynamic;
import java.lang.annotation.ElementType;
import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.validation.ConstraintViolation;
import javax.validation.ValidationException;
@@ -36,8 +38,6 @@ import org.apache.bval.util.PropertyAcce
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* {@code Validator} implementation to handle validations in a given context. This extension is only applicable because
@@ -147,7 +147,7 @@ public class NestedValidator extends Dyn
private Object rootBean;
private DynamicMetaBean rootMetaBean;
private String path;
- private final Logger log = LoggerFactory.getLogger(getClass());
+ private final Logger log = Logger.getLogger(getClass().getName());
/**
* Create a new NestedValidator instance.
@@ -229,7 +229,7 @@ public class NestedValidator extends Dyn
}
return result;
} catch (UnknownPropertyException e) {
- log.warn("Could not get nested validation metadata, falling back to non-nested metadata instead", e);
+ log.log(Level.WARNING, "Could not get nested validation metadata, falling back to non-nested metadata instead; %s", e);
}
}
return super.createContext(metaBean, object, objectClass, groups);
Modified: bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java
URL: http://svn.apache.org/viewvc/bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java?rev=1394399&r1=1394398&r2=1394399&view=diff
==============================================================================
--- bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java (original)
+++ bval/sandbox/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/StubConstraint.java Fri Oct 5 07:52:57 2012
@@ -22,6 +22,8 @@ import static org.apache.bval.jsr303.Con
import static org.apache.bval.jsr303.ConstraintAnnotationAttributes.VALUE;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.EnumMap;
import java.util.Map;
@@ -30,8 +32,8 @@ import javax.validation.Payload;
import javax.validation.ValidationException;
import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-import org.apache.bval.util.PrivilegedActions;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.reflect.MethodUtils;
import org.apache.commons.lang3.reflect.TypeUtils;
import org.apache.commons.proxy2.stub.AnnotationConfigurer;
import org.apache.commons.proxy2.stub.AnnotationFactory;
@@ -39,8 +41,9 @@ import org.apache.commons.proxy2.stub.St
/**
* Fluent interface for building constraints.
- *
- * @version $Rev$ $Date$
+ *
+ * @version $Rev$ $Date: 2010-10-10 10:35:19 -0500 (Sun, 10 Oct 2010)
+ * $
*/
public class StubConstraint {
/**
@@ -49,9 +52,11 @@ public class StubConstraint {
public static class Builder {
private EnumMap<ConstraintAnnotationAttributes, Object> attributes =
- new EnumMap<ConstraintAnnotationAttributes, Object>(ConstraintAnnotationAttributes.class);
+ new EnumMap<ConstraintAnnotationAttributes, Object>(
+ ConstraintAnnotationAttributes.class);
- private class Config<A extends Annotation> extends AnnotationConfigurer<A> {
+ private class Config<A extends Annotation> extends
+ AnnotationConfigurer<A> {
/**
* Create a new StubConstraint.Builder.Config instance.
*/
@@ -72,7 +77,9 @@ public class StubConstraint {
protected void configure(final A stub) {
for (final Map.Entry<ConstraintAnnotationAttributes, Object> e : StubConstraint.Builder.this.attributes
.entrySet()) {
- when(getAttribute(e.getKey().getAttributeName(), getStubType(), stub)).thenReturn(e.getValue());
+ when(
+ getAttribute(e.getKey().getAttributeName(),
+ getStubType(), stub)).thenReturn(e.getValue());
}
}
@@ -84,10 +91,11 @@ public class StubConstraint {
/**
* Custom constraint configurer.
- *
+ *
* @param <A>
*/
- public abstract class CustomConfig<A extends Annotation> extends Config<A> {
+ public abstract class CustomConfig<A extends Annotation> extends
+ Config<A> {
/**
* {@inheritDoc}
@@ -99,14 +107,14 @@ public class StubConstraint {
/**
* Perform configuration specific to the constraint type.
- *
+ *
* @param stub
*/
protected abstract void customConfigure(A stub);
/**
* Build the constraint annotation.
- *
+ *
* @return A
*/
public A build() {
@@ -122,7 +130,7 @@ public class StubConstraint {
/**
* Set the groups that will be set on built constraints.
- *
+ *
* @param groups
* @return this, per fluent/chained idiom
*/
@@ -133,7 +141,7 @@ public class StubConstraint {
/**
* Set the message that will be set on built constraints.
- *
+ *
* @param message
* @return this, per fluent/chained idiom
*/
@@ -144,18 +152,20 @@ public class StubConstraint {
/**
* Set the payload that will be set on built constraints.
- *
+ *
* @param payload
* @return this, per fluent/chained idiom
*/
- public StubConstraint.Builder withPayload(Class<? extends Payload>... payload) {
+ public StubConstraint.Builder withPayload(
+ Class<? extends Payload>... payload) {
attributes.put(PAYLOAD, payload);
return this;
}
/**
- * Get a ConstraintConfig stub configurer for the specified type, with default or no custom attributes.
- *
+ * Get a ConstraintConfig stub configurer for the specified type, with
+ * default or no custom attributes.
+ *
* @param <A>
* @param type
* @return ConstraintConfig<A>
@@ -172,7 +182,7 @@ public class StubConstraint {
/**
* Get a builder for refining built constraints.
- *
+ *
* @return StubConstraint.Builder instance
*/
public static StubConstraint.Builder build() {
@@ -181,7 +191,7 @@ public class StubConstraint {
/**
* Build a default constraint annotation of type
- *
+ *
* @param <A>
* @param type
* @return
@@ -192,37 +202,40 @@ public class StubConstraint {
/**
* Build a multivalued annotation.
- *
+ *
* @param <A>
* @param <M>
* @param type
* @param value
* @return L
*/
- public static <A extends Annotation, M extends Annotation> M buildMultiple(final Class<M> type, final A... value) {
+ public static <A extends Annotation, M extends Annotation> M buildMultiple(
+ final Class<M> type, final A... value) {
/*
* Here we go
*/
- if (!PrivilegedActions.run(new PrivilegedAction<Boolean>() {
+ if (!run(new PrivilegedAction<Boolean>() {
public Boolean run() {
try {
- return TypeUtils.isInstance(value, type.getMethod(VALUE.getAttributeName()).getGenericReturnType());
- } catch (RuntimeException e) {
- throw e;
+ return TypeUtils.isInstance(value,
+ type.getMethod(VALUE.getAttributeName())
+ .getGenericReturnType());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
})) {
- throw new ValidationException(String.format("%2$s does not seem to be a valid value for %1$s()", type,
+ throw new ValidationException(String.format(
+ "%2$s does not seem to be a valid value for %1$s()", type,
value));
}
if (value != null) {
@SuppressWarnings("unchecked")
Class<? extends Annotation> constraintType =
- (Class<? extends Annotation>) value.getClass().getComponentType();
+ (Class<? extends Annotation>) value.getClass()
+ .getComponentType();
validateConstraintType(constraintType);
}
@@ -233,38 +246,52 @@ public class StubConstraint {
*/
@Override
protected void configure(M stub) {
- when(getAttribute(VALUE.getAttributeName(), type, stub)).thenReturn(value);
+ when(getAttribute(VALUE.getAttributeName(), type, stub))
+ .thenReturn(value);
}
});
}
- private static <A extends Annotation> void validateConstraintType(Class<A> type) {
- for (ConstraintAnnotationAttributes a : ArrayUtils.toArray(MESSAGE, GROUPS, PAYLOAD)) {
+ private static <A extends Annotation> void validateConstraintType(
+ Class<A> type) {
+ for (ConstraintAnnotationAttributes a : ArrayUtils.toArray(MESSAGE,
+ GROUPS, PAYLOAD)) {
a.validateOn(type);
}
}
/**
- * Reimplement the retrieval of attribute values using an externally specified type; incomplete stubbed annotations
- * cannot answer {@link Annotation#annotationType()}.
- *
+ * Reimplement the retrieval of attribute values using an externally
+ * specified type; incomplete stubbed annotations cannot answer
+ * {@link Annotation#annotationType()}.
+ *
* @param attributeName
* @param type
* @param instance
* @return Object
*/
- private static <T> T getAttribute(final String attributeName, final Class<? extends Annotation> type,
- final Object instance) {
- return PrivilegedActions.run(new PrivilegedAction<T>() {
-
- @SuppressWarnings("unchecked")
- public T run() {
- try {
- return (T) type.getMethod(attributeName).invoke(instance);
- } catch (Exception e) {
- throw new RuntimeException(e);
+ private static <T> T getAttribute(final String attributeName,
+ final Class<? extends Annotation> type, final Object instance) {
+ try {
+ final Method m = run(new PrivilegedAction<Method>() {
+ public Method run() {
+ return MethodUtils.getAccessibleMethod(type, attributeName);
}
- }
- });
+ });
+ @SuppressWarnings("unchecked")
+ final T result = (T) m.invoke(instance);
+ return result;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static <T> T run(PrivilegedAction<T> action) {
+ if (System.getSecurityManager() != null) {
+ return AccessController.doPrivileged(action);
+ } else {
+ return action.run();
+ }
}
+
}