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

Christian Köberl updated TAP5-713:
----------------------------------

    Attachment: SaxTemplateParserImpl.java

Here is my final version - everthing seems to work (except see below).

To use it in your 5.1 version you'll have to:

1. Remove Woodstox Depdency:
                        <dependency>
                                <groupId>org.apache.tapestry</groupId>
                                <artifactId>tapestry-core</artifactId>
                                <version>${tapestry-version}</version>
                                <exclusions>
                                        <exclusion>
                                          
<groupId>org.codehaus.woodstox</groupId>
                                          
<artifactId>woodstox-core-asl</artifactId>
                                </exclusion>
                                </exclusions>
                        </dependency>

2. Add this to your AppModule:

        public static void bind(ServiceBinder binder)
        {
                binder.bind(TemplateParser.class, 
SaxTemplateParserImpl.class).withId("TemplateParserOverride");
        }

    public static void 
contributeTemplateParserOverride(MappedConfiguration<String, URL> config)
    {
        // Any class inside the internal module would do. Or we could move all 
these
        // files to o.a.t.services.

        Class<UpdateListenerHubImpl> c = UpdateListenerHubImpl.class;

        config.add("-//W3C//DTD XHTML 1.0 Strict//EN", 
c.getResource("xhtml1-strict.dtd"));
        config.add("-//W3C//DTD XHTML 1.0 Transitional//EN", c
                .getResource("xhtml1-transitional.dtd"));
        config.add("-//W3C//DTD XHTML 1.0 Frameset//EN", 
c.getResource("xhtml1-frameset.dtd"));
        config.add("-//W3C//DTD HTML 4.01//EN", 
c.getResource("xhtml1-strict.dtd"));
        config.add("-//W3C//DTD HTML 4.01 Transitional//EN", c
                .getResource("xhtml1-transitional.dtd"));
        config.add("-//W3C//DTD HTML 4.01 Frameset//EN", 
c.getResource("xhtml1-frameset.dtd"));
        config.add("-//W3C//ENTITIES Latin 1 for XHTML//EN", 
c.getResource("xhtml-lat1.ent"));
        config.add("-//W3C//ENTITIES Symbols for XHTML//EN", 
c.getResource("xhtml-symbol.ent"));
        config.add("-//W3C//ENTITIES Special for XHTML//EN", 
c.getResource("xhtml-special.ent"));
    }

        public static void contributeServiceOverride(MappedConfiguration<Class, 
Object> configuration,
                @Local TemplateParser override)
        {
                configuration.add(TemplateParser.class, override);
        }

Voila - you have a non-Stax Tapestry.

I still get the 2 errors in the TemplateParserImplTest when running the whole 
suite from command line. When I run just single test from Eclipse (for 
debugging) it works fine:
- parse_failure(org.apache.tapestry5.internal.services.TemplateParserImplTest) 
Time elapsed: 0 sec <<< FAILURE!
java.lang.AssertionError: expected:<2> but was:<4>
- just_HTML(org.apache.tapestry5.internal.services.TemplateParserImplTest) Time 
elapsed: 0 sec <<< FAILURE!
java.lang.AssertionError: expected:<6> but was:<8>
These problems are just line numbers that don't match - so I will not 
investigate any further.

> Change template parser to not use STAX, as it is not (yet) compatible with 
> Google App Engine
> --------------------------------------------------------------------------------------------
>
>                 Key: TAP5-713
>                 URL: https://issues.apache.org/jira/browse/TAP5-713
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: tapestry-core
>    Affects Versions: 5.1.0.5
>            Reporter: Howard M. Lewis Ship
>         Attachments: SaxTemplateParserImpl.java, SaxTemplateParserImpl.java, 
> SaxTemplateParserImpl.java, SaxTemplateParserImpl.java
>
>
> The StAX APIs are not on the GAE "white list".
> Should be reasonable ot change the code, by using a SAX parser that parses 
> the template into a list of tokens, and then iterate down the token list as 
> we do today using StAX.  End result will be fewer dependencies to boot.

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

Reply via email to