BasicAttributes.java (equals): Compare to any Attributes and attribute order doesn't matter.

2005-04-02  Mark Wielaard  <mark@klomp.org>

	* javax/naming/directory/BasicAttributes.java (equals): Compare to any
	Attributes and attribute order doesn't matter.
	(BasicAttributesEnumeration.where): Initialize to zero.
	(BasicAttributesEnumeration.nextElement): Update and compare where
	appropriately (zero based).

From-SVN: r97461
This commit is contained in:
Mark Wielaard 2005-04-02 21:03:33 +00:00 committed by Michael Koch
parent 43849cfae4
commit d380cf18ca
2 changed files with 28 additions and 12 deletions

View file

@ -1,3 +1,11 @@
2005-04-02 Mark Wielaard <mark@klomp.org>
* javax/naming/directory/BasicAttributes.java (equals): Compare to any
Attributes and attribute order doesn't matter.
(BasicAttributesEnumeration.where): Initialize to zero.
(BasicAttributesEnumeration.nextElement): Update and compare where
appropriately (zero based).
2005-04-01 Thomas Fitzsimmons <fitzsim@redhat.com>
PR libgcj/20090, PR libgcj/20526

View file

@ -1,5 +1,5 @@
/* BasicAttributes.java --
Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -83,19 +83,27 @@ public class BasicAttributes implements Attributes
return ba;
}
/**
* Returns true if and only if the given Object is an instance of
* Attributes, the given attributes both do or don't ignore case for
* IDs and the collection of attributes is the same.
*/
public boolean equals (Object obj)
{
if (! (obj instanceof BasicAttributes))
return false;
BasicAttributes b = (BasicAttributes) obj;
if (ignoreCase != b.ignoreCase
|| attributes.size () != b.attributes.size ())
if (! (obj instanceof Attributes))
return false;
// Does order matter?
for (int i = 0; i < attributes.size (); ++i)
Attributes bs = (Attributes) obj;
if (ignoreCase != bs.isCaseIgnored()
|| attributes.size () != bs.size ())
return false;
NamingEnumeration bas = bs.getAll();
while (bas.hasMoreElements())
{
if (! attributes.get (i).equals (b.attributes.get (i)))
Attribute a = (Attribute) bas.nextElement();
Attribute b = get(a.getID ());
if (! a.equals(b))
return false;
}
@ -191,7 +199,7 @@ public class BasicAttributes implements Attributes
// Used when enumerating.
private class BasicAttributesEnumeration implements NamingEnumeration
{
int where = -1;
int where = 0;
boolean id;
public BasicAttributesEnumeration (boolean id)
@ -220,10 +228,10 @@ public class BasicAttributes implements Attributes
public Object nextElement () throws NoSuchElementException
{
if (where + 1 >= attributes.size ())
if (where >= attributes.size ())
throw new NoSuchElementException ("no more elements");
++where;
Attribute at = (Attribute) attributes.get (where);
++where;
return id ? (Object) at.getID () : (Object) at;
}
}