+2003-12-02 Dalibor Topic <robilad@kaffe.org>
+
+ Reported by: Jim Pick <jim@kaffe.org>
+ * libraries/javalib/java/util/Hashtable.java
+ (internalcontainsValue): New method.
+ (contains): Delegate to internalContainsValue.
+
+ Reported by: Mark Wielaard <mark@klomp.org>
+ * libraries/javalib/java/util/Hashtable.java
+ (contains): Improved comment.
+
+ Reported by: Jeroen Frijters <jeroen@frijters.net>
+ * libraries/javalib/java/util/Hashtable.java
+ (containsValue): Delegate to contains(Object) to make sure older
+ code overwriting it continues to work.
+
2003-12-02 Fernando Nasser <fnasser@redhat.com>
* gnu/java/awt/peer/gtk/GtkListPeer.java (handleEvent): New
*/
public synchronized boolean contains(Object value)
{
- return containsValue(value);
+ /* delegate to non-overridable worker method
+ * to avoid blowing up the stack, when called
+ * from overridden contains[Value]() method.
+ */
+ return internalContainsValue(value);
}
/**
* @since 1.2
*/
public boolean containsValue(Object value)
+ {
+ /* delegate to older method to make sure code overwriting it
+ * continues to work.
+ */
+ return contains(value);
+ }
+
+ /**
+ * Returns true if this Hashtable contains a value <code>o</code>, such that
+ * <code>o.equals(value)</code>. This is an internal worker method
+ * called by <code>contains()</code> and <code>containsValue()</code>.
+ *
+ * @param value the value to search for in this Hashtable
+ * @return true if at least one key maps to the value
+ * @see #contains(Object)
+ * @see #containsKey(Object)
+ * @throws NullPointerException if <code>value</code> is null
+ */
+ private boolean internalContainsValue(Object value)
{
for (int i = buckets.length - 1; i >= 0; i--)
{