[ 
http://jira.codehaus.org/browse/JIBX-60?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Sosnoski updated JIBX-60:
--------------------------------

    Fix Version/s:     (was: 1.0-RC2)

> Generated Unmarshaller may not work with streaming XML
> ------------------------------------------------------
>
>                 Key: JIBX-60
>                 URL: http://jira.codehaus.org/browse/JIBX-60
>             Project: JiBX
>          Issue Type: Improvement
>          Components: core
>            Reporter: Chris Chen
>            Assignee: Dennis Sosnoski
>            Priority: Minor
>
> I am continuing to make JiBX work properly with streaming XML.  I ran into a 
> problem, which I will describe here:
> Let's say that I have a streaming xml as follows:
> <stream>
>   <features>
>     <starttls><required/></starttls>
>   </features>
>  ...... keeps going until communication closes....
> </stream>
> I have created a custom unmarshaller for <starttls>.  <features> is specified 
> in the binding file and the unmarshaller is generated by the binding 
> compiler.  
> Since this is a streaming xml, after </features> is received, the </features> 
> end tag is the last to be sent.  There may be other data coming afterwards 
> but </stream> is the last tag to be received to end the document.  
> The problem is that the generated unmarshalling code for the <features> 
> element is something like this:
> parsePastStartTag(null, "features");
> //retrieve unmarshaller for <starttls>
> //unmarshall <starttls>
> parsePastEndTag(null, "features");
> The last line of code is what causes the problem.  By using 
> parsePastEndTag(), the generated code will try to read past the end tag AND 
> advance to the next major tag event (parsePastEndTag() first calls toEnd() 
> and subsequently calls advance()).  The advance() method hangs my code 
> because it is continually trying to read data from the socket's input stream. 
>  However, there is nothing to read, so it tries forever.  
> The reason is that the remote entity only sends data up to the character '>' 
> of "</features>".
> My proposal is that the generated unmarshalling code should use toEnd() 
> rather than parsePastEndTag().  This should not be a problem for subsequent 
> unmarshalling of other elements because isAt() is usually called first 
> anyways, which will advance the parser position to the next tag, essentially 
> doing something similar to parsePastEndTag().

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
jibx-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-devs

Reply via email to