[jboss-jira] [JBoss JIRA] Created: (HIBERNATE-75) Wrong implementation of method retainAll in PersistentSet

Andrey Peristyy (JIRA) jira-events at lists.jboss.org
Thu Jan 31 08:34:00 EST 2008


Wrong implementation of method retainAll in PersistentSet
---------------------------------------------------------

                 Key: HIBERNATE-75
                 URL: http://jira.jboss.com/jira/browse/HIBERNATE-75
             Project: Hibernate
          Issue Type: Bug
            Reporter: Andrey Peristyy
         Assigned To: Steve Ebersole


The method from org.hibernate.collection.PersistentSet adds all elements from coll to the current set.  But it must retains only the elements in this set that are contained in the specified collection. As it stated in javadoc for java.util.Set.

Method from PersistentSet:
public boolean retainAll(Collection coll) {
		initialize( true );
		if ( set.addAll( coll ) ) {
			dirty();
			return true;
		}
		else {
			return false;
		}
	}

Correct implementation from java.util.AbstractCollection:
public boolean retainAll(Collection<?> c) {
	boolean modified = false;
	Iterator<E> e = iterator();
	while (e.hasNext()) {
	    if (!c.contains(e.next())) {
		e.remove();
		modified = true;
	    }
	}
	return modified;
    }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list