Take advantage of DTM pluggability support for XSLTC.
git-svn-id: https://svn.apache.org/repos/asf/xalan/java/trunk@337797 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/org/apache/xalan/xsltc/cmdline/Transform.java b/src/org/apache/xalan/xsltc/cmdline/Transform.java
index c5d4ec0..8035a49 100644
--- a/src/org/apache/xalan/xsltc/cmdline/Transform.java
+++ b/src/org/apache/xalan/xsltc/cmdline/Transform.java
@@ -76,7 +76,7 @@
import org.apache.xalan.xsltc.TransletException;
import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
-import org.apache.xalan.xsltc.dom.SAXImpl;
+import org.apache.xalan.xsltc.DOMEnhancedForDTM;
import org.apache.xalan.xsltc.dom.XSLTCDTMManager;
import org.apache.xalan.xsltc.runtime.AbstractTranslet;
import org.apache.xalan.xsltc.runtime.Constants;
@@ -153,7 +153,9 @@
final XMLReader reader = parser.getXMLReader();
// Set the DOM's DOM builder as the XMLReader's SAX2 content handler
- XSLTCDTMManager dtmManager = XSLTCDTMManager.newInstance();
+ XSLTCDTMManager dtmManager =
+ (XSLTCDTMManager)XSLTCDTMManager.getDTMManagerClass()
+ .newInstance();
DTMWSFilter wsfilter;
if (translet != null && translet instanceof StripFilter) {
@@ -162,9 +164,10 @@
wsfilter = null;
}
- final SAXImpl dom = (SAXImpl)dtmManager.getDTM(
- new SAXSource(reader, new InputSource(_fileName)),
- false, wsfilter, true, false, translet.hasIdCall());
+ final DOMEnhancedForDTM dom =
+ (DOMEnhancedForDTM)dtmManager.getDTM(
+ new SAXSource(reader, new InputSource(_fileName)),
+ false, wsfilter, true, false, translet.hasIdCall());
dom.setDocumentURI(_fileName);
translet.prepassDocument(dom);
diff --git a/src/org/apache/xalan/xsltc/dom/DocumentCache.java b/src/org/apache/xalan/xsltc/dom/DocumentCache.java
index 081f536..7fdecf7 100644
--- a/src/org/apache/xalan/xsltc/dom/DocumentCache.java
+++ b/src/org/apache/xalan/xsltc/dom/DocumentCache.java
@@ -191,7 +191,12 @@
*/
public DocumentCache(int size) throws SAXException {
this(size, null);
- _dtmManager = XSLTCDTMManager.newInstance();
+ try {
+ _dtmManager = (XSLTCDTMManager)XSLTCDTMManager.getDTMManagerClass()
+ .newInstance();
+ } catch (Exception e) {
+ throw new SAXException(e);
+ }
}
/**
diff --git a/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java b/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
index 65c923f..568ee7f 100644
--- a/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
@@ -222,9 +222,17 @@
if (!_isIdentity) {
boolean hasIdCall = (_translet != null) ? _translet.hasIdCall() : false;
+ XSLTCDTMManager dtmManager = null;
// Create an internal DOM (not W3C) and get SAX2 input handler
- XSLTCDTMManager dtmManager = XSLTCDTMManager.newInstance();
+ try {
+ dtmManager =
+ (XSLTCDTMManager)_transformer.getTransformerFactory()
+ .getDTMManagerClass()
+ .newInstance();
+ } catch (Exception e) {
+ throw new SAXException(e);
+ }
DTMWSFilter wsFilter;
if (_translet != null && _translet instanceof StripFilter) {
@@ -234,20 +242,21 @@
}
// Construct the DTM using the SAX events that come through
- _dom = (SAXImpl)dtmManager.getDTM(null, false, wsFilter, true, false, hasIdCall);
-
+ _dom = (SAXImpl)dtmManager.getDTM(null, false, wsFilter, true,
+ false, hasIdCall);
+
_handler = _dom.getBuilder();
_lexHandler = (LexicalHandler) _handler;
_dtdHandler = (DTDHandler) _handler;
_declHandler = (DeclHandler) _handler;
- // Set document URI
- _dom.setDocumentURI(_systemId);
+ // Set document URI
+ _dom.setDocumentURI(_systemId);
- if (_locator != null) {
+ if (_locator != null) {
_handler.setDocumentLocator(_locator);
- }
+ }
}
// Proxy call