Skip to content

Commit

Permalink
HV-1623 Reduce the memory footprint of the new reflection abstraction
Browse files Browse the repository at this point in the history
  • Loading branch information
gsmet committed Jun 11, 2018
1 parent 8130f39 commit c0bc36a
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 28 deletions.
Expand Up @@ -424,7 +424,7 @@ private List<ConstrainedParameter> getParameterMetaData(JavaBeanExecutable<?> ja
}
}

Set<MetaConstraint<?>> typeArgumentsConstraints = findTypeAnnotationConstraintsForExecutableParameter( parameter );
Set<MetaConstraint<?>> typeArgumentsConstraints = findTypeAnnotationConstraintsForExecutableParameter( javaBeanExecutable, parameter );
CascadingMetaDataBuilder cascadingMetaData = findCascadingMetaData( parameter );

metaData.add(
Expand Down Expand Up @@ -691,11 +691,12 @@ else if ( annotatedType instanceof AnnotatedParameterizedType ) {
*
* @return a set of type arguments constraints, or an empty set if no constrained type arguments are found
*/
protected Set<MetaConstraint<?>> findTypeAnnotationConstraintsForExecutableParameter(JavaBeanParameter javaBeanParameter) {
protected Set<MetaConstraint<?>> findTypeAnnotationConstraintsForExecutableParameter(JavaBeanExecutable<?> javaBeanExecutable,
JavaBeanParameter javaBeanParameter) {
try {
return findTypeArgumentsConstraints(
javaBeanParameter.getExecutable(),
new TypeArgumentExecutableParameterLocation( javaBeanParameter.getExecutable(), javaBeanParameter.getIndex() ),
javaBeanExecutable,
new TypeArgumentExecutableParameterLocation( javaBeanExecutable, javaBeanParameter.getIndex() ),
javaBeanParameter.getAnnotatedType()
);
}
Expand Down
Expand Up @@ -34,14 +34,12 @@ public abstract class JavaBeanExecutable<T extends Executable> implements Callab

protected final T executable;
private final Type typeForValidatorResolution;
private final String name;
private final boolean hasReturnValue;
private final Type type;
private final List<JavaBeanParameter> parameters;

JavaBeanExecutable(T executable, boolean hasReturnValue) {
this.executable = executable;
this.name = executable.getName();
this.type = ReflectionHelper.typeOf( executable );
this.typeForValidatorResolution = ReflectionHelper.boxedType( type );
this.hasReturnValue = hasReturnValue;
Expand All @@ -54,7 +52,7 @@ public abstract class JavaBeanExecutable<T extends Executable> implements Callab
Type[] genericParameterTypes = executable.getGenericParameterTypes();

for ( int i = 0; i < parameterArray.length; i++ ) {
parameters.add( new JavaBeanParameter( this, i, parameterArray[i], parameterTypes[i],
parameters.add( new JavaBeanParameter( i, parameterArray[i], parameterTypes[i],
getParameterGenericType( parameterTypes, genericParameterTypes, i ) ) );
}
this.parameters = CollectionHelper.toImmutableList( parameters );
Expand Down Expand Up @@ -92,7 +90,7 @@ public boolean hasParameters() {

@Override
public String getName() {
return name;
return executable.getName();
}

@Override
Expand Down Expand Up @@ -194,17 +192,13 @@ public boolean equals(Object o) {
if ( !this.typeForValidatorResolution.equals( that.typeForValidatorResolution ) ) {
return false;
}
if ( !this.name.equals( that.name ) ) {
return false;
}
return this.type.equals( that.type );
}

@Override
public int hashCode() {
int result = this.executable.hashCode();
result = 31 * result + this.typeForValidatorResolution.hashCode();
result = 31 * result + this.name.hashCode();
result = 31 * result + ( this.hasReturnValue ? 1 : 0 );
result = 31 * result + this.type.hashCode();
return result;
Expand All @@ -213,7 +207,7 @@ public int hashCode() {
@Override
public String toString() {
return ExecutableHelper.getExecutableAsString(
getDeclaringClass().getSimpleName() + "#" + name,
getDeclaringClass().getSimpleName() + "#" + executable.getName(),
executable.getParameterTypes()
);
}
Expand Down
Expand Up @@ -25,20 +25,18 @@
public class JavaBeanField implements org.hibernate.validator.internal.properties.Field, JavaBeanAnnotatedConstrainable {

private final Field field;
private final String name;
private final Type typeForValidatorResolution;
private final Type type;

public JavaBeanField(Field field) {
this.field = field;
this.name = field.getName();
this.type = ReflectionHelper.typeOf( field );
this.typeForValidatorResolution = ReflectionHelper.boxedType( this.type );
}

@Override
public String getName() {
return name;
return field.getName();
}

@Override
Expand Down Expand Up @@ -105,9 +103,6 @@ public boolean equals(Object o) {
if ( !this.field.equals( that.field ) ) {
return false;
}
if ( !this.name.equals( that.name ) ) {
return false;
}
if ( !this.typeForValidatorResolution.equals( that.typeForValidatorResolution ) ) {
return false;
}
Expand All @@ -117,7 +112,6 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
int result = this.field.hashCode();
result = 31 * result + this.name.hashCode();
result = 31 * result + this.typeForValidatorResolution.hashCode();
result = 31 * result + this.type.hashCode();
return result;
Expand Down
Expand Up @@ -17,8 +17,6 @@
*/
public class JavaBeanParameter implements JavaBeanAnnotatedElement {

private final JavaBeanExecutable<?> executable;

private final int index;

private final Parameter parameter;
Expand All @@ -27,18 +25,13 @@ public class JavaBeanParameter implements JavaBeanAnnotatedElement {

private final Type genericType;

JavaBeanParameter(JavaBeanExecutable<?> executable, int index, Parameter parameter, Class<?> type, Type genericType) {
this.executable = executable;
JavaBeanParameter(int index, Parameter parameter, Class<?> type, Type genericType) {
this.index = index;
this.parameter = parameter;
this.type = type;
this.genericType = genericType;
}

public JavaBeanExecutable<?> getExecutable() {
return executable;
}

public int getIndex() {
return index;
}
Expand Down

0 comments on commit c0bc36a

Please sign in to comment.