[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