Issue1561
Created on 2010-02-21.08:45:28 by seanj, last changed 2015-01-18.04:54:15 by zyasoft.
msg5544 (view) |
Author: seanj (seanj) |
Date: 2010-02-21.08:45:27 |
|
# file: UnimplementedMethodOnInterfaceBug.py
def test_unimplemented_interface():
from java.lang import Runnable
class RunMethodNotImplemented(Runnable):
pass
test_failure = "failure: should have thrown an un-implemented method exception"
try:
run = RunMethodNotImplemented()
result = run.run()
# result will be 0, should throw exception
raise Exception(test_failure)
except Exception, e:
if e.message == test_failure:
raise e
else:
pass
if __name__ == "__main__":
test_unimplemented_interface()
|
msg5664 (view) |
Author: Philip Jenvey (pjenvey) |
Date: 2010-04-11.18:18:14 |
|
this is related to #1432 and #1437
|
msg5745 (view) |
Author: Jim Baker (zyasoft) |
Date: 2010-04-26.01:36:13 |
|
Deferred to 2.6 - this needs the custom proxy support
|
msg8506 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-05-21.23:47:12 |
|
Time to revisit for 2.7
|
msg9024 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-09-24.03:36:21 |
|
Let's look at the output of the proxy maker for a class implementing Callable:
public Object call() throws Exception {
final PyObject findPython = ProxyMaker.findPython((PyProxy)this, "call");
if (findPython != null) {
final PyObject pyObject = findPython;
try {
return Py.tojava(pyObject._jcallexc((Object[])Py.EmptyObjects), (Class)Class.forName("java.lang.Object"));
}
catch (Exception ex) {
throw ex;
}
catch (Throwable t) {
pyObject._jthrow(t);
return null;
}
}
return null;
}
(See the decompilation example in https://github.com/jimbaker/clamped#writing-a-python-class-to-use-clamp)
That last `return null` is where the problem occurs. Although this is a somewhat big change for existing code, it's an appropriate one and is likely hiding bugs. In particular:
exception NotImplementedError
This exception is derived from RuntimeError. In user defined base classes, abstract methods should raise this exception when they require derived classes to override the method.
This Python-specific exception is likely a better exception than UnsupportedOperationException; in either case, it's derived from RuntimeException
|
msg9031 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-09-26.04:30:49 |
|
This is a breaking change for users, so if it's going in, it has to be in for beta 4 of 2.7.0. Or wait to Jython 3.
|
msg9086 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-10-06.02:55:57 |
|
Related/near duplicate of #1785
Fix for beta 4
|
msg9327 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-01-07.06:10:56 |
|
Must fix before beta 4
|
msg9352 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-01-08.04:15:42 |
|
Fixed as of https://hg.python.org/jython/rev/3235ec531b41
|
|
Date |
User |
Action |
Args |
2015-01-18 04:54:15 | zyasoft | set | status: pending -> closed |
2015-01-08 04:15:43 | zyasoft | set | status: open -> pending resolution: accepted -> fixed messages:
+ msg9352 |
2015-01-07 06:10:56 | zyasoft | set | priority: high -> urgent messages:
+ msg9327 |
2014-10-06 02:55:57 | zyasoft | set | messages:
+ msg9086 |
2014-09-26 04:30:50 | zyasoft | set | priority: high assignee: zyasoft resolution: remind -> accepted messages:
+ msg9031 |
2014-09-24 03:36:21 | zyasoft | set | messages:
+ msg9024 |
2014-05-21 23:47:12 | zyasoft | set | messages:
+ msg8506 |
2014-05-21 23:46:56 | zyasoft | set | resolution: later -> remind |
2013-02-19 18:45:25 | fwierzbicki | set | nosy:
+ fwierzbicki versions:
+ Jython 2.7, - Deferred |
2010-05-23 09:45:36 | akong | set | nosy:
+ akong |
2010-04-26 01:36:13 | zyasoft | set | resolution: later messages:
+ msg5745 nosy:
+ zyasoft versions:
+ Deferred, - 2.5.1 |
2010-04-11 18:18:14 | pjenvey | set | nosy:
+ pjenvey messages:
+ msg5664 |
2010-04-11 02:09:47 | pjenvey | set | nosy:
+ cgroves |
2010-02-21 08:45:29 | seanj | create | |
|