Issue222829
Created on 2000-11-18.19:20:28 by bckfnn, last changed 2000-11-18.22:45:20 by bckfnn.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2000-11-18 19:20:28 | bckfnn | create | |
Created on 2000-11-18.19:20:28 by bckfnn, last changed 2000-11-18.22:45:20 by bckfnn.
| Messages | |||
|---|---|---|---|
| msg103 (view) | Author: Finn Bock (bckfnn) | Date: 2000-11-18.19:20:28 | |
I've had a maddening problem when writing testscripts for a
fairly complex application involving object factories and other
indirections.
I have a JPython class that implements an object factory,
creating a JPython object implementing the required interfaces.
However, in another JPython class that later on enumerates these
created objects, I no longer get back the originally created object.
The object is reported as org.python.proxy.Xxxx$, not the usual
<_Main_.Xxxx ...>.
After checking out the code[1], I belive that org.python.core.Py.java2py
may be the culprit:
public static PyObject java2py(Object o) {
if (o instanceof PyObject)
return (PyObject)o;
if (o instanceof PyProxy)
return ((PyProxy)o)._getPyInstance();
if (o instanceof Number) {
...
From the debug printout, it seems that my proxy object implemented
both the PyProxy interface as well as the PyObject class. This of course
resulted in me getting the proxy object instead of the jpython object that
I wanted.
By simply reversing the order of the test for PyProxy and PyObject,
the problem went away. However, it seems a bit too easy - is this the
bug, or is the real bug that a PyProxy also happens to inherit from
PyObject?
|
|||
| msg104 (view) | Author: Finn Bock (bckfnn) | Date: 2000-11-18.22:45:20 | |
Fixed by letting a proxy extend java.lang.Object instead of PyProxy. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2000-11-18 19:20:28 | bckfnn | create | |
Supported by Python Software Foundation,
Powered by Roundup