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!

Printing Java Beanshell string get "Undefined argument: " error in 12.2.1.4.0

user2341289Feb 27 2020 — edited Jul 13 2020

Hi all,

yesterday we upgraded to 12.2.1.4.0 ODI version.

We get error "Undefined argument: <java string name>" while any component try to print this javabeanshell string. Everything works in previous versions (our last was 12.2.1.3.2).

Simple example:

1. ODI procedure with JavaBeanShell step

<@

String javaresult="Hello world";

@>

2. A ODI component (for example variable)

Set Variable Project.resultvariable. Set to <@=javaresult@>

3.

a) correct output in version<=12.2.1.3.2: Hello world

b) version 12.2.1.4.0 error message: "Undefined argument: javaresult"

Same in others ODI components (as ODIsendmail...)

Has anyone same problem? We dont want to do downgrade. I though this version should be stable.

Error:

ODI-1226: Step vymazat fails after 1 attempt(s).

Caused By: oracle.odi.runtime.agent.exception.ExecutionEngineException: com.sunopsis.tools.core.exception.SnpsSimpleMessageException: ODI-17517: Error during task interpretation.

Task: 2

com.sunopsis.tools.core.exception.SnpsSimpleNLSMessageException: ODI-17810: Error during BeanShell evaluation: BeanShell script error: Sourced file: inline evaluation of: ``out.print(result) ; ;'' : Undefined argument: result  : at Line: 1 : in file: inline evaluation of: ``out.print(result) ; ;'' : ( result )

BSF info: null at line: 0 column: columnNo, Pre-execution code:

out.print(result) ;

at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:550)

at oracle.odi.runtime.agent.execution.interpreter.SessionTaskCodeInterpreter.codeInterpretation(SessionTaskCodeInterpreter.java:186)

at oracle.odi.runtime.agent.execution.SessionTask.codeInterpretation(SessionTask.java:465)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.doCodeInterpretation(TextCommand.java:126)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.getTextCommandToExecute(TextCommand.java:181)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:72)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:26)

at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:52)

at oracle.odi.runtime.agent.execution.VariableSessionTask.processTask(VariableSessionTask.java:192)

at oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:128)

at oracle.odi.runtime.agent.execution.VariableSessionTask.doExecuteTask(VariableSessionTask.java:164)

at oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)

at oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2225)

at oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:610)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)

at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)

at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)

at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.bsf.BSFException: BeanShell script error: Sourced file: inline evaluation of: ``out.print(result) ; ;'' : Undefined argument: result  : at Line: 1 : in file: inline evaluation of: ``out.print(result) ; ;'' : ( result )

BSF info: null at line: 0 column: columnNo

at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:201)

at bsh.util.BeanShellBSFEngine.exec(BeanShellBSFEngine.java:209)

at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:546)

... 28 more

Text: <@=result@>.

at oracle.odi.runtime.agent.execution.cmd.TextCommand.doCodeInterpretation(TextCommand.java:138)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.getTextCommandToExecute(TextCommand.java:181)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:72)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:26)

at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:52)

at oracle.odi.runtime.agent.execution.VariableSessionTask.processTask(VariableSessionTask.java:192)

at oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:128)

at oracle.odi.runtime.agent.execution.VariableSessionTask.doExecuteTask(VariableSessionTask.java:164)

at oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)

at oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2225)

at oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:610)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)

at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)

at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)

at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: com.sunopsis.tools.core.exception.SnpsSimpleMessageException: ODI-17517: Error during task interpretation.

Task: 2

com.sunopsis.tools.core.exception.SnpsSimpleNLSMessageException: ODI-17810: Error during BeanShell evaluation: BeanShell script error: Sourced file: inline evaluation of: ``out.print(result) ; ;'' : Undefined argument: result  : at Line: 1 : in file: inline evaluation of: ``out.print(result) ; ;'' : ( result )

BSF info: null at line: 0 column: columnNo, Pre-execution code:

out.print(result) ;

at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:550)

at oracle.odi.runtime.agent.execution.interpreter.SessionTaskCodeInterpreter.codeInterpretation(SessionTaskCodeInterpreter.java:186)

at oracle.odi.runtime.agent.execution.SessionTask.codeInterpretation(SessionTask.java:465)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.doCodeInterpretation(TextCommand.java:126)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.getTextCommandToExecute(TextCommand.java:181)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:72)

at oracle.odi.runtime.agent.execution.var.AssignVariableExecutor.execute(AssignVariableExecutor.java:26)

at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:52)

at oracle.odi.runtime.agent.execution.VariableSessionTask.processTask(VariableSessionTask.java:192)

at oracle.odi.runtime.agent.execution.SessionTask.doExecuteTask(SessionTask.java:128)

at oracle.odi.runtime.agent.execution.VariableSessionTask.doExecuteTask(VariableSessionTask.java:164)

at oracle.odi.runtime.agent.execution.AbstractSessionTask.execute(AbstractSessionTask.java:886)

at oracle.odi.runtime.agent.execution.SessionExecutor$SerialTrain.runTasks(SessionExecutor.java:2225)

at oracle.odi.runtime.agent.execution.SessionExecutor.executeSession(SessionExecutor.java:610)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:718)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor$1.doAction(TaskExecutorAgentRequestProcessor.java:611)

at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:203)

at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doProcessStartAgentTask(TaskExecutorAgentRequestProcessor.java:800)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$1400(StartSessRequestProcessor.java:74)

at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:702)

at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:180)

at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:108)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at oracle.odi.runtime.agent.execution.job.OdiJob.call(OdiJob.java:73)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.bsf.BSFException: BeanShell script error: Sourced file: inline evaluation of: ``out.print(result) ; ;'' : Undefined argument: result  : at Line: 1 : in file: inline evaluation of: ``out.print(result) ; ;'' : ( result )

BSF info: null at line: 0 column: columnNo

at bsh.util.BeanShellBSFEngine.eval(BeanShellBSFEngine.java:201)

at bsh.util.BeanShellBSFEngine.exec(BeanShellBSFEngine.java:209)

at com.sunopsis.dwg.codeinterpretor.SnpCodeInterpretor.transform(SnpCodeInterpretor.java:546)

... 28 more

Text: <@=result@>.

at oracle.odi.runtime.agent.execution.interpreter.SessionTaskCodeInterpreter.codeInterpretation(SessionTaskCodeInterpreter.java:208)

at oracle.odi.runtime.agent.execution.SessionTask.codeInterpretation(SessionTask.java:465)

at oracle.odi.runtime.agent.execution.cmd.TextCommand.doCodeInterpretation(TextCommand.java:126)

... 25 more

This post has been answered by Adrian_Popescu-Oracle on Apr 27 2020
Jump to Answer

Comments

Answer

Custom format, modify (or replace) the following rule:

less2Spaces:  :breaksBeforeComma & (

    [node+1) arg & [node) ','

  | [node+1) prm_spec & [node) ','

  | [node+1) select_term & [node) ','

  | [node+1) group_by_col & [node) ','            

  | [node+1) "ord_by_1desc" & [node) ','          

  | [node+1) table_reference & [node) ','

  | [node+1) par_expr_list[19,31) & [node) ','  -- in insert clause

  | [node-1) "expr_list" & [node) ','          -- in insert clause

  | [node^) query_partition_clause[14,21) & [node) ','

) -> {

    var node = tuple.get("node");    

    var nodeIndent = struct.getNewline(node.from);

    var offset = 2;

    if( !struct.getBoolBind("spaceAfterCommas") )

        offset = 1;

    if( nodeIndent != null )

        struct.putNewline(node.from, nodeIndent.substr(0,nodeIndent.length-offset));

}

Marked as Answer by Franco Soldera · Sep 27 2020
Franco Soldera

Thank you so much @"Vadim Tropashko-Oracle", it was spot on!

I found a similar exception when creating views:

CREATE OR REPLACE FORCE VIEW "MY_SCHEMA"."MY_TABLE"(

   "FIELD_1"

   ,"FIELD_2"

   ,"FIELD_3"

But the select in the statement is formatted correctly (after your change):

...

AS

   SELECT "FIELD_1"

         ,"FIELD_2"

         ,"FIELD_3"

...

Perhaps you can do (again) some magic?

Mikhail Velikikh

I added another OR

  | [node+1) alias_in_out_constraints & [node) ','

to the less2Spaces block:

[node+1) alias_in_out_constraints & [node) ','

less2Spaces:  :breaksBeforeComma & (

    [node+1) arg & [node) ','

  | [node+1) prm_spec & [node) ','

  | [node+1) select_term & [node) ','

  | [node+1) group_by_col & [node) ','          

  | [node+1) "ord_by_1desc" & [node) ','        

  | [node+1) table_reference & [node) ','

  | [node+1) par_expr_list[19,31) & [node) ','  -- in insert clause

  | [node-1) "expr_list" & [node) ','          -- in insert clause

  | [node^) query_partition_clause[14,21) & [node) ','

  | [node+1) alias_in_out_constraints & [node) ','

) -> {

    var node = tuple.get("node");  

    var nodeIndent = struct.getNewline(node.from);

    var offset = 2;

    if( !struct.getBoolBind("spaceAfterCommas") )

        offset = 1;

    if( nodeIndent != null )

        struct.putNewline(node.from, nodeIndent.substr(0,nodeIndent.length-offset));

}

The create view statement got formatted as follows:

CREATE OR REPLACE FORCE VIEW "MY_SCHEMA"."MY_TABLE" (

   "FIELD_1"

  ,"FIELD_2"

  ,"FIELD_3"

) AS

   SELECT "FIELD_1"

         ,"FIELD_2"

         ,"FIELD_3"

     FROM "T1"

         ,(

      SELECT "FIELD_1"

            ,"FIELD_2"

            ,"FIELD_3"

        FROM "T2"

   );

Does it fit the bill, @"Franco Soldera" ?

Franco Soldera

Magic!!! Thanks again :-)

1 - 4