Skip to content

Commit

Permalink
HV-642 Making privileged action for obtaining constructors consistent…
Browse files Browse the repository at this point in the history
… with other actions
  • Loading branch information
gunnarmorling committed Jul 26, 2013
1 parent f1b9a33 commit ec9db63
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 14 deletions.
Expand Up @@ -50,7 +50,7 @@
import org.hibernate.validator.internal.util.privilegedactions.ConstructorInstance;
import org.hibernate.validator.internal.util.privilegedactions.GetAnnotationParameter;
import org.hibernate.validator.internal.util.privilegedactions.GetClassLoader;
import org.hibernate.validator.internal.util.privilegedactions.GetConstructor;
import org.hibernate.validator.internal.util.privilegedactions.GetDeclaredConstructor;
import org.hibernate.validator.internal.util.privilegedactions.GetDeclaredConstructors;
import org.hibernate.validator.internal.util.privilegedactions.GetDeclaredField;
import org.hibernate.validator.internal.util.privilegedactions.GetDeclaredFields;
Expand Down Expand Up @@ -97,6 +97,7 @@ public final class ReflectionHelper {
private static final TypeResolver typeResolver = new TypeResolver();

private static final Map<String, Class<?>> PRIMITIVE_NAME_TO_PRIMITIVE;

static {
Map<String, Class<?>> tmpMap = newHashMap( 9 );

Expand Down Expand Up @@ -172,8 +173,8 @@ public static Class<?> loadClass(String className, String defaultPackage) {
}

public static Class<?> loadClass(String className, String defaultPackage, Class<?> caller) {
if( PRIMITIVE_NAME_TO_PRIMITIVE.containsKey( className )) {
return PRIMITIVE_NAME_TO_PRIMITIVE.get( className );
if ( PRIMITIVE_NAME_TO_PRIMITIVE.containsKey( className ) ) {
return PRIMITIVE_NAME_TO_PRIMITIVE.get( className );
}

StringBuilder fullyQualifiedClass = new StringBuilder();
Expand Down Expand Up @@ -211,10 +212,6 @@ private static boolean isQualifiedClass(String clazz) {
return clazz.contains( PACKAGE_SEPARATOR );
}

public static <T> Constructor<T> getConstructor(Class<T> clazz, Class<?>... params) {
return run( GetConstructor.action( clazz, params ) );
}

public static <T> T newInstance(Class<T> clazz, String message) {
return run( NewInstance.action( clazz, message ) );
}
Expand Down Expand Up @@ -658,6 +655,19 @@ public static Constructor<?>[] getDeclaredConstructors(Class<?> clazz) {
return run( GetDeclaredConstructors.action( clazz ) );
}

/**
* Returns the declared constructor with the specified parameter types or {@code null} if
* it does not exist.
*
* @param clazz The class to check.
* @param parameterTypes The constructor parameter types.
*
* @return Returns the declared constructor with the specified name or {@code null} if it does not exist.
*/
public static <T> Constructor<T> getDeclaredConstructor(Class<T> clazz, Class<?>... params) {
return run( GetDeclaredConstructor.action( clazz, params ) );
}

/**
* Executes the given privileged action either directly or with privileges
* enabled, depending on whether a security manager is around or not.
Expand Down
Expand Up @@ -55,7 +55,10 @@ public static <T extends Annotation> T create(AnnotationDescriptor<T> descriptor
private static <T extends Annotation> T getProxyInstance(Class<T> proxyClass, InvocationHandler handler) throws
SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException,
IllegalAccessException, InvocationTargetException {
final Constructor<T> constructor = ReflectionHelper.getConstructor( proxyClass, InvocationHandler.class );
final Constructor<T> constructor = ReflectionHelper.getDeclaredConstructor(
proxyClass,
InvocationHandler.class
);
return ReflectionHelper.newConstructorInstance( constructor, handler );
}
}
Expand Up @@ -22,22 +22,22 @@
/**
* @author Emmanuel Bernard
*/
public final class GetConstructor<T> implements PrivilegedAction<Constructor<T>> {
public final class GetDeclaredConstructor<T> implements PrivilegedAction<Constructor<T>> {
private final Class<T> clazz;
private final Class<?>[] params;

public static <T> GetConstructor<T> action(Class<T> clazz, Class<?>... params) {
return new GetConstructor<T>( clazz, params );
public static <T> GetDeclaredConstructor<T> action(Class<T> clazz, Class<?>... params) {
return new GetDeclaredConstructor<T>( clazz, params );
}

private GetConstructor(Class<T> clazz, Class<?>... params) {
private GetDeclaredConstructor(Class<T> clazz, Class<?>... params) {
this.clazz = clazz;
this.params = params;
}

public Constructor<T> run() {
try {
return clazz.getDeclaredConstructor(params);
return clazz.getDeclaredConstructor( params );
}
catch ( NoSuchMethodException e ) {
return null;
Expand Down
Expand Up @@ -135,7 +135,7 @@ public static Set<ConstrainedExecutable> buildConstructorConstrainedExecutable(L
defaultPackage
);

final Constructor<?> constructor = ReflectionHelper.getConstructor(
final Constructor<?> constructor = ReflectionHelper.getDeclaredConstructor(
beanClass,
constructorParameterTypes.toArray( new Class[constructorParameterTypes.size()] )
);
Expand Down

0 comments on commit ec9db63

Please sign in to comment.