logo       

deferred parsing fallback?: msg#00058

java.enhydra.xmlc

Subject: deferred parsing fallback?


I have deferred parsing running successfully on a Barracuda app.  In order to do it, I compile the template files with the -for-deferred-parsing option and then set Barracuda's DOMLoader to use a custom DOMFactory.  In this case, I give it one that uses the XMLCDeferredParsingFactory to create documents.  If I forget to set this custom factory, Barracuda uses a default DOMFactory that creates documents using the standard XMLCStdFactory.  The problem is, when this happens for documents that have been compiled for deferred parsing, things blow up with the following exception...


java.lang.NullPointerException
        at
org.enhydra.xml.xmlc.deferredparsing.DocumentLoaderImpl.getLogger(DocumentLoaderImpl.java:488)
        at
org.enhydra.xml.xmlc.deferredparsing.DocumentLoaderImpl.getDocument(DocumentLoaderImpl.java:213)
        at
org.enhydra.barracuda.contrib.dbroggisch.examples.view.xmlc.RepopulationHTMLImpl.buildDocument(RepopulationHTMLImpl.java:118)
        at
org.enhydra.barracuda.contrib.dbroggisch.examples.view.xmlc.RepopulationHTMLImpl.(RepopulationHTMLImpl.java:98)
        at
org.enhydra.barracuda.contrib.dbroggisch.examples.view.xmlc.RepopulationHTMLImpl.(RepopulationHTMLImpl.java:110)
        at
org.enhydra.barracuda.contrib.dbroggisch.examples.view.xmlc.RepopulationHTMLImpl.(RepopulationHTMLImpl.java:61)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at
java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at
java.lang.Class.newInstance0(Class.java:306)
        at
java.lang.Class.newInstance(Class.java:259)
        at
org.enhydra.xml.xmlc.XMLCStdFactory.doCreate(XMLCStdFactory.java:97)
        at
org.enhydra.xml.xmlc.XMLCStdFactory.doCreate(XMLCStdFactory.java:108)
        at
org.enhydra.xml.xmlc.XMLCStdFactory.create(XMLCStdFactory.java:136)
        at
org.enhydra.barracuda.core.util.dom.DefaultDOMFactory.getInstance(DefaultDOMFactory.java:50)
        at
org.enhydra.barracuda.core.util.dom.DefaultDOMLoader.getDOM_private(DefaultDOMLoader.java:152)
        at
org.enhydra.barracuda.core.util.dom.DefaultDOMLoader.getDOM(DefaultDOMLoader.java:80)
        at
org.enhydra.barracuda.contrib.dbroggisch.examples.view.pages.RepopulationPage.getDocument(RepopulationPage.java:75)


I guess I had assumed that deferred parsing was just an added capability and that the standard XMLCStdFactory would still be able to load the classes, albeit without deferred parsing.  This would make it so you could compile with the possibility of deferred parsing, but then when you didn't need deferred parsing turned on, the classes would be loaded like normal which, I assume, is a bit less overhead.

Shouldn't there be a fallback; backward compatibility, if you will?  Was this just not considered and so it wasn't implemented, or is it not implementable?  Just wondering if I'm going to have to worry about recompiling each time I want to change XMLC factories?  If so, this means I have to both remove the option in my options.xmlc file and make sure to change the DOMFactory to the appropriate one that won't blow up when loading XMLC classes.   Hmmmm......   Any solutions, or am I just going to have to live with a bit of extra maintenance?


Jake
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise