[ 
https://issues.apache.org/jira/browse/JAXME-94?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jose Luis Huertas updated JAXME-94:
-----------------------------------

    Attachment: Jaxme94-SolutionB-0.6-SNAPSHOT.diff
                Jaxme94-SolutionB-0.5.3-SNAPSHOT.diff
                Jaxme94-SolutionB-0.5.2.diff

Finally I haven't been able to find a replacement for the method 
Matcher.hitEnd() that worked in JDK 1.4 and that was the key stone of the 
solution so I have had to change my strategy again :(

Basically I maintain a couple of arrays with the elements associated to each 
state, their minOccurs, maxOccurs and current occurs during the parsing 
process. The length of the generated class is similar to my previous solution 
(the one that used regular expressions), aprox. 4.000 lines for a sequence of 
250 elements against aprox. 290.000 lines that generates the current code.

In addition, it also solves the problem with multiplicities other than 
0..required for minOccurs and 1..unbounded for maxOccurs.

I attach three patches, one suitable to apply to 0.5.2 version 
(Jaxme94-SolutionB-0.5.2.diff), another for the current 0.5 branch 
(Jaxme\Jaxme94-SolutionB-0.5.3-SNAPSHOT.diff) and another for the current head 
(Jaxme\Jaxme94-SolutionB-0.6-SNAPSHOT.diff), so it is up to you to decide the 
more appropiate one.

BTW, I have tried to make the arrays static for performance, as Jochen pointed 
out in his previous comments, but I haven't been able since sometimes the 
classes are generated as inner ones inside an outer element, and it seems that 
inner classes cannot have static members :(

Please have a look at it and if you have any problem or comments I will be 
happy to make the changes needed.

> startElement method larger than 64KB when using a large amount of 
> complexType's
> -------------------------------------------------------------------------------
>
>                 Key: JAXME-94
>                 URL: https://issues.apache.org/jira/browse/JAXME-94
>             Project: JaxMe
>          Issue Type: Improvement
>          Components: JaxMe Core
>    Affects Versions: 0.5, 0.6
>         Environment: All
>            Reporter: Robert Eric Reeves
>            Assignee: Jochen Wiedmann
>            Priority: Critical
>             Fix For: 0.5, 0.6
>
>         Attachments: Jaxme94-SolutionB-0.5.2.diff, 
> Jaxme94-SolutionB-0.5.3-SNAPSHOT.diff, Jaxme94-SolutionB-0.6-SNAPSHOT.diff, 
> test.xsd, veryLongSequences-patch-0.5.2.diff, 
> veryLongSequences-patch-0.6-SNAPSHOT.diff, 
> veryLongSequences-refactor-patch-0.5.2.diff
>
>
> Using an XSD that has a complexType with ~50 child complexTypes in a 
> sequence, the generate Java code has a method startElement that is too large 
> for javac.
> Jose Luis Huertas Fernández has created a patch to fix this error. I will be 
> attaching it to this issue. There are two patches. One for 5.2 and the other 
> for 6.0.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to