diff -r 40d3416d937a -r 55c9c5a88bde jdk/src/share/classes/javax/management/ImmutableDescriptor.java --- a/jdk/src/share/classes/javax/management/ImmutableDescriptor.java Mon Jul 28 12:37:52 2008 -0700 +++ b/jdk/src/share/classes/javax/management/ImmutableDescriptor.java Tue Jul 29 19:21:59 2008 +0200 @@ -1,5 +1,5 @@ /* - * Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2004-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package javax.management; +import com.sun.jmx.mbeanserver.Util; import java.io.InvalidObjectException; import java.lang.reflect.Array; import java.util.Arrays; @@ -362,6 +363,7 @@ */ // Note: this Javadoc is copied from javax.management.Descriptor // due to 6369229. + @Override public boolean equals(Object o) { if (o == this) return true; @@ -410,29 +412,15 @@ */ // Note: this Javadoc is copied from javax.management.Descriptor // due to 6369229. + @Override public int hashCode() { if (hashCode == -1) { - int hash = 0; - for (int i = 0; i < names.length; i++) { - Object v = values[i]; - int h; - if (v == null) - h = 0; - else if (v instanceof Object[]) - h = Arrays.deepHashCode((Object[]) v); - else if (v.getClass().isArray()) { - h = Arrays.deepHashCode(new Object[] {v}) - 31; - // hashcode of a list containing just v is - // v.hashCode() + 31, see List.hashCode() - } else - h = v.hashCode(); - hash += names[i].toLowerCase().hashCode() ^ h; - } - hashCode = hash; + hashCode = Util.hashCode(names, values); } return hashCode; } + @Override public String toString() { StringBuilder sb = new StringBuilder("{"); for (int i = 0; i < names.length; i++) { @@ -479,6 +467,7 @@ * If the descriptor construction fails for any reason, this exception will * be thrown. */ + @Override public Descriptor clone() { return this; }