org.hibernate.validator.internal.metadata.location.BeanConstraintLocation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bean-validator Show documentation
Show all versions of bean-validator Show documentation
JSR 380's RI, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or .
*/
package org.hibernate.validator.internal.metadata.location;
import java.lang.reflect.Member;
import java.lang.reflect.Type;
import org.hibernate.validator.internal.engine.path.PathImpl;
import org.hibernate.validator.internal.util.ExecutableParameterNameProvider;
import org.hibernate.validator.internal.util.TypeHelper;
/**
* Bean constraint location (i.e. for a class-level constraint).
*
* @author Hardy Ferentschik
* @author Gunnar Morling
*/
class BeanConstraintLocation implements ConstraintLocation {
/**
* The type hosting this location.
*/
private final Class declaringClass;
/**
* The type to be used for validator resolution for constraints at this location.
*/
private final Type typeForValidatorResolution;
BeanConstraintLocation(Class declaringClass) {
this.declaringClass = declaringClass;
// HV-623 - create a ParameterizedType in case the class has type parameters. Needed for constraint validator
// resolution (HF)
typeForValidatorResolution = declaringClass.getTypeParameters().length == 0 ?
declaringClass :
TypeHelper.parameterizedType( declaringClass, declaringClass.getTypeParameters() );
}
@Override
public Class getDeclaringClass() {
return declaringClass;
}
@Override
public Member getMember() {
return null;
}
@Override
public Type getTypeForValidatorResolution() {
return typeForValidatorResolution;
}
@Override
public void appendTo(ExecutableParameterNameProvider parameterNameProvider, PathImpl path) {
path.addBeanNode();
}
@Override
public Object getValue(Object parent) {
return parent;
}
@Override
public String toString() {
return "BeanConstraintLocation [declaringClass=" + declaringClass + ", typeForValidatorResolution=" + typeForValidatorResolution + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ( ( declaringClass == null ) ? 0 : declaringClass.hashCode() );
result = prime * result + ( ( typeForValidatorResolution == null ) ? 0 : typeForValidatorResolution.hashCode() );
return result;
}
@Override
public boolean equals(Object obj) {
if ( this == obj ) {
return true;
}
if ( obj == null ) {
return false;
}
if ( getClass() != obj.getClass() ) {
return false;
}
BeanConstraintLocation other = (BeanConstraintLocation) obj;
if ( declaringClass == null ) {
if ( other.declaringClass != null ) {
return false;
}
}
else if ( !declaringClass.equals( other.declaringClass ) ) {
return false;
}
if ( typeForValidatorResolution == null ) {
if ( other.typeForValidatorResolution != null ) {
return false;
}
}
else if ( !typeForValidatorResolution.equals( other.typeForValidatorResolution ) ) {
return false;
}
return true;
}
}