Hello,
I am trying to base 64 encode a file in ODI using a simple python script. I have a Procedure with the following script running in Command on Target.
Technology : Jython
Context: Global
Transaction: Autocommit
Schema: <set as a jython data server>
command:
import base64
imputXMLFile = "/Users/aksengup/Documents/Apoteket/kpiblob/src.xml"
outputBinaryFile="/Users/aksengup/Documents/Apoteket/kpiblob/out.xml"
base64.encode(imputXMLFile,outputBinaryFile)
when run, the procedure fails with the following stack trace:
ODI-1226: Step Base64EncodeFile fails after 1 attempt(s).
ODI-1232: Procedure Base64EncodeFile execution fails.
Caused By: org.apache.bsf.BSFException: exception from Jython:
Traceback (most recent call last):
File "<string>", line 6, in <module>
File "/Users/aksengup/apps/fmwhome/odi11117/studio/oracledi/client/jdev/extensions/oracle.odi.navigator/scripting/Lib/base64.py", line 288, in encode
s = input.read(MAXBINSIZE)
AttributeError: 'str' object has no attribute 'read'
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:146)
at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.execInBSFEngine(SnpScriptingInterpretor.java:322)
at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.exec(SnpScriptingInterpretor.java:170)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(SnpSessTaskSql.java:2472)
at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:47)
at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:1)
at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:50)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2913)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2625)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:577)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:468)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2128)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
at java.lang.Thread.run(Thread.java:695)
Caused by: Traceback (most recent call last):
File "<string>", line 6, in <module>
File "/Users/aksengup/apps/fmwhome/odi11117/studio/oracledi/client/jdev/extensions/oracle.odi.navigator/scripting/Lib/base64.py", line 288, in encode
s = input.read(MAXBINSIZE)
AttributeError: 'str' object has no attribute 'read'
at org.python.core.PyException.fillInStackTrace(PyException.java:70)
at java.lang.Throwable.<init>(Throwable.java:181)
at java.lang.Exception.<init>(Exception.java:29)
at java.lang.RuntimeException.<init>(RuntimeException.java:32)
at org.python.core.PyException.<init>(PyException.java:46)
at org.python.core.PyException.<init>(PyException.java:43)
at org.python.core.PyException.<init>(PyException.java:61)
at org.python.core.Py.AttributeError(Py.java:145)
at org.python.core.PyObject.noAttributeError(PyObject.java:936)
at org.python.core.PyObject.__getattr__(PyObject.java:931)
at base64$py.encode$12(/Users/aksengup/apps/fmwhome/odi11117/studio/oracledi/client/jdev/extensions/oracle.odi.navigator/scripting/Lib/base64.py:287)
at base64$py.call_function(/Users/aksengup/apps/fmwhome/odi11117/studio/oracledi/client/jdev/extensions/oracle.odi.navigator/scripting/Lib/base64.py)
at org.python.core.PyTableCode.call(PyTableCode.java:165)
at org.python.core.PyBaseCode.call(PyBaseCode.java:146)
at org.python.core.PyFunction.__call__(PyFunction.java:327)
at org.python.pycode._pyx3.f$0(<string>:6)
at org.python.pycode._pyx3.call_function(<string>)
at org.python.core.PyTableCode.call(PyTableCode.java:165)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1204)
at org.python.core.Py.exec(Py.java:1248)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:172)
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:144)
... 19 more
Any idea what could be going wrong? Any help or pointers will help.
Regards,
Amit Sengupta