Login  Register

Re: Re: Re: Re: Re: Re: Re: From java servlet to orbeon context

Posted by Erik Bruchez-3 on Sep 17, 2009; 11:00pm
URL: https://discuss.orbeon.com/From-java-servlet-to-orbeon-context-tp44958p44969.html

Bart,

This is due to the fact that the data output of a model, i.e.
model="mail.xpl", is not automatically serialized. You can do your own
serialization in mail.,xpl with oxf:xml-converter /
oxf:http-serializer, or you can try to switch to view="mail.xpl" and
see if that works.

-Erik

On Thu, Sep 10, 2009 at 7:08 AM, Bart Ottenkamp <[hidden email]> wrote:

> Hai Alex,
>
> I (still) have trouble giving back a result to the client after a
> submission...
> Please, forget all other things mentioned in this mail conversation, because
> I mostly resolved them, but this one is still hard to figure out.
> I'm really desperate now, because if I don't fix this now, I'll be forced to
> drop using orbeon and advice my client to use something else. And I don't
> want that, because I came all this way...
>
> Here is my mail again (please reply):
>
> First question is:
> does anybody have an example of a form, that submits a part of the model via
> a pipeline to a custom java processor and than gives back a result (just a
> message is enough) to the client?
> I think it should be possible (would be very weird if it is not possible, I
> think!) and if anybody knows how to do this, I think it should help if we
> make an example for it and add it to the xforms-sandbox...
>
> I really think I just have a very small error in configuration somewhere and
> I cannot find what is going wrong. Here is what I have:
>
> in my .xhtml:
>
>             <xforms:instance id = "result-instance">
>                 <root>
>                     <result/>
>                     <failure/>
>                     <success/>
>                 </root>
>             </xforms:instance>
>
> and
>
>             <xforms:submission
>                 id = "mail-submission"
>                 ref = "instance('form-instance')/
> formcontent"
>                 xxforms:show-progress = "false"
>                 method = "post"
>                 action = "/e-formulieren/mail"
>                 replace = "instance"
>                 instance = "result-instance">
>                 <xforms:setvalue ev:event = "xforms-submit-done" ref =
> "instance('result-instance')/success">success</xforms:setvalue>
>                 <xforms:message ev:event = "xforms-submit-error" level =
> "modal">error occurred</xforms:message>
>             </xforms:submission>
>
> in my page-flow.xml:
>     <!-- mail -->
>     <page path-info="/e-formulieren/mail" model="forms/xpl/mail.xpl" />
>
> in forms/xpl/mail.xpl:
>
> <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:divosa = "http://www.divosa.com/ops/processors">
>     <p:param name = "instance" type = "input"/>
>     <p:param name = "data" type = "output"/>
>     <p:processor name = "divosa:mailProcessor">
>         <p:input name = "data" href = "#instance"/>
>         <p:output name = "data" ref = "data"/>
>     </p:processor>
> </p:config>
>
> and then my mailProcessor:
> public class MailProcessor extends SimpleProcessor {
>
>     private static Logger LOGGER = Logger.getLogger(MailProcessor.class);
>
>     public MailProcessor() {
>         addInputInfo(new ProcessorInputOutputInfo("instance"));
>         addOutputInfo(new ProcessorInputOutputInfo(OUTPUT_DATA));
>     }
>
>
>     @Override
>     public void generateData(PipelineContext context, ContentHandler
> contentHandler) throws SAXException, DocumentException {
>         Document inputDocument = readInputAsDOM4J(context, "data");
>         if (LOGGER.isDebugEnabled()) {
>             LOGGER.debug(inputDocument.asXML());
>         }
>
>         org.dom4j.Document doc = DocumentHelper.createDocument();
>         org.dom4j.Element root = doc.addElement("root");
>         org.dom4j.Element result = root.addElement("result");
>         // do the actual processing on the submitted information
>         try {
>             FormSubmitHandler formSubmitHandler =
> FormSubmitHandlerFactory.getFormSubmitHandler(Constants.FORM_SUBMIT_MAIL);
>             String r = (String) formSubmitHandler.handle(inputDocument);
>             result.addText("Het formulier is succesvol gemaild op "
>                     + new SimpleDateTimeFormatter("dd-MM-YYYY
> HH:mm:ss").formatSimpleDateTime(new DateTime()));
>         } catch (Exception e) {
>             result.addText("Er is een fout opgetreden bij het mailen: " +
> e.getMessage());
>         }
>
>         LocationSAXWriter saxWriter = new LocationSAXWriter();
>         saxWriter.setContentHandler(contentHandler);
>         saxWriter.write(doc);
>     }
>
> As you can see, with the declaration in the submission:
>                 replace = "instance"
>                 instance = "result-instance"
> I try to replace the result instance with what I construct in the
> MailProcessor...
>
> The logging put to debug, this is (all) what I see:
> 2009-09-01 09:52:20,055 WARN  XFormsServer  - XForms - submission - instance
> replacement did not take place upon successful response because no body was
> provided. Submission: mail-submission
>
> Can you help??? Do you see where I go wrong?
>
> And I really think it would help to add an example to the sandbox.. then I
> won't have to bother you about thiss...
>
> Thanks and best regards,
> Bart Ottenkamp
>
> On Wed, Jul 22, 2009 at 12:36 AM, Alessandro Vernet <[hidden email]>
> wrote:
>>
>> Bart,
>>
>>
>> bartottenkamp wrote:
>> >
>> > 1.
>> > Did you have a look at what I mailed you what's in my java code,
>> > page-flow
>> > and .xpl? You might see a thing missing or something done wrong...
>> > This is what is returned to the client from the java code I mailed you:
>> >
>> > <?xml version="1.0" encoding="utf-8"?><xxf:event-response
>> > xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
>>
>> >> >><xxf:dynamic-state>pers:784A27F5-359A-CFA7-F395-2C0DFFDB57FB</xxf:dynamic-state><xxf:action><xxf:control-values
>> > /></xxf:action></xxf:event-response>
>> >
>> > so this indeed seems empy and I guess the logging of XFormsServer is
>> > therefore correct:
>> >
>> > WARN  XFormsServer  - XForms - submission - instance replacement did not
>> > take place upon successful response because no body was provided.
>> > Submission: mail-submission
>> >
>>
>> Not quite. There are 2 distinct requests:
>>
>> * The Ajax request made from the browser to the server and its response.
>> This is what you see in Firebug, and is "internal" to Orbeon Forms.
>> * The submission done from the server to your service. That is the
>> submission that contains the data you are interested it. If you get a
>> nightly build and set the XFormsModelSubmission to log at the debug level
>> (see: http://wiki.orbeon.com/forms/doc/developer-guide/xforms-logging),
>> you
>> can see what is sent to your service, and what comes back. This is what we
>> are interested in.
>>
>> So in addition to testing this with nightly build, I recommend you add
>> XFormsModelSubmission in debug mode to you log4j.xml and see what is sent
>> and received by the service. Also add a debug on the output of the
>> pipeline
>> to see what is returned by the pipeline.
>>
>>
>> bartottenkamp wrote:
>> >
>> > 2.
>> > Can you maybe point me to an example of what I want; a submit that
>> > 'goes'
>> > to
>> > java and returns the result? Like 'success' or 'failure'... There should
>> > be
>> > one or two I think...?
>> >
>>
>> Using the Java processor there is generic-init-database.xpl in the
>> examples,
>> but it doesn't return any data.
>>
>>
>> bartottenkamp wrote:
>> >
>> > 3.
>> > I also asked you this question:
>> > - trying to call some orbeon functionallity in my own java code to turn
>> > the
>> > complete node into a stripped one that only has the relevant nodes.. You
>> > do
>> > this somewhere in orbeon code, don't you? Can I call this code? Since I
>> > have
>> > the context available?
>> > Do you know an answer to this one?
>> >
>>
>> What do you mean by stripped node? I assume you have a DOM in Java, from
>> which you want to remove node; which one?
>>
>>
>> bartottenkamp wrote:
>> >
>> > 4.
>> > Back to my problem with popup blocking:
>> > I' m always working with FF3 and IE8 and everything works fine there,
>> > but
>> > if
>> > I use IE6 en IE7, popup blocking is in the way and if I then choose to
>> > allow
>> > popups, the pdf is NOT downloaded AND the form is refreshed and all data
>> > id
>> > gone...
>> > My quess my first question is; doesn't ring this a bell somewhere with
>> > you?
>> > Am I the only one with this problem as you know?
>> >
>>
>> You're not. And the only reliable way I know to do this, at the HTML
>> level,
>> is to have in the page a simple link  ... Download PDF . If you have the
>> file you want to serve in a node (base64 or URI to temporary file), you
>> can
>> use an <xforms:output ref="file1" appearance="xxforms:download">. You'll
>> find an example of this in output-download.xhtml, and more documentation
>> on:
>>
>>
>> http://www.orbeon.com/ops/doc/reference-xforms-extensions#xxforms-download-appearance
>>
>> Alex
>>
>> -----
>> Orbeon Forms - Web 2.0 Forms, open-source, for the Enterprise
>> Orbeon's Blog: http://www.orbeon.com/blog/
>> Personal Blog: http://avernet.blogspot.com/
>> Twitter - http://twitter.com/avernet
>> --
>> View this message in context:
>> http://www.nabble.com/From-java-servlet-to-orbeon-context-tp24479768p24597044.html
>> Sent from the ObjectWeb OPS - Users mailing list archive at Nabble.com.
>>
>>
>>
>> --
>> You receive this message as a subscriber of the [hidden email] mailing
>> list.
>> To unsubscribe: mailto:[hidden email]
>> For general help: mailto:[hidden email]?subject=help
>> OW2 mailing lists service home page: http://www.ow2.org/wws
>>
>
>
>
> --
> You receive this message as a subscriber of the [hidden email] mailing
> list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
>
>


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws