[hibernate-commits] Hibernate SVN: r17107 - in validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation: metadata and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Jul 16 10:00:06 EDT 2009
Author: hardy.ferentschik
Date: 2009-07-16 10:00:06 -0400 (Thu, 16 Jul 2009)
New Revision: 17107
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/groups/GroupChain.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ElementDescriptorImpl.java
Log:
A first cut at HV-176
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/groups/GroupChain.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/groups/GroupChain.java 2009-07-16 11:09:58 UTC (rev 17106)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/groups/GroupChain.java 2009-07-16 14:00:06 UTC (rev 17107)
@@ -19,9 +19,11 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.validation.GroupDefinitionException;
import javax.validation.groups.Default;
@@ -51,6 +53,15 @@
return sequenceMap.values().iterator();
}
+ public Iterator<Group> getAllGroupsUnordered() {
+ Set<Group> allGroups = new HashSet<Group>();
+ allGroups.addAll( groupList );
+ for ( List<Group> sequenceList : sequenceMap.values() ) {
+ allGroups.addAll( sequenceList );
+ }
+ return allGroups.iterator();
+ }
+
public boolean containsSequence(Class<?> groupSequence) {
return sequenceMap.containsKey( groupSequence );
}
@@ -94,7 +105,7 @@
private void ensureDefaultGroupSequenceIsExpandable(List<Group> groupList, List<Group> defaultGroupList, int defaultGroupIndex) {
for ( int i = 0; i < defaultGroupList.size(); i++ ) {
Group group = defaultGroupList.get( i );
- if(group.getGroup().equals( Default.class )) {
+ if ( group.getGroup().equals( Default.class ) ) {
continue; // we don't have to consider the default group since it is the one we want to replace
}
int index = groupList.indexOf( group ); // check whether the sequence contains group of the default group sequence
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ElementDescriptorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ElementDescriptorImpl.java 2009-07-16 11:09:58 UTC (rev 17106)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ElementDescriptorImpl.java 2009-07-16 14:00:06 UTC (rev 17107)
@@ -17,12 +17,18 @@
*/
package org.hibernate.validation.metadata;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import javax.validation.metadata.ConstraintDescriptor;
import javax.validation.metadata.ElementDescriptor;
+import org.hibernate.validation.engine.groups.Group;
+import org.hibernate.validation.engine.groups.GroupChain;
+import org.hibernate.validation.engine.groups.GroupChainGenerator;
+
/**
* Describe a validated element (class, field or property).
*
@@ -41,31 +47,34 @@
constraintDescriptors.add( constraintDescriptor );
}
- /**
- * {@inheritDoc}
- */
public boolean hasConstraints() {
return constraintDescriptors.size() != 0;
}
- /**
- * {@inheritDoc}
- */
public Class<?> getElementClass() {
return type;
}
- /**
- * {@inheritDoc}
- */
public Set<ConstraintDescriptor<?>> getConstraintDescriptors() {
return Collections.unmodifiableSet( constraintDescriptors );
}
- /**
- * {@inheritDoc}
- */
public Set<ConstraintDescriptor<?>> getUnorderdConstraintDescriptorsMatchingGroups(Class<?>... groups) {
- throw new UnsupportedOperationException( "Not yet implemented HV-176");
+ Set<ConstraintDescriptor<?>> matchingDescriptors = new HashSet<ConstraintDescriptor<?>>();
+ GroupChain groupChain = new GroupChainGenerator().getGroupChainFor( Arrays.asList( groups ) );
+ Iterator<Group> groupIterator = groupChain.getGroupIterator();
+ while ( groupIterator.hasNext() ) {
+ Group g = groupIterator.next();
+ addMatchingDescriptorsForGroup( g.getGroup(), matchingDescriptors );
+ }
+ return Collections.unmodifiableSet( matchingDescriptors );
}
+
+ private void addMatchingDescriptorsForGroup(Class<?> group, Set<ConstraintDescriptor<?>> matchingDescriptors) {
+ for ( ConstraintDescriptor<?> descriptor : constraintDescriptors ) {
+ if ( descriptor.getGroups().contains( group ) ) {
+ matchingDescriptors.add( descriptor );
+ }
+ }
+ }
}
More information about the hibernate-commits
mailing list