Index: Lib/test/test_java_integration.py =================================================================== --- Lib/test/test_java_integration.py (revision 6415) +++ Lib/test/test_java_integration.py (working copy) @@ -439,6 +439,32 @@ unserializer = ObjectInputStream(input) self.assertEqual(date_list, unserializer.readObject()) + + +class WrappedJavaObjectEqualityTest (unittest.TestCase): + # Test for bug #1338 + def test_equals(self): + a = range(0,5) + + x = ArrayList() + x.addAll(a) + + y = Vector() + y.addAll(a) + + z = ArrayList() + z.addAll(range(1,6)) + + self.assert_(x.equals(y)) + self.assert_(x == y) + self.assert_(not (x != y)) + + self.assert_(not x.equals(z)) + self.assert_(not (x == z)) + self.assert_(x != z) + + + def test_main(): test_support.run_unittest(InstantiationTest, BeanTest, @@ -454,7 +480,8 @@ JavaDelegationTest, SecurityManagerTest, JavaWrapperCustomizationTest, - SerializationTest) + SerializationTest, + WrappedJavaObjectEqualityTest) if __name__ == "__main__": test_main() Index: src/org/python/core/PyJavaType.java =================================================================== --- src/org/python/core/PyJavaType.java (revision 6415) +++ src/org/python/core/PyJavaType.java (working copy) @@ -510,7 +510,7 @@ @Override public PyObject __call__(PyObject o) { Object proxy = self.getJavaProxy(); - Object oAsJava = o.__tojava__(proxy.getClass()); + Object oAsJava = o.getJavaProxy(); return proxy.equals(oAsJava) ? Py.True : Py.False; } }); @@ -518,7 +518,7 @@ @Override public PyObject __call__(PyObject o) { Object proxy = self.getJavaProxy(); - Object oAsJava = o.__tojava__(proxy.getClass()); + Object oAsJava = o.getJavaProxy(); return !proxy.equals(oAsJava) ? Py.True : Py.False; } });