Author: niclas Date: Thu Jul 29 01:31:19 2004 New Revision: 30915 Modified: avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/parameters/Parameters.java Log: Added the equals() / hashCode() in Parameters, awaiting the debate of whether this should be present at all.
Modified: avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/parameters/Parameters.java ============================================================================== --- avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/parameters/Parameters.java (original) +++ avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/parameters/Parameters.java Thu Jul 29 01:31:19 2004 @@ -535,6 +535,56 @@ m_readOnly = true; } + /** + * Compare this parameters instance with the supplied object for equality. + * + * The equality is mainly driven by the underlying HashMap which forms the + * basis of the class. I.e. if the underlying HashMaps are equal and the + * Readonly attributes are equal in the Parameters instances being compared, + * then this method returns equality. + * + * @param other the object to compare this parameters instance with + * + * @since 4.3 + * + * @return true if this parameters instance is equal to the supplied object + */ + public boolean equals( Object other ) + { + if( null == other ) + return false; + + if( !( other instanceof Parameters ) ) + return false; + + Parameters p = (Parameters) other; + if( m_readOnly != p.m_readOnly ) + return false; + return m_parameters.equals( p.m_parameters ); + } + + /** + * Returns a hashed value of the Parameters instance. + * + * This method returns a semi-unique value for all instances, yet an + * identical value for instances where equals() returns true. + * + * @since 4.3 + * + * @return a hashed value of the instance + */ + public int hashCode() + { + int hash = m_parameters.hashCode(); + hash >>>= ( m_readOnly ) ? 7 : 13; + return hash; + } + + public String toString() + { + return "Parameters[" + ( m_readOnly ? "r/o]" : "r/w]:" ) + m_parameters; + } + /** * Checks is this <code>Parameters</code> object is writeable. * --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]