diff options
Diffstat (limited to 'org/madore/damlengine/DamlEngine.java')
-rw-r--r-- | org/madore/damlengine/DamlEngine.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/org/madore/damlengine/DamlEngine.java b/org/madore/damlengine/DamlEngine.java index a0299ad..4826cf1 100644 --- a/org/madore/damlengine/DamlEngine.java +++ b/org/madore/damlengine/DamlEngine.java @@ -81,8 +81,10 @@ public final class DamlEngine { } public static final class IncantDOM { - static DOMImplementation domi; + static ThreadLocal<DOMImplementation> pdomi + = new ThreadLocal<DOMImplementation>(); public static DOMImplementation getDOMI() { + DOMImplementation domi = pdomi.get(); if ( domi == null ) { DOMImplementationSource source = new DOMImplementationSourceImpl(); @@ -90,6 +92,7 @@ public final class DamlEngine { if ( domi == null ) throw new MissingResourceException("failed to obtain DOM implementation", "org.w3c.dom.ls.DOMImplementationLS", ""); + pdomi.set(domi); } return domi; } @@ -112,20 +115,28 @@ public final class DamlEngine { } public static void processDocument(Document doc, - Context.WeblogSelectionContext wsc) { + Context.WeblogSelectionContext wsc, + Context.DynamicContext dc) { TodoDeque todoDeque = new TodoDeque(); Context ctx = new Context(doc); ctx.wsc = wsc; + ctx.dc = dc; todoDeque.registerAtEnd(new RootTodo(ctx)); todoDeque.dispatchLoop(); } + public static void processDocument(Document doc, + Context.WeblogSelectionContext wsc) { + processDocument(doc, wsc, null); + } + public static void processDocument(Document doc) { - processDocument(doc, null); + processDocument(doc, null, null); } public static void fullProcess(InputStream in, OutputStream out, - Context.WeblogSelectionContext wsc) + Context.WeblogSelectionContext wsc, + Context.DynamicContext dc) throws Exception { final DOMImplementationLS domils @@ -139,7 +150,7 @@ public final class DamlEngine { LSInput input = domils.createLSInput(); input.setByteStream(in); Document doc = par.parse(input); - processDocument(doc, wsc); + processDocument(doc, wsc, dc); doc.normalizeDocument(); Unparser unparser = new Unparser(doc, new OutputStreamWriter(out, "UTF-8"), @@ -148,11 +159,18 @@ public final class DamlEngine { } + public static void fullProcess(InputStream in, OutputStream out, + Context.WeblogSelectionContext wsc) + throws Exception { + fullProcess(in, out, wsc, null); + } + public static void fullProcess(InputStream in, OutputStream out) throws Exception { - fullProcess(in, out, null); + fullProcess(in, out, null, null); } + public static boolean runAsServlet = false; public static Properties appProps; public static Path basePath; public static Path templatePath; |