-
Notifications
You must be signed in to change notification settings - Fork 569
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HV-1623 Extract class-level metadata from property metadata case
- Loading branch information
1 parent
8d96d9b
commit c2b9432
Showing
5 changed files
with
164 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/ClassMetaData.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
/* | ||
* Hibernate Validator, declare and validate application constraints | ||
* | ||
* License: Apache License, Version 2.0 | ||
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. | ||
*/ | ||
package org.hibernate.validator.internal.metadata.aggregated; | ||
|
||
import java.util.List; | ||
import java.util.Set; | ||
|
||
import javax.validation.ElementKind; | ||
|
||
import org.hibernate.validator.internal.engine.valueextraction.ValueExtractorManager; | ||
import org.hibernate.validator.internal.metadata.core.ConstraintHelper; | ||
import org.hibernate.validator.internal.metadata.core.MetaConstraint; | ||
import org.hibernate.validator.internal.metadata.descriptor.ClassDescriptorImpl; | ||
import org.hibernate.validator.internal.metadata.raw.ConstrainedElement; | ||
import org.hibernate.validator.internal.metadata.raw.ConstrainedType; | ||
import org.hibernate.validator.internal.util.TypeResolutionHelper; | ||
|
||
/** | ||
* Represents the constraint related meta data for a type i.e. class-level | ||
* constraints. | ||
* | ||
* @author Gunnar Morling | ||
* @author Guillaume Smet | ||
* @author Marko Bekhta | ||
*/ | ||
public class ClassMetaData extends AbstractConstraintMetaData { | ||
|
||
private ClassMetaData(Class<?> beanClass, | ||
Set<MetaConstraint<?>> constraints, | ||
Set<MetaConstraint<?>> containerElementsConstraints) { | ||
super( | ||
beanClass.getSimpleName(), | ||
beanClass, | ||
constraints, | ||
containerElementsConstraints, | ||
false, | ||
!constraints.isEmpty() || !containerElementsConstraints.isEmpty() | ||
); | ||
} | ||
|
||
@Override | ||
public ClassDescriptorImpl asDescriptor(boolean defaultGroupSequenceRedefined, List<Class<?>> defaultGroupSequence) { | ||
return new ClassDescriptorImpl( | ||
getType(), | ||
asDescriptors( getDirectConstraints() ), | ||
defaultGroupSequenceRedefined, | ||
defaultGroupSequence | ||
); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append( getClass().getSimpleName() ).append( "[ " ); | ||
sb.append( "type=" ).append( getType() ); | ||
sb.append( "]" ); | ||
return sb.toString(); | ||
} | ||
|
||
@Override | ||
public ElementKind getKind() { | ||
return ElementKind.BEAN; | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return super.hashCode(); | ||
} | ||
|
||
@Override | ||
public boolean equals(Object obj) { | ||
if ( this == obj ) { | ||
return true; | ||
} | ||
if ( !super.equals( obj ) ) { | ||
return false; | ||
} | ||
if ( getClass() != obj.getClass() ) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
public static class Builder extends MetaDataBuilder { | ||
public Builder(Class<?> beanClass, ConstrainedType constrainedType, ConstraintHelper constraintHelper, TypeResolutionHelper typeResolutionHelper, | ||
ValueExtractorManager valueExtractorManager) { | ||
super( beanClass, constraintHelper, typeResolutionHelper, valueExtractorManager ); | ||
|
||
add( constrainedType ); | ||
} | ||
|
||
@Override | ||
public boolean accepts(ConstrainedElement constrainedElement) { | ||
return constrainedElement.getKind() == ConstrainedElement.ConstrainedElementKind.TYPE; | ||
} | ||
|
||
@Override | ||
public final void add(ConstrainedElement constrainedElement) { | ||
super.add( constrainedElement ); | ||
} | ||
|
||
@Override | ||
public ClassMetaData build() { | ||
return new ClassMetaData( | ||
getBeanClass(), | ||
adaptOriginsAndImplicitGroups( getDirectConstraints() ), | ||
adaptOriginsAndImplicitGroups( getContainerElementConstraints() ) | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
...c/main/java/org/hibernate/validator/internal/metadata/descriptor/ClassDescriptorImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/* | ||
* Hibernate Validator, declare and validate application constraints | ||
* | ||
* License: Apache License, Version 2.0 | ||
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. | ||
*/ | ||
package org.hibernate.validator.internal.metadata.descriptor; | ||
|
||
import java.lang.reflect.Type; | ||
import java.util.List; | ||
import java.util.Set; | ||
|
||
import javax.validation.metadata.ElementDescriptor; | ||
|
||
/** | ||
* Describes a validated type class-level constraints. | ||
* | ||
* @author Marko Bekhta | ||
*/ | ||
public class ClassDescriptorImpl extends ElementDescriptorImpl implements ElementDescriptor { | ||
|
||
public ClassDescriptorImpl(Type beanType, | ||
Set<ConstraintDescriptorImpl<?>> constraints, | ||
boolean defaultGroupSequenceRedefined, | ||
List<Class<?>> defaultGroupSequence) { | ||
super( beanType, constraints, defaultGroupSequenceRedefined, defaultGroupSequence ); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
final StringBuilder sb = new StringBuilder(); | ||
sb.append( getClass().getSimpleName() ); | ||
sb.append( "{beanType=" ).append( getElementClass() ); | ||
sb.append( '}' ); | ||
return sb.toString(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters