From: <no...@so...> - 2002-03-18 08:41:50
|
Bugs item #531256, was opened at 2002-03-18 16:41 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 Category: Core Group: None Status: Open Resolution: None Priority: 5 Submitted By: ian west (ianzsk) Assigned to: Nobody/Anonymous (nobody) Summary: Constructor problem using newInstance() Initial Comment: Firstly I want to say -- fantastic work guys!!! Now to the problem :-(. If a Java constructor uses <Class>.newInstance() within its body and <Class> is a PyProxy class then. a Type Error occurs from within in Py.initProxy(...). I think the problem is because the ThreadState.{get/push/pop}InitializingProxy() methods are being "subverted" by the direct call to Class.newInstance() below: #****** Jython 2.1 part # File xx.py from x import X,Y class PyX(X): pass class PyY(Y): pass PyX.useClass(PyY) X() # OK PyX() # Not OK prints 'TypeError: Proxy instance reused' //*****Java part // File x/X.java package x; public class X { static Class myClass; // register a class to construct public static void useClass(Class cls) { myClass=cls; } Object o; public X() throws Exception { o=myClass.newInstance(); } } // File x/Y.java package x; public class Y { public Y() {} } ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 |
From: <no...@so...> - 2002-05-31 12:35:51
|
Bugs item #531256, was opened at 2002-03-18 09:41 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 Category: Core Group: None >Status: Pending >Resolution: Rejected Priority: 5 Submitted By: ian west (ianzsk) >Assigned to: Finn Bock (bckfnn) Summary: Constructor problem using newInstance() Initial Comment: Firstly I want to say -- fantastic work guys!!! Now to the problem :-(. If a Java constructor uses <Class>.newInstance() within its body and <Class> is a PyProxy class then. a Type Error occurs from within in Py.initProxy(...). I think the problem is because the ThreadState.{get/push/pop}InitializingProxy() methods are being "subverted" by the direct call to Class.newInstance() below: #****** Jython 2.1 part # File xx.py from x import X,Y class PyX(X): pass class PyY(Y): pass PyX.useClass(PyY) X() # OK PyX() # Not OK prints 'TypeError: Proxy instance reused' //*****Java part // File x/X.java package x; public class X { static Class myClass; // register a class to construct public static void useClass(Class cls) { myClass=cls; } Object o; public X() throws Exception { o=myClass.newInstance(); } } // File x/Y.java package x; public class Y { public Y() {} } ---------------------------------------------------------------------- >Comment By: Finn Bock (bckfnn) Date: 2002-05-31 14:35 Message: Logged In: YES user_id=4201 Your analysis is correct, the use of newInstance does not work when there is a python class instance ctor on the stack. Both python class ctor and newInstance() work correctly, they just don't mix. To the best of my knowledge, there is no way to improve the situation. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 |
From: <no...@so...> - 2002-05-31 12:38:24
|
Bugs item #531256, was opened at 2002-03-18 09:41 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 Category: Core Group: None >Status: Open Resolution: Rejected Priority: 5 Submitted By: ian west (ianzsk) Assigned to: Finn Bock (bckfnn) Summary: Constructor problem using newInstance() Initial Comment: Firstly I want to say -- fantastic work guys!!! Now to the problem :-(. If a Java constructor uses <Class>.newInstance() within its body and <Class> is a PyProxy class then. a Type Error occurs from within in Py.initProxy(...). I think the problem is because the ThreadState.{get/push/pop}InitializingProxy() methods are being "subverted" by the direct call to Class.newInstance() below: #****** Jython 2.1 part # File xx.py from x import X,Y class PyX(X): pass class PyY(Y): pass PyX.useClass(PyY) X() # OK PyX() # Not OK prints 'TypeError: Proxy instance reused' //*****Java part // File x/X.java package x; public class X { static Class myClass; // register a class to construct public static void useClass(Class cls) { myClass=cls; } Object o; public X() throws Exception { o=myClass.newInstance(); } } // File x/Y.java package x; public class Y { public Y() {} } ---------------------------------------------------------------------- >Comment By: Finn Bock (bckfnn) Date: 2002-05-31 14:38 Message: Logged In: YES user_id=4201 Added as test364. ---------------------------------------------------------------------- Comment By: Finn Bock (bckfnn) Date: 2002-05-31 14:35 Message: Logged In: YES user_id=4201 Your analysis is correct, the use of newInstance does not work when there is a python class instance ctor on the stack. Both python class ctor and newInstance() work correctly, they just don't mix. To the best of my knowledge, there is no way to improve the situation. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 |
From: <no...@so...> - 2002-05-31 12:38:53
|
Bugs item #531256, was opened at 2002-03-18 09:41 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 Category: Core Group: None >Status: Pending Resolution: Rejected Priority: 5 Submitted By: ian west (ianzsk) Assigned to: Finn Bock (bckfnn) Summary: Constructor problem using newInstance() Initial Comment: Firstly I want to say -- fantastic work guys!!! Now to the problem :-(. If a Java constructor uses <Class>.newInstance() within its body and <Class> is a PyProxy class then. a Type Error occurs from within in Py.initProxy(...). I think the problem is because the ThreadState.{get/push/pop}InitializingProxy() methods are being "subverted" by the direct call to Class.newInstance() below: #****** Jython 2.1 part # File xx.py from x import X,Y class PyX(X): pass class PyY(Y): pass PyX.useClass(PyY) X() # OK PyX() # Not OK prints 'TypeError: Proxy instance reused' //*****Java part // File x/X.java package x; public class X { static Class myClass; // register a class to construct public static void useClass(Class cls) { myClass=cls; } Object o; public X() throws Exception { o=myClass.newInstance(); } } // File x/Y.java package x; public class Y { public Y() {} } ---------------------------------------------------------------------- Comment By: Finn Bock (bckfnn) Date: 2002-05-31 14:38 Message: Logged In: YES user_id=4201 Added as test364. ---------------------------------------------------------------------- Comment By: Finn Bock (bckfnn) Date: 2002-05-31 14:35 Message: Logged In: YES user_id=4201 Your analysis is correct, the use of newInstance does not work when there is a python class instance ctor on the stack. Both python class ctor and newInstance() work correctly, they just don't mix. To the best of my knowledge, there is no way to improve the situation. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=112867&aid=531256&group_id=12867 |