From: Brad C. <bk...@mu...> - 2001-01-10 15:47:37
|
For some reason the @sig line in the code below doesn't work. The resulting .java file doesn't have a public Put() method.. I added java.lang to the String type to see if that would fix it.. no go (the web docs say that all types *except* those in java.lang need to be fully specified, yet the example on the web page does have java.lang.String spelled out). Does anyone have any ideas? -- Python Code -- # FTPClient from ftplib import FTP class FTPClient: def __init__(self): pass def Put(self,host,user,passwd,fileName,filePath): "@sig public void Put(java.lang.String host, java.lang.String user, java.lang.String passwd, java.lang.String fileName, java.lang.String filePath)" ftp = FTP(host,user,passwd) file = open(filePath,"rb"); ftp.storbinary("stor "+fileName,file,512) ftp.quit() --- Resulting Java Class package tinitools; import org.python.core.*; public class FTPClient extends java.lang.Object { static String[] jpy$properties = new String[] {"python.modules.builtin", "exceptions:org.python.core.exceptions", "python.options.showJavaExceptions", "true"}; static String[] jpy$packages = new String[] {"org.python.core", null, "java.lang", null, "java.io", null, "java.net", null}; public static class _PyInner extends PyFunctionTable implements PyRunnable { private static PyObject s$0; private static PyObject s$1; private static PyObject s$2; private static PyObject s$3; private static PyObject i$4; private static PyFunctionTable funcTable; private static PyCode c$0___init__; private static PyCode c$1_Put; private static PyCode c$2_FTPClient; private static PyCode c$3_main; private static void initConstants() { s$0 = Py.newString("E:\\prj\\src\\jbuilder\\tini\\python\\FTPClient.py"); s$1 = Py.newString("@sig public void Put(java.lang.String host, java.lang.String user, java.lang.String passwd, java.lang.String fileName, java.lang.String filePath)"); s$2 = Py.newString("rb"); s$3 = Py.newString("stor "); i$4 = Py.newInteger(512); funcTable = new _PyInner(); c$0___init__ = Py.newCode(1, new String[] {"self"}, "E:\\prj\\src\\jbuilder\\tini\\python\\FTPClient.py", "__init__", false, false, funcTable, 0); c$1_Put = Py.newCode(6, new String[] {"self", "host", "user", "passwd", "fileName", "filePath", "ftp", "file"}, "E:\\prj\\src\\jbuilder\\tini\\python\\FTPClient.py", "Put", false, false, funcTable, 1); c$2_FTPClient = Py.newCode(0, new String[] {"__init__", "Put"}, "E:\\prj\\src\\jbuilder\\tini\\python\\FTPClient.py", "FTPClient", false, false, funcTable, 2); c$3_main = Py.newCode(0, new String[] {}, "E:\\prj\\src\\jbuilder\\tini\\python\\FTPClient.py", "main", false, false, funcTable, 3); } public PyCode getMain() { if (c$3_main == null) _PyInner.initConstants(); return c$3_main; } public PyObject call_function(int index, PyFrame frame) { switch (index){ case 0: return _PyInner.__init__$1(frame); case 1: return _PyInner.Put$2(frame); case 2: return _PyInner.FTPClient$3(frame); case 3: return _PyInner.main$4(frame); default: return null; } } private static PyObject __init__$1(PyFrame frame) { // pass return Py.None; } private static PyObject Put$2(PyFrame frame) { /* @sig public void Put(java.lang.String host, java.lang.String user, java.lang.String passwd, java.lang.String fileName, java.lang.String filePath) */ frame.setlocal(6, frame.getglobal("FTP").__call__(frame.getlocal(1), frame.getlocal(2), frame.getlocal(3))); frame.setlocal(7, frame.getglobal("open").__call__(frame.getlocal(5), s$2)); frame.getlocal(6).invoke("storbinary", new PyObject[] {s$3._add(frame.getlocal(4)), frame.getlocal(7), i$4}); frame.getlocal(6).invoke("quit"); return Py.None; } private static PyObject FTPClient$3(PyFrame frame) { frame.setlocal("__init__", new PyFunction(frame.f_globals, new PyObject[] {}, c$0___init__)); frame.setlocal("Put", new PyFunction(frame.f_globals, new PyObject[] {}, c$1_Put)); return frame.getf_locals(); } private static PyObject main$4(PyFrame frame) { frame.setglobal("__file__", s$0); org.python.core.imp.importFromAs("ftplib", new String[] {"FTP"}, new String[] {"FTP"}, frame); frame.setglobal("FTPClient", Py.makeClass("FTPClient", new PyObject[] {}, c$2_FTPClient, null)); return Py.None; } } public static void moduleDictInit(PyObject dict) { dict.__setitem__("__name__", new PyString("FTPClient")); Py.runCode(new _PyInner().getMain(), dict, dict); } public static void main(String[] args) { String[] newargs = new String[args.length+1]; newargs[0] = "FTPClient"; System.arraycopy(args, 0, newargs, 1, args.length); Py.runMain("tinitools.FTPClient$_PyInner", newargs, jpy$packages, jpy$properties, "tinitools", new String[] {"FTPClient", "sre_compile", "javapath", "sre_constants", "sre_parse", "string", "copy_reg", "ftplib", "javaos", "socket", "re", "sre"}); } } Brad Clements, bk...@mu... (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements |