Skip to Main Content

Analytics Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Unable to base64 encode a file using Jython

Amit SenguptaNov 17 2014 — edited Nov 17 2014

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

This post has been answered by Amit Sengupta on Nov 17 2014
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 15 2014
Added on Nov 17 2014
1 comment
1,403 views