From: Finn B. <bc...@us...> - 2001-02-07 09:23:34
|
Update of /cvsroot/jython/jython/org/python/core In directory usw-pr-cvs1:/tmp/cvs-serv20912 Modified Files: PyClass.java PyFloat.java PyInstance.java PyInteger.java PyLong.java PyString.java Log Message: Fix bug #127340. These instances can now be coerced to Serializable. Index: PyClass.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyClass.java,v retrieving revision 2.18 retrieving revision 2.19 diff -C2 -r2.18 -r2.19 *** PyClass.java 2001/02/02 09:28:36 2.18 --- PyClass.java 2001/02/07 09:23:52 2.19 *************** *** 137,141 **** public Object __tojava__(Class c) { ! if ((c == Object.class || c == Class.class) && proxyClass != null) { return proxyClass; } --- 137,142 ---- public Object __tojava__(Class c) { ! if ((c == Object.class || c == Class.class || c == Serializable.class) ! && proxyClass != null) { return proxyClass; } Index: PyFloat.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyFloat.java,v retrieving revision 2.6 retrieving revision 2.7 diff -C2 -r2.6 -r2.7 *** PyFloat.java 2001/02/02 09:28:36 2.6 --- PyFloat.java 2001/02/07 09:23:52 2.7 *************** *** 2,5 **** --- 2,7 ---- package org.python.core; + import java.io.Serializable; + public class PyFloat extends PyObject { *************** *** 61,65 **** public Object __tojava__(Class c) { if (c == Double.TYPE || c == Number.class || ! c == Double.class || c == Object.class) { return new Double(value); --- 63,67 ---- public Object __tojava__(Class c) { if (c == Double.TYPE || c == Number.class || ! c == Double.class || c == Object.class || c == Serializable.class) { return new Double(value); Index: PyInstance.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyInstance.java,v retrieving revision 2.17 retrieving revision 2.18 diff -C2 -r2.17 -r2.18 *** PyInstance.java 2001/02/02 09:28:36 2.17 --- PyInstance.java 2001/02/07 09:23:52 2.18 *************** *** 2,5 **** --- 2,6 ---- package org.python.core; import java.util.Hashtable; + import java.io.Serializable; public class PyInstance extends PyObject *************** *** 108,112 **** public Object __tojava__(Class c) { ! if (c == Object.class && javaProxy != null) { return javaProxy; } --- 109,114 ---- public Object __tojava__(Class c) { ! if ((c == Object.class || c == Serializable.class) && ! javaProxy != null) { return javaProxy; } *************** *** 397,402 **** ret = invoke_ex("__hash__"); ! if (ret == null) return super.hashCode(); if (ret instanceof PyInteger) { return ((PyInteger)ret).getValue(); --- 399,408 ---- ret = invoke_ex("__hash__"); ! if (ret == null) { ! if (__findattr__("__eq__") != null || ! __findattr__("__cmp__") != null) ! throw Py.TypeError("unhashable instance"); return super.hashCode(); + } if (ret instanceof PyInteger) { return ((PyInteger)ret).getValue(); Index: PyInteger.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyInteger.java,v retrieving revision 2.8 retrieving revision 2.9 diff -C2 -r2.8 -r2.9 *** PyInteger.java 2001/02/02 09:28:36 2.8 --- PyInteger.java 2001/02/07 09:23:52 2.9 *************** *** 2,5 **** --- 2,7 ---- package org.python.core; + import java.io.Serializable; + public class PyInteger extends PyObject { *************** *** 32,36 **** public Object __tojava__(Class c) { if (c == Integer.TYPE || c == Number.class || ! c == Object.class || c == Integer.class) { return new Integer(value); --- 34,39 ---- public Object __tojava__(Class c) { if (c == Integer.TYPE || c == Number.class || ! c == Object.class || c == Integer.class || ! c == Serializable.class) { return new Integer(value); Index: PyLong.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyLong.java,v retrieving revision 2.9 retrieving revision 2.10 diff -C2 -r2.9 -r2.10 *** PyLong.java 2001/02/02 09:28:37 2.9 --- PyLong.java 2001/02/07 09:23:52 2.10 *************** *** 3,8 **** import java.math.BigInteger; - public class PyLong extends PyObject { --- 3,8 ---- import java.math.BigInteger; + import java.io.Serializable; public class PyLong extends PyObject { *************** *** 86,90 **** } if (c == BigInteger.class || c == Number.class || ! c == Object.class) { return value; --- 86,90 ---- } if (c == BigInteger.class || c == Number.class || ! c == Object.class || c == Serializable.class) { return value; Index: PyString.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyString.java,v retrieving revision 2.38 retrieving revision 2.39 diff -C2 -r2.38 -r2.39 *** PyString.java 2001/02/02 13:07:32 2.38 --- PyString.java 2001/02/07 09:23:52 2.39 *************** *** 2,5 **** --- 2,7 ---- package org.python.core; + import java.io.Serializable; + class StringFuncs extends PyBuiltinFunctionSet *************** *** 626,630 **** public Object __tojava__(Class c) { //This is a hack to make almost all Java calls happy ! if (c == String.class || c == Object.class) return string; if (c == Character.TYPE) --- 628,632 ---- public Object __tojava__(Class c) { //This is a hack to make almost all Java calls happy ! if (c == String.class || c == Object.class || c == Serializable.class) return string; if (c == Character.TYPE) |