in tapestry-framework/src/org/apache/tapestry/util/MultiKey.java [101:148]
public boolean equals(Object other)
{
int i;
if (other == null)
return false;
if (keys == null)
throw new IllegalStateException(Tapestry.getMessage("MultiKey.no-keys"));
// Would a hashCode check be worthwhile here?
try
{
MultiKey otherMulti = (MultiKey) other;
if (keys.length != otherMulti.keys.length)
return false;
for (i = 0; i < keys.length; i++)
{
// On an exact match, continue. This means that null matches
// null.
if (keys[i] == otherMulti.keys[i])
continue;
// If either is null, but not both, then
// not a match.
if (keys[i] == null || otherMulti.keys[i] == null)
return false;
if (!keys[i].equals(otherMulti.keys[i]))
return false;
}
// Every key equal. A match.
return true;
}
catch (ClassCastException e)
{
}
return false;
}