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> 2005-04-01 Thomas Fitzsimmons <fitzsim@redhat.com>
PR libgcj/20090, PR libgcj/20526 PR libgcj/20090, PR libgcj/20526

View file

@ -1,5 +1,5 @@
/* BasicAttributes.java -- /* 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. This file is part of GNU Classpath.
@ -83,19 +83,27 @@ public class BasicAttributes implements Attributes
return ba; 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) public boolean equals (Object obj)
{ {
if (! (obj instanceof BasicAttributes)) if (! (obj instanceof Attributes))
return false;
BasicAttributes b = (BasicAttributes) obj;
if (ignoreCase != b.ignoreCase
|| attributes.size () != b.attributes.size ())
return false; return false;
// Does order matter? Attributes bs = (Attributes) obj;
for (int i = 0; i < attributes.size (); ++i) 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; return false;
} }
@ -191,7 +199,7 @@ public class BasicAttributes implements Attributes
// Used when enumerating. // Used when enumerating.
private class BasicAttributesEnumeration implements NamingEnumeration private class BasicAttributesEnumeration implements NamingEnumeration
{ {
int where = -1; int where = 0;
boolean id; boolean id;
public BasicAttributesEnumeration (boolean id) public BasicAttributesEnumeration (boolean id)
@ -220,10 +228,10 @@ public class BasicAttributes implements Attributes
public Object nextElement () throws NoSuchElementException public Object nextElement () throws NoSuchElementException
{ {
if (where + 1 >= attributes.size ()) if (where >= attributes.size ())
throw new NoSuchElementException ("no more elements"); throw new NoSuchElementException ("no more elements");
++where;
Attribute at = (Attribute) attributes.get (where); Attribute at = (Attribute) attributes.get (where);
++where;
return id ? (Object) at.getID () : (Object) at; return id ? (Object) at.getID () : (Object) at;
} }
} }