< 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 >