package org.hibernate.validator.internal.engine.valueextraction;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedArrayType;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import org.hibernate.validator.internal.util.ReflectionHelper;
public class implements TypeVariable<Class<?>> {
private final Class<?> ;
public (AnnotatedArrayType annotatedArrayType) {
Type arrayElementType = annotatedArrayType.getAnnotatedGenericComponentType().getType();
if ( arrayElementType == boolean.class ) {
containerClass = boolean[].class;
}
else if ( arrayElementType == int.class ) {
containerClass = int[].class;
}
else if ( arrayElementType == long.class ) {
containerClass = long[].class;
}
else if ( arrayElementType == double.class ) {
containerClass = double[].class;
}
else if ( arrayElementType == float.class ) {
containerClass = float[].class;
}
else if ( arrayElementType == byte.class ) {
containerClass = byte[].class;
}
else if ( arrayElementType == short.class ) {
containerClass = short[].class;
}
else if ( arrayElementType == char.class ) {
containerClass = char[].class;
}
else {
containerClass = Object[].class;
}
}
public (Type arrayType) {
Class<?> arrayClass = ReflectionHelper.getClassFromType( arrayType );
if ( arrayClass.getComponentType().isPrimitive() ) {
this.containerClass = arrayClass;
}
else {
this.containerClass = Object[].class;
}
}
@Override
public <T extends Annotation> T (Class<T> annotationClass) {
throw new UnsupportedOperationException();
}
@Override
public Annotation[] () {
throw new UnsupportedOperationException();
}
@Override
public Annotation[] () {
throw new UnsupportedOperationException();
}
@Override
public Type[] () {
throw new UnsupportedOperationException();
}
@Override
public Class<?> () {
throw new UnsupportedOperationException();
}
@Override
public String () {
throw new UnsupportedOperationException();
}
@Override
public AnnotatedType[] () {
throw new UnsupportedOperationException();
}
public Class<?> () {
return containerClass;
}
@Override
public boolean (Object obj) {
if ( this == obj ) {
return true;
}
if ( obj == null ) {
return false;
}
if ( getClass() != obj.getClass() ) {
return false;
}
ArrayElement other = (ArrayElement) obj;
return this.containerClass.equals( other.containerClass );
}
@Override
public int () {
final int prime = 31;
int result = 1;
result = prime * result + containerClass.hashCode();
return result;
}
@Override
public String () {
StringBuilder sb = new StringBuilder();
sb.append( getClass().getSimpleName() )
.append( "<" )
.append( containerClass )
.append( ">" );
return sb.toString();
}
}