< prev index next >

src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/XSLTCDTMManager.java

Print this page
rev 1072 : 8172974: [JAXP] XALAN: Wrong result when transforming namespace unaware StAX Input

*** 1,36 **** /* ! * reserved comment block ! * DO NOT REMOVE OR ALTER! */ /* ! * Copyright 1999-2004 The Apache Software Foundation. ! * ! * Licensed under the Apache License, Version 2.0 (the "License"); ! * you may not use this file except in compliance with the License. ! * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ - /* - * $Id: XSLTCDTMManager.java,v 1.2 2005/08/16 22:32:54 jeffsuttor Exp $ - */ - package com.sun.org.apache.xalan.internal.xsltc.dom; ! import javax.xml.stream.XMLEventReader; ! import javax.xml.stream.XMLStreamReader; ! import javax.xml.transform.Source; ! import javax.xml.transform.dom.DOMSource; ! import javax.xml.transform.sax.SAXSource; ! import javax.xml.transform.stream.StreamSource; ! import javax.xml.transform.stax.StAXSource; import com.sun.org.apache.xml.internal.dtm.DTM; import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase; import com.sun.org.apache.xml.internal.dtm.DTMException; import com.sun.org.apache.xml.internal.dtm.DTMWSFilter; --- 1,26 ---- /* ! * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved. */ /* ! * Licensed to the Apache Software Foundation (ASF) under one or more ! * contributor license agreements. See the NOTICE file distributed with ! * this work for additional information regarding copyright ownership. ! * The ASF licenses this file to You under the Apache License, Version 2.0 ! * (the "License"); you may not use this file except in compliance with ! * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ ! package com.sun.org.apache.xalan.internal.xsltc.dom; import com.sun.org.apache.xml.internal.dtm.DTM; import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase; import com.sun.org.apache.xml.internal.dtm.DTMException; import com.sun.org.apache.xml.internal.dtm.DTMWSFilter;
*** 39,93 **** import com.sun.org.apache.xml.internal.res.XMLMessages; import com.sun.org.apache.xml.internal.utils.SystemIDResolver; import com.sun.org.apache.xalan.internal.xsltc.trax.DOM2SAX; import com.sun.org.apache.xalan.internal.xsltc.trax.StAXEvent2SAX; import com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX; ! import org.xml.sax.InputSource; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; /** ! * The default implementation for the DTMManager. */ ! public class XSLTCDTMManager extends DTMManagerDefault ! { ! ! /** Set this to true if you want a dump of the DTM after creation */ ! private static final boolean DUMPTREE = false; ! ! /** Set this to true if you want basic diagnostics */ ! private static final boolean DEBUG = false; /** ! * Constructor DTMManagerDefault * */ ! public XSLTCDTMManager() ! { super(); } /** * Obtain a new instance of a <code>DTMManager</code>. * This static method creates a new factory instance. * The current implementation just returns a new XSLTCDTMManager instance. */ ! public static XSLTCDTMManager newInstance() ! { return new XSLTCDTMManager(); } /** * Creates a new instance of the XSLTC DTM Manager service. * Creates a new instance of the default class * <code>com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager</code>. */ ! public static XSLTCDTMManager createNewDTMManagerInstance() { ! return newInstance(); ! } /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a --- 29,81 ---- import com.sun.org.apache.xml.internal.res.XMLMessages; import com.sun.org.apache.xml.internal.utils.SystemIDResolver; import com.sun.org.apache.xalan.internal.xsltc.trax.DOM2SAX; import com.sun.org.apache.xalan.internal.xsltc.trax.StAXEvent2SAX; import com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX; ! import javax.xml.stream.XMLEventReader; ! import javax.xml.stream.XMLStreamReader; ! import javax.xml.transform.Source; ! import javax.xml.transform.dom.DOMSource; ! import javax.xml.transform.sax.SAXSource; ! import javax.xml.transform.stream.StreamSource; ! import javax.xml.transform.stax.StAXSource; ! import jdk.xml.internal.JdkXmlUtils; import org.xml.sax.InputSource; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; /** ! * The XSLTC DTMManager implementation. */ ! public class XSLTCDTMManager extends DTMManagerDefault { /** ! * Constructor XSLTCDTMManager * */ ! public XSLTCDTMManager() { super(); } /** * Obtain a new instance of a <code>DTMManager</code>. * This static method creates a new factory instance. * The current implementation just returns a new XSLTCDTMManager instance. */ ! public static XSLTCDTMManager newInstance() { return new XSLTCDTMManager(); } /** * Creates a new instance of the XSLTC DTM Manager service. * Creates a new instance of the default class * <code>com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager</code>. */ ! public static XSLTCDTMManager createNewDTMManagerInstance() { ! return newInstance(); ! } /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a
*** 169,188 **** * @param newNameTable true if we want to use a separate ExpandedNameTable * for this DTM. * * @return a non-null DTM reference. */ ! public DTM getDTM(Source source, boolean unique, ! DTMWSFilter whiteSpaceFilter, boolean incremental, ! boolean doIndexing, boolean buildIdIndex, ! boolean newNameTable) ! { ! return getDTM(source, unique, whiteSpaceFilter, incremental, ! doIndexing, false, 0, buildIdIndex, newNameTable); ! } ! /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a * new instance or an instance that it already created and may be being used * by someone else. --- 157,176 ---- * @param newNameTable true if we want to use a separate ExpandedNameTable * for this DTM. * * @return a non-null DTM reference. */ ! public DTM getDTM(Source source, boolean unique, ! DTMWSFilter whiteSpaceFilter, boolean incremental, ! boolean doIndexing, boolean buildIdIndex, ! boolean newNameTable) ! { ! return getDTM(source, unique, whiteSpaceFilter, incremental, ! doIndexing, false, 0, buildIdIndex, newNameTable); ! } ! /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a * new instance or an instance that it already created and may be being used * by someone else.
*** 210,225 **** public DTM getDTM(Source source, boolean unique, DTMWSFilter whiteSpaceFilter, boolean incremental, boolean doIndexing, boolean hasUserReader, int size, boolean buildIdIndex) { ! return getDTM(source, unique, whiteSpaceFilter, incremental, ! doIndexing, hasUserReader, size, ! buildIdIndex, false); ! } ! /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a * new instance or an instance that it already created and may be being used * by someone else. --- 198,213 ---- public DTM getDTM(Source source, boolean unique, DTMWSFilter whiteSpaceFilter, boolean incremental, boolean doIndexing, boolean hasUserReader, int size, boolean buildIdIndex) { ! return getDTM(source, unique, whiteSpaceFilter, incremental, ! doIndexing, hasUserReader, size, ! buildIdIndex, false); ! } ! /** * Get an instance of a DTM, loaded with the content from the * specified source. If the unique flag is true, a new instance will * always be returned. Otherwise it is up to the DTMManager to return a * new instance or an instance that it already created and may be being used * by someone else.
*** 244,263 **** * @param newNameTable true if we want to use a separate ExpandedNameTable * for this DTM. * * @return a non-null DTM reference. */ ! public DTM getDTM(Source source, boolean unique, ! DTMWSFilter whiteSpaceFilter, boolean incremental, ! boolean doIndexing, boolean hasUserReader, int size, ! boolean buildIdIndex, boolean newNameTable) ! { ! if(DEBUG && null != source) { ! System.out.println("Starting "+ ! (unique ? "UNIQUE" : "shared")+ ! " source: "+source.getSystemId()); } int dtmPos = getFirstFreeDTMID(); int documentID = dtmPos << IDENT_DTM_NODE_BITS; if ((null != source) && source instanceof StAXSource) { --- 232,253 ---- * @param newNameTable true if we want to use a separate ExpandedNameTable * for this DTM. * * @return a non-null DTM reference. */ ! public DTM getDTM(Source source, boolean unique, ! DTMWSFilter whiteSpaceFilter, boolean incremental, ! boolean doIndexing, boolean hasUserReader, int size, ! boolean buildIdIndex, boolean newNameTable) ! { ! /* Uncomment for debugging ! if (null != source) { ! System.out.println("Starting " + ! (unique ? "UNIQUE" : "shared") + ! " source: " + source.getSystemId()); } + */ int dtmPos = getFirstFreeDTMID(); int documentID = dtmPos << IDENT_DTM_NODE_BITS; if ((null != source) && source instanceof StAXSource) {
*** 296,316 **** } else if (staxStream2SAX != null) { staxStream2SAX.setContentHandler(dtm); staxStream2SAX.parse(); } ! ! } ! catch (RuntimeException re) { throw re; ! } ! catch (Exception e) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(e); } return dtm; ! }else if ((null != source) && source instanceof DOMSource) { final DOMSource domsrc = (DOMSource) source; final org.w3c.dom.Node node = domsrc.getNode(); final DOM2SAX dom2sax = new DOM2SAX(node); SAXImpl dtm; --- 286,303 ---- } else if (staxStream2SAX != null) { staxStream2SAX.setContentHandler(dtm); staxStream2SAX.parse(); } ! } catch (RuntimeException re) { throw re; ! } catch (Exception e) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(e); } return dtm; ! } else if ((null != source) && source instanceof DOMSource) { final DOMSource domsrc = (DOMSource) source; final org.w3c.dom.Node node = domsrc.getNode(); final DOM2SAX dom2sax = new DOM2SAX(node); SAXImpl dtm;
*** 332,353 **** dom2sax.setContentHandler(dtm); try { dom2sax.parse(); ! } ! catch (RuntimeException re) { throw re; ! } ! catch (Exception e) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(e); } return dtm; ! } ! else ! { boolean isSAXSource = (null != source) ? (source instanceof SAXSource) : true; boolean isStreamSource = (null != source) ? (source instanceof StreamSource) : false; --- 319,336 ---- dom2sax.setContentHandler(dtm); try { dom2sax.parse(); ! } catch (RuntimeException re) { throw re; ! } catch (Exception e) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(e); } return dtm; ! } else { boolean isSAXSource = (null != source) ? (source instanceof SAXSource) : true; boolean isStreamSource = (null != source) ? (source instanceof StreamSource) : false;
*** 409,423 **** if(!hasUserReader || null == reader.getErrorHandler()) { reader.setErrorHandler(dtm); } ! try { ! reader.setProperty("http://xml.org/sax/properties/lexical-handler", dtm); ! } ! catch (SAXNotRecognizedException e){} ! catch (SAXNotSupportedException e){} try { reader.parse(xmlSource); } catch (RuntimeException re) { --- 392,403 ---- if(!hasUserReader || null == reader.getErrorHandler()) { reader.setErrorHandler(dtm); } ! JdkXmlUtils.setXMLReaderPropertyIfSupport(reader, ! "http://xml.org/sax/properties/lexical-handler", dtm, false); try { reader.parse(xmlSource); } catch (RuntimeException re) {
*** 429,442 **** if (!hasUserReader) { releaseXMLReader(reader); } } ! if (DUMPTREE) { ! System.out.println("Dumping SAX2DOM"); ! dtm.dumpDTM(System.err); ! } return dtm; } else { // It should have been handled by a derived class or the caller --- 409,422 ---- if (!hasUserReader) { releaseXMLReader(reader); } } ! /* Uncomment for debugging ! System.out.println("Dumping SAX2DOM"); ! dtm.dumpDTM(System.err); ! */ return dtm; } else { // It should have been handled by a derived class or the caller
< prev index next >