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