diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/BeanDescriptorImpl.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/BeanDescriptorImpl.java
index 5f57174b40..31f692b427 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/BeanDescriptorImpl.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/BeanDescriptorImpl.java
@@ -35,6 +35,8 @@
import static org.hibernate.validator.util.Contracts.assertNotNull;
/**
+ * Describes a validated bean.
+ *
* @author Emmanuel Bernard
* @author Hardy Ferentschik
* @author Gunnar Morling
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ConstraintDescriptorImpl.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ConstraintDescriptorImpl.java
index 12b946769b..619ab4686c 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ConstraintDescriptorImpl.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ConstraintDescriptorImpl.java
@@ -56,7 +56,7 @@
import static org.hibernate.validator.constraints.CompositionType.AND;
/**
- * Describe a single constraint (including it's composing constraints).
+ * Describes a single constraint (including it's composing constraints).
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/MethodDescriptorImpl.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/MethodDescriptorImpl.java
index 67057e4321..f09fc28c60 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/MethodDescriptorImpl.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/MethodDescriptorImpl.java
@@ -24,6 +24,8 @@
import org.hibernate.validator.method.metadata.ParameterDescriptor;
/**
+ * Describes a validated method.
+ *
* @author Gunnar Morling
*/
public class MethodDescriptorImpl extends ElementDescriptorImpl implements MethodDescriptor {
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ParameterDescriptorImpl.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ParameterDescriptorImpl.java
index 17d08eae80..f5bf97d608 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ParameterDescriptorImpl.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/ParameterDescriptorImpl.java
@@ -22,6 +22,8 @@
import org.hibernate.validator.method.metadata.ParameterDescriptor;
/**
+ * Describes a validated method parameter.
+ *
* @author Gunnar Morling
*/
public class ParameterDescriptorImpl extends ElementDescriptorImpl implements ParameterDescriptor {
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/PropertyDescriptorImpl.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/PropertyDescriptorImpl.java
index 9a316fcf68..d8b7a280c2 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/PropertyDescriptorImpl.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/PropertyDescriptorImpl.java
@@ -21,7 +21,7 @@
import javax.validation.metadata.PropertyDescriptor;
/**
- * Describes a validated element (class, field or property).
+ * Describes a validated property.
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/package.html b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/package.html
new file mode 100644
index 0000000000..da63753051
--- /dev/null
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/descriptor/package.html
@@ -0,0 +1,30 @@
+
+
+
+
+Implementation of the Bean Validation meta data API and its Hibernate Validator specific extension for the
+ representation of method level constraints.
+
+
+The types in this package are generally immutable. Also any collections returned from methods in this package are
+ unmodifiable and an exception will be thrown when trying to alter them.
+
+
+
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/AnnotationMetaDataProvider.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/AnnotationMetaDataProvider.java
index ae78b2295f..21700889f8 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/AnnotationMetaDataProvider.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/AnnotationMetaDataProvider.java
@@ -31,13 +31,15 @@
import javax.validation.GroupSequence;
import javax.validation.Valid;
-import org.hibernate.validator.metadata.core.MetaConstraint;
import org.hibernate.validator.group.DefaultGroupSequenceProvider;
import org.hibernate.validator.group.GroupSequenceProvider;
import org.hibernate.validator.metadata.core.AnnotationIgnores;
+import org.hibernate.validator.metadata.core.ConstraintHelper;
import org.hibernate.validator.metadata.core.ConstraintOrigin;
+import org.hibernate.validator.metadata.core.MetaConstraint;
import org.hibernate.validator.metadata.descriptor.ConstraintDescriptorImpl;
-import org.hibernate.validator.metadata.core.ConstraintHelper;
+import org.hibernate.validator.metadata.location.BeanConstraintLocation;
+import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.metadata.raw.BeanConfiguration;
import org.hibernate.validator.metadata.raw.ConfigurationSource;
import org.hibernate.validator.metadata.raw.ConstrainedElement;
@@ -45,8 +47,6 @@
import org.hibernate.validator.metadata.raw.ConstrainedMethod;
import org.hibernate.validator.metadata.raw.ConstrainedParameter;
import org.hibernate.validator.metadata.raw.ConstrainedType;
-import org.hibernate.validator.metadata.location.BeanConstraintLocation;
-import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.util.ReflectionHelper;
import static org.hibernate.validator.util.CollectionHelper.newArrayList;
@@ -101,8 +101,8 @@ private BeanConfiguration> retrieveBeanConfiguration(Class> beanClass) {
ConstrainedType classLevelMetaData =
new ConstrainedType(
ConfigurationSource.ANNOTATION,
- classLevelConstraints,
- new BeanConstraintLocation( beanClass )
+ new BeanConstraintLocation( beanClass ),
+ classLevelConstraints
);
propertyMetaData.add( classLevelMetaData );
}
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProvider.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProvider.java
index c5cf357ec8..88694f851f 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProvider.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProvider.java
@@ -36,9 +36,32 @@
* @author Gunnar Morling
*/
public interface MetaDataProvider {
+
+ /**
+ * Returns a set with all bean configurations by this provider.
+ *
+ * @return a set with all bean configurations by this provider. May be
+ * empty, but never null
.
+ */
Set> getAllBeanConfigurations();
+ /**
+ * Returns the annotation processing options as configured by this provider.
+ *
+ * @return The annotation processing options as configured by this provider.
+ */
AnnotationIgnores getAnnotationIgnores();
+ /**
+ * Returns a set with the configurations for all types contained in the
+ * given type's hierarchy (including implemented interfaces) as configured
+ * by this provider.
+ *
+ * @param beanClass The type of interest.
+ *
+ * @return A set with the configurations for the complete hierarchy of the
+ * given type. May be empty, but never null
.
+ */
Set> getBeanConfigurationForHierarchy(Class> beanClass);
+
}
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProviderImplBase.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProviderImplBase.java
index 10fe83b125..42338cfeac 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProviderImplBase.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/MetaDataProviderImplBase.java
@@ -24,10 +24,10 @@
import org.hibernate.validator.cfg.context.impl.ConfiguredConstraint;
import org.hibernate.validator.group.DefaultGroupSequenceProvider;
import org.hibernate.validator.metadata.core.ConstraintHelper;
+import org.hibernate.validator.metadata.location.BeanConstraintLocation;
import org.hibernate.validator.metadata.raw.BeanConfiguration;
import org.hibernate.validator.metadata.raw.ConfigurationSource;
import org.hibernate.validator.metadata.raw.ConstrainedElement;
-import org.hibernate.validator.metadata.location.BeanConstraintLocation;
import org.hibernate.validator.util.CollectionHelper.Partitioner;
import org.hibernate.validator.util.ReflectionHelper;
@@ -35,6 +35,8 @@
import static org.hibernate.validator.util.CollectionHelper.newHashSet;
/**
+ * Base implementation for all {@link MetaDataProvider}s.
+ *
* @author Gunnar Morling
*/
public abstract class MetaDataProviderImplBase implements MetaDataProvider {
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/ProgrammaticMappingMetaDataProvider.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/ProgrammaticMappingMetaDataProvider.java
index 8e23fdd35d..a4e4519a64 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/ProgrammaticMappingMetaDataProvider.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/ProgrammaticMappingMetaDataProvider.java
@@ -28,20 +28,20 @@
import org.hibernate.validator.cfg.ConstraintMapping;
import org.hibernate.validator.cfg.context.impl.ConfiguredConstraint;
import org.hibernate.validator.cfg.context.impl.ConstraintMappingContext;
-import org.hibernate.validator.metadata.core.MetaConstraint;
import org.hibernate.validator.metadata.core.AnnotationIgnores;
+import org.hibernate.validator.metadata.core.ConstraintHelper;
import org.hibernate.validator.metadata.core.ConstraintOrigin;
+import org.hibernate.validator.metadata.core.MetaConstraint;
import org.hibernate.validator.metadata.descriptor.ConstraintDescriptorImpl;
-import org.hibernate.validator.metadata.core.ConstraintHelper;
+import org.hibernate.validator.metadata.location.BeanConstraintLocation;
+import org.hibernate.validator.metadata.location.ConstraintLocation;
+import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.metadata.raw.ConfigurationSource;
import org.hibernate.validator.metadata.raw.ConstrainedElement;
import org.hibernate.validator.metadata.raw.ConstrainedField;
import org.hibernate.validator.metadata.raw.ConstrainedMethod;
import org.hibernate.validator.metadata.raw.ConstrainedParameter;
import org.hibernate.validator.metadata.raw.ConstrainedType;
-import org.hibernate.validator.metadata.location.BeanConstraintLocation;
-import org.hibernate.validator.metadata.location.ConstraintLocation;
-import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.util.CollectionHelper.Partitioner;
import static org.hibernate.validator.util.CollectionHelper.newArrayList;
@@ -136,8 +136,8 @@ private Set retrievePropertyMetaData(
allPropertyMetaData.add(
new ConstrainedType(
ConfigurationSource.API,
- asMetaConstraints( constraintsByLocation.get( oneConfiguredProperty ) ),
- oneConfiguredProperty
+ oneConfiguredProperty,
+ asMetaConstraints( constraintsByLocation.get( oneConfiguredProperty ) )
)
);
}
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/XmlConfigurationMetaDataProvider.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/XmlConfigurationMetaDataProvider.java
index 66ddf44da5..85deefd157 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/XmlConfigurationMetaDataProvider.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/provider/XmlConfigurationMetaDataProvider.java
@@ -27,14 +27,14 @@
import org.hibernate.validator.metadata.core.AnnotationIgnores;
import org.hibernate.validator.metadata.core.ConstraintHelper;
import org.hibernate.validator.metadata.core.MetaConstraint;
+import org.hibernate.validator.metadata.location.BeanConstraintLocation;
+import org.hibernate.validator.metadata.location.ConstraintLocation;
+import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.metadata.raw.ConfigurationSource;
import org.hibernate.validator.metadata.raw.ConstrainedElement;
import org.hibernate.validator.metadata.raw.ConstrainedField;
import org.hibernate.validator.metadata.raw.ConstrainedMethod;
import org.hibernate.validator.metadata.raw.ConstrainedType;
-import org.hibernate.validator.metadata.location.BeanConstraintLocation;
-import org.hibernate.validator.metadata.location.ConstraintLocation;
-import org.hibernate.validator.metadata.location.MethodConstraintLocation;
import org.hibernate.validator.util.CollectionHelper.Partitioner;
import org.hibernate.validator.xml.XmlMappingParser;
@@ -117,8 +117,8 @@ else if ( oneConfiguredLocation.getElementType() == ElementType.TYPE ) {
propertyMetaData.add(
new ConstrainedType(
ConfigurationSource.XML,
- constraintsByLocation.get( oneConfiguredLocation ),
- (BeanConstraintLocation) oneConfiguredLocation
+ (BeanConstraintLocation) oneConfiguredLocation,
+ constraintsByLocation.get( oneConfiguredLocation )
)
);
}
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/AbstractConstrainedElement.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/AbstractConstrainedElement.java
index a37b5a26c9..ee347acae4 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/AbstractConstrainedElement.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/AbstractConstrainedElement.java
@@ -24,6 +24,8 @@
import org.hibernate.validator.metadata.location.ConstraintLocation;
/**
+ * Base implementation with functionality common to all {@link ConstrainedElement} implementations.
+ *
* @author Gunnar Morling
*/
public abstract class AbstractConstrainedElement implements ConstrainedElement {
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/BeanConfiguration.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/BeanConfiguration.java
index 3dea3cc63f..f1dbbed7ca 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/BeanConfiguration.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/BeanConfiguration.java
@@ -24,8 +24,10 @@
import static org.hibernate.validator.util.CollectionHelper.newHashSet;
/**
- * Represents the constraint related configuration of one Java type originating
- * from one {@link ConfigurationSource}.
+ * Represents the complete constraint related configuration of one Java type
+ * originating from one {@link ConfigurationSource}. Contains meta-data on
+ * constraints (field, method and class level) as well as meta data on default
+ * group sequences.
*
* @author Gunnar Morling
*/
@@ -42,11 +44,16 @@ public class BeanConfiguration {
private final Class extends DefaultGroupSequenceProvider>> defaultGroupSequenceProvider;
/**
- * @param source
- * @param beanClass
- * @param constrainedElements
- * @param defaultGroupSequence
- * @param defaultGroupSequenceProvider
+ * Creates a new bean configuration.
+ *
+ * @param source The source of this configuration.
+ * @param beanClass The type represented by this configuration.
+ * @param constrainedElements The constraint elements representing this type's fields,
+ * methods etc.
+ * @param defaultGroupSequence The default group sequence for the given type as configured by
+ * the given configuration source.
+ * @param defaultGroupSequenceProvider The default group sequence provider for the given type as
+ * configured by the given configuration source.
*/
public BeanConfiguration(
ConfigurationSource source,
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedElement.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedElement.java
index 984a717d2a..a3dd2ed863 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedElement.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedElement.java
@@ -59,10 +59,27 @@ public enum ConstrainedElementKind {
TYPE, FIELD, METHOD, PARAMETER;
}
+ /**
+ * Returns the kind of this constrained element.
+ *
+ * @return The kind of this constrained element.
+ */
ConstrainedElementKind getConstrainedElementKind();
+ /**
+ * Returns the location of this constrained element.
+ *
+ * @return The location of this constrained element.
+ */
ConstraintLocation getLocation();
+ /**
+ * Returns a set containing the constraints specified for this constrained
+ * element.
+ *
+ * @return A set with this constrained element's constraints. May be empty,
+ * but never null
.
+ */
Set> getConstraints();
/**
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedField.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedField.java
index 6853a37e56..b412c7f427 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedField.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedField.java
@@ -24,14 +24,21 @@
import org.hibernate.validator.util.ReflectionHelper;
/**
+ * Represents a field of a Java type and all its associated meta-data relevant
+ * in the context of bean validation, for instance its constraints.
+ *
* @author Gunnar Morling
*/
public class ConstrainedField extends AbstractConstrainedElement {
/**
- * @param location
- * @param constraints
- * @param isCascading
+ * Creates a new field meta data object.
+ *
+ * @param source The source of meta data.
+ * @param location The location of the represented field.
+ * @param constraints The constraints of the represented field, if any.
+ * @param isCascading Whether a cascaded validation of the represented field shall
+ * be performed or not.
*/
public ConstrainedField(ConfigurationSource source, BeanConstraintLocation location, Set> constraints,
boolean isCascading) {
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedMethod.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedMethod.java
index f3c271f1f9..96b8e8cd50 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedMethod.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedMethod.java
@@ -41,6 +41,16 @@ public class ConstrainedMethod extends AbstractConstrainedElement {
private final boolean hasParameterConstraints;
+ /**
+ * Creates a new method meta data object for a parameter-less method.
+ *
+ * @param source The source of meta data.
+ * @param location The location of the represented method.
+ * @param returnValueConstraints The return value constraints of the represented method, if
+ * any.
+ * @param isCascading Whether a cascaded validation of the represented method's
+ * return value shall be performed or not.
+ */
public ConstrainedMethod(
ConfigurationSource source,
MethodConstraintLocation location,
@@ -59,11 +69,12 @@ public ConstrainedMethod(
/**
* Creates a new method meta data object.
*
- * @param method The method to represent.
+ * @param source The source of meta data.
+ * @param location The location of the represented method.
* @param parameterMetaData A list with parameter meta data. The length must correspond
* with the number of parameters of the represented method. So
- * this list may be empty returned (in case of a parameterless
- * method), but never null
.
+ * this list may be empty (in case of a parameterless method),
+ * but never null
.
* @param returnValueConstraints The return value constraints of the represented method, if
* any.
* @param isCascading Whether a cascaded validation of the represented method's
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedParameter.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedParameter.java
index 676336ca9a..43a8a21c95 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedParameter.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedParameter.java
@@ -30,6 +30,17 @@ public class ConstrainedParameter extends AbstractConstrainedElement {
private final String name;
+ /**
+ * Creates a new parameter meta data object.
+ *
+ * @param source The source of meta data.
+ * @param location The location of the represented method parameter.
+ * @param name The name of the represented parameter.
+ * @param constraints The constraints of the represented method parameter, if
+ * any.
+ * @param isCascading Whether a cascaded validation of the represented method
+ * parameter shall be performed or not.
+ */
public ConstrainedParameter(ConfigurationSource source, MethodConstraintLocation location, String name, Set> constraints, boolean isCascading) {
super( source, ConstrainedElementKind.PARAMETER, location, constraints, isCascading );
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedType.java b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedType.java
index 053bffe111..0e0515ab31 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedType.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/metadata/raw/ConstrainedType.java
@@ -22,15 +22,22 @@
import org.hibernate.validator.metadata.location.BeanConstraintLocation;
/**
+ * Represents a Java type and all its associated meta-data relevant in the
+ * context of bean validation, for instance its constraints. Only class level
+ * meta-data is represented by this type, but not meta-data for any members.
+ *
* @author Gunnar Morling
*/
public class ConstrainedType extends AbstractConstrainedElement {
/**
- * @param constraints
- * @param location
+ * Creates a new type meta data object.
+ *
+ * @param source The source of meta data.
+ * @param location The location of the represented type.
+ * @param constraints The constraints of the represented type, if any.
*/
- public ConstrainedType(ConfigurationSource source, Set> constraints, BeanConstraintLocation location) {
+ public ConstrainedType(ConfigurationSource source, BeanConstraintLocation location, Set> constraints) {
super( source, ConstrainedElementKind.TYPE, location, constraints, false );
}