Hi Erik,

Yes as you thought the NPE is caused by the term:

method.invoke(instance, parameterValues.toArray())

When this invokes a method that returns void it evaluates to null. Hence
the toString() on the term causes the NPE. I guess the fix would be to
check for null before the toString(). Anyway I can change my method
signature to return a string as a work-around.

Many thanks for your help,

Avinder

Snippet from org.orbeon.oxf.processor.DelegationProcessor.java

    /**
     * Calls a method on an object with the reflexion API.
     */
    private String callMethod(Class clazz, String methodName,
java.util.List parameterTypes,
                              Object instance, java.util.List
parameterValues)
            throws NoSuchMethodException, IllegalAccessException,
InvocationTargetException {
        String result;
        Class[] parameterClasses = new Class[parameterTypes.size()];
        parameterTypes.toArray(parameterClasses);
        Method method = clazz.getDeclaredMethod(methodName,
parameterClasses);
        result = method.invoke(instance,
parameterValues.toArray()).toString();
        return result;
    }

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Erik
Bruchez
Sent: 02 February 2005 17:15
To: [email protected]
Subject: Re: [orbeon-user] Using Delegation Processor

This is the line producing the NPE:

result = method.invoke(instance, parameterValues.toArray()).toString();

If you are saying that the method is in fact called, this seems to mean 
that it returns null and that the call of toString() on null causes the
NPE.

Mabe Alex can comment on this.

-Erik

Avinder Bahra wrote:
> Hi,
> 
> Thanks (Erik) for the answer to my previous question. I am however
> getting an NPE when using the Delegation Processor. The processor
> successfully calls the Stateless session EJB method (which prints to
the
> console), but then immediately throws a NPE. I have tested the EJB
> method successfully with a Java client. Perhaps the XPL is incorrect?
> The EJB method signature is:
> 
>    public void saveXForm( java.lang.String theform )
>       throws java.rmi.RemoteException;
> 
> XPL and stack trace listings are below:
> 
> Any help appreciated.
> 
> Regards, Avinder
> 
> <p:config xmlns:p="http://www.orbeon.com/oxf/pipeline";
>           xmlns:oxf="http://www.orbeon.com/oxf/processors";
>           xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>           xmlns:delegation="http://orbeon.org/oxf/xml/delegation";
>           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> 
> <p:param name="data" type="output"/>
> 
> <p:processor name="oxf:delegation"> 
>   <p:input name="interface"> 
>       <config> 
>           <service id="save-xform" type="stateless-ejb"
> uri="ejb/MyBeanHome"/>
>       </config>
>   </p:input>
>   <p:input name="call"> 
>       <delegation:execute service="save-xform" operation="saveXForm"> 
>           <theform xsi:type="xs:string">MyXformToSave</theform>
>       </delegation:execute>
>   </p:input>
>   <p:output name="data" ref="data"/>
> </p:processor>
>    
> 
> </p:config>
> 
> The stack trace is:
> 
> 2005-02-02 16:12:26,018 INFO  org.orbeon.oxf.pipeline.InitUtils null -
> /tutorial
> -hello3 - Received request
> Saving XForm='MyXformToSave'
> 2005-02-02 16:12:26,393 ERROR org.orbeon.oxf.pipeline.InitUtils null -
> Exception
>  with no location data
> java.lang.NullPointerException
>         at
> org.orbeon.oxf.processor.DelegationProcessor.callMethod(DelegationPro
> cessor.java:389)
>         at
> org.orbeon.oxf.processor.DelegationProcessor.access$400(DelegationPro
> cessor.java:55)
>         at
> org.orbeon.oxf.processor.DelegationProcessor$2.endElement(DelegationP
> rocessor.java:334)
>         at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:168)
>         at
> org.orbeon.oxf.processor.generator.DOMGenerator$1.readImpl(DOMGenerat
> or.java:137)
>         at
> org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
> 
>         at
> org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(Proce
> ssorImpl.java:1106)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.j
> ava:340)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.j
> ava:345)
>         at
> org.orbeon.oxf.processor.DelegationProcessor$1.readImpl(DelegationPro
> cessor.java:83)
>         at
> org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
> 
>         at
> org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(Proce
> ssorImpl.java:1106)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.j
> ava:340)
>         at
> org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(Pipeli
> neProcessor.java:61)
>         at
> org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelinePro
> cessor.java:97)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.
> java:505)
>         at
> org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(Pipeli
> neProcessor.java:61)
>         at
> org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(Pipeli
> neProcessor.java:95)
>         at
> org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:945)
> 
>         at
> org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(Proce
> ssorImpl.java:1106)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.j
> ava:340)
>         at
> org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.j
> ava:345)
>         at
> org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcess
> or.java:30)
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Erik
> Bruchez
> Sent: 02 February 2005 14:11
> To: [email protected]
> Subject: Re: [orbeon-user] Using Delegation Processor
> 
> If you want to pass a string, you should first convert the XML
instance 
> into a string. You can do this with the XML converter, for example.
> 
> http://www.orbeon.com/ois/doc/processors-converters#xml-converter
> 
> Then, with XSLT, build your "call" input document and embed the 
> resulting string.
> 
> -Erik
> 
> Avinder Bahra wrote:
> 
>>Hi,
>>
>> 
>>
>>I am using the Delegation Processor to call a stateless session EJB 
>>method. What I wan't to do is pass an Xforms instance as a string 
>>parameter to the EJB method. However the documentation example (listed
> 
> 
>>below) only shows how to pass in literal values. Is there a way to 
>>accomplish passing in an Xforms instance?
>>
>> 
>>
>><p:config xmlns:p="http://www.orbeon.com/oxf/pipeline";
>>
>>          xmlns:oxf="http://www.orbeon.com/oxf/processors";
>>
>>          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>>
>> 
>>
>>    <p:param name="data" type="output"/>
>>
>> 
>>
>><p:processor name="oxf:delegation">
>>
>>  <p:input name="interface">
>>
>>      <config>
>>
>>          <service id="save-xform" type="stateless-ejb" 
>>uri="ejb/MyBeanHome"/>
>>
>>      </config>
>>
>>  </p:input>
>>
>>  <p:input name="call">
>>
>>      <delegation:execute service="save-xform" operation="saveXForm">
>>
>>          <theform xsi:type="xs:string">I WOULD LIKE TO SAVE XFORMS 
>>INSTANCE</theform>
>>
>>      </delegation:execute>
>>
>>  </p:input>
>>
>>  <p:output name="data" ref="data"/>
>>
>></p:processor>
>>
>>   
>>
>> 
>>
>></p:config>
>>
>> 
>>
>> 
>>
>>Any help appreciated.
>>
>> 
>>
>>Regards
>>
>> 
>>
>>Avinder
>>
>> 
>>
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by: IntelliVIEW -- Interactive
Reporting
> Tool for open source databases. Create drag-&-drop reports. Save time
> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
> Download a FREE copy at http://www.intelliview.com/go/osdn_nl
> _______________________________________________
> orbeon-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/orbeon-user
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by: IntelliVIEW -- Interactive
Reporting
> Tool for open source databases. Create drag-&-drop reports. Save time
> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
> Download a FREE copy at http://www.intelliview.com/go/osdn_nl
> _______________________________________________
> orbeon-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/orbeon-user



-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
orbeon-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/orbeon-user



-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
orbeon-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/orbeon-user

Reply via email to