jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SmartTransformerFactoryImpl.java
changeset 31497 4a6b2e733c0d
parent 31302 f66c18528472
child 31498 8ebacfaf4ba6
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SmartTransformerFactoryImpl.java	Wed Jul 05 20:39:43 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-/*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
- */
-/*
- * Copyright 2001-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: SmartTransformerFactoryImpl.java,v 1.2.4.1 2005/09/14 09:57:13 pvedula Exp $
- */
-
-
-package com.sun.org.apache.xalan.internal.xsltc.trax;
-
-import javax.xml.XMLConstants;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TemplatesHandler;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
-import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
-import org.xml.sax.XMLFilter;
-
-/**
- * Implementation of a transformer factory that uses an XSLTC
- * transformer factory for the creation of Templates objects
- * and uses the Xalan processor transformer factory for the
- * creation of Transformer objects.
- * @author G. Todd Miller
- */
-public class SmartTransformerFactoryImpl extends SAXTransformerFactory
-{
-    /**
-     * <p>Name of class as a constant to use for debugging.</p>
-     */
-    private static final String CLASS_NAME = "SmartTransformerFactoryImpl";
-
-    private SAXTransformerFactory _xsltcFactory = null;
-    private SAXTransformerFactory _xalanFactory = null;
-    private SAXTransformerFactory _currFactory = null;
-    private ErrorListener      _errorlistener = null;
-    private URIResolver        _uriresolver = null;
-
-    /**
-     * <p>State of secure processing feature.</p>
-     */
-    private boolean featureSecureProcessing = false;
-
-    /**
-     * implementation of the SmartTransformerFactory. This factory
-     * uses com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory
-     * to return Templates objects; and uses
-     * com.sun.org.apache.xalan.internal.processor.TransformerFactory
-     * to return Transformer objects.
-     */
-    public SmartTransformerFactoryImpl() { }
-
-    private void createXSLTCTransformerFactory() {
-        _xsltcFactory = new TransformerFactoryImpl();
-        _currFactory = _xsltcFactory;
-    }
-
-    private void createXalanTransformerFactory() {
-        final String xalanMessage =
-            "com.sun.org.apache.xalan.internal.xsltc.trax.SmartTransformerFactoryImpl "+
-            "could not create an "+
-            "com.sun.org.apache.xalan.internal.processor.TransformerFactoryImpl.";
-        // try to create instance of Xalan factory...
-        try {
-            Class xalanFactClass = ObjectFactory.findProviderClass(
-                "com.sun.org.apache.xalan.internal.processor.TransformerFactoryImpl",
-                true);
-            _xalanFactory = (SAXTransformerFactory)
-                xalanFactClass.newInstance();
-        }
-        catch (ClassNotFoundException e) {
-            System.err.println(xalanMessage);
-        }
-        catch (InstantiationException e) {
-            System.err.println(xalanMessage);
-        }
-        catch (IllegalAccessException e) {
-            System.err.println(xalanMessage);
-        }
-        _currFactory = _xalanFactory;
-    }
-
-    public void setErrorListener(ErrorListener listener)
-        throws IllegalArgumentException
-    {
-        _errorlistener = listener;
-    }
-
-    public ErrorListener getErrorListener() {
-        return _errorlistener;
-    }
-
-    public Object getAttribute(String name)
-        throws IllegalArgumentException
-    {
-        // GTM: NB: 'debug' should change to something more unique...
-        if ((name.equals("translet-name")) || (name.equals("debug"))) {
-            if (_xsltcFactory == null) {
-                createXSLTCTransformerFactory();
-            }
-            return _xsltcFactory.getAttribute(name);
-        }
-        else {
-            if (_xalanFactory == null) {
-                createXalanTransformerFactory();
-            }
-            return _xalanFactory.getAttribute(name);
-        }
-    }
-
-    public void setAttribute(String name, Object value)
-        throws IllegalArgumentException {
-        // GTM: NB: 'debug' should change to something more unique...
-        if ((name.equals("translet-name")) || (name.equals("debug"))) {
-            if (_xsltcFactory == null) {
-                createXSLTCTransformerFactory();
-            }
-            _xsltcFactory.setAttribute(name, value);
-        }
-        else {
-            if (_xalanFactory == null) {
-                createXalanTransformerFactory();
-            }
-            _xalanFactory.setAttribute(name, value);
-        }
-    }
-
-    /**
-     * <p>Set a feature for this <code>SmartTransformerFactory</code> and <code>Transformer</code>s
-     * or <code>Template</code>s created by this factory.</p>
-     *
-     * <p>
-     * Feature names are fully qualified {@link java.net.URI}s.
-     * Implementations may define their own features.
-     * An {@link TransformerConfigurationException} is thrown if this <code>TransformerFactory</code> or the
-     * <code>Transformer</code>s or <code>Template</code>s it creates cannot support the feature.
-     * It is possible for an <code>TransformerFactory</code> to expose a feature value but be unable to change its state.
-     * </p>
-     *
-     * <p>See {@link javax.xml.transform.TransformerFactory} for full documentation of specific features.</p>
-     *
-     * @param name Feature name.
-     * @param value Is feature state <code>true</code> or <code>false</code>.
-     *
-     * @throws TransformerConfigurationException if this <code>TransformerFactory</code>
-     *   or the <code>Transformer</code>s or <code>Template</code>s it creates cannot support this feature.
-     * @throws NullPointerException If the <code>name</code> parameter is null.
-     */
-    public void setFeature(String name, boolean value)
-        throws TransformerConfigurationException {
-
-        // feature name cannot be null
-        if (name == null) {
-            ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SET_FEATURE_NULL_NAME);
-            throw new NullPointerException(err.toString());
-        }
-        // secure processing?
-        else if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
-            featureSecureProcessing = value;
-            // all done processing feature
-            return;
-        }
-        else {
-            // unknown feature
-            ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNSUPPORTED_FEATURE, name);
-            throw new TransformerConfigurationException(err.toString());
-        }
-    }
-
-    /**
-     * javax.xml.transform.sax.TransformerFactory implementation.
-     * Look up the value of a feature (to see if it is supported).
-     * This method must be updated as the various methods and features of this
-     * class are implemented.
-     *
-     * @param name The feature name
-     * @return 'true' if feature is supported, 'false' if not
-     */
-    public boolean getFeature(String name) {
-        // All supported features should be listed here
-        String[] features = {
-            DOMSource.FEATURE,
-            DOMResult.FEATURE,
-            SAXSource.FEATURE,
-            SAXResult.FEATURE,
-            StreamSource.FEATURE,
-            StreamResult.FEATURE
-        };
-
-        // feature name cannot be null
-        if (name == null) {
-            ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_GET_FEATURE_NULL_NAME);
-            throw new NullPointerException(err.toString());
-        }
-
-        // Inefficient, but it really does not matter in a function like this
-        for (int i = 0; i < features.length; i++) {
-            if (name.equals(features[i]))
-                return true;
-        }
-
-        // secure processing?
-        if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
-            return featureSecureProcessing;
-        }
-
-        // unknown feature
-        return false;
-    }
-
-    public URIResolver getURIResolver() {
-        return _uriresolver;
-    }
-
-    public void setURIResolver(URIResolver resolver) {
-        _uriresolver = resolver;
-    }
-
-    public Source getAssociatedStylesheet(Source source, String media,
-                                          String title, String charset)
-        throws TransformerConfigurationException
-    {
-        if (_currFactory == null) {
-            createXSLTCTransformerFactory();
-        }
-        return _currFactory.getAssociatedStylesheet(source, media,
-                title, charset);
-    }
-
-    /**
-     * Create a Transformer object that copies the input document to the
-     * result. Uses the com.sun.org.apache.xalan.internal.processor.TransformerFactory.
-     * @return A Transformer object.
-     */
-    public Transformer newTransformer()
-        throws TransformerConfigurationException
-    {
-        if (_xalanFactory == null) {
-            createXalanTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xalanFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xalanFactory.setURIResolver(_uriresolver);
-        }
-        _currFactory = _xalanFactory;
-        return _currFactory.newTransformer();
-    }
-
-    /**
-     * Create a Transformer object that from the input stylesheet
-     * Uses the com.sun.org.apache.xalan.internal.processor.TransformerFactory.
-     * @param source the stylesheet.
-     * @return A Transformer object.
-     */
-    public Transformer newTransformer(Source source) throws
-        TransformerConfigurationException
-    {
-        if (_xalanFactory == null) {
-            createXalanTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xalanFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xalanFactory.setURIResolver(_uriresolver);
-        }
-        _currFactory = _xalanFactory;
-        return _currFactory.newTransformer(source);
-    }
-
-    /**
-     * Create a Templates object that from the input stylesheet
-     * Uses the com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory.
-     * @param source the stylesheet.
-     * @return A Templates object.
-     */
-    public Templates newTemplates(Source source)
-        throws TransformerConfigurationException
-    {
-        if (_xsltcFactory == null) {
-            createXSLTCTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xsltcFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xsltcFactory.setURIResolver(_uriresolver);
-        }
-        _currFactory = _xsltcFactory;
-        return _currFactory.newTemplates(source);
-    }
-
-    /**
-     * Get a TemplatesHandler object that can process SAX ContentHandler
-     * events into a Templates object. Uses the
-     * com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory.
-     */
-    public TemplatesHandler newTemplatesHandler()
-        throws TransformerConfigurationException
-    {
-        if (_xsltcFactory == null) {
-            createXSLTCTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xsltcFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xsltcFactory.setURIResolver(_uriresolver);
-        }
-        return _xsltcFactory.newTemplatesHandler();
-    }
-
-    /**
-     * Get a TransformerHandler object that can process SAX ContentHandler
-     * events based on a copy transformer.
-     * Uses com.sun.org.apache.xalan.internal.processor.TransformerFactory.
-     */
-    public TransformerHandler newTransformerHandler()
-        throws TransformerConfigurationException
-    {
-        if (_xalanFactory == null) {
-            createXalanTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xalanFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xalanFactory.setURIResolver(_uriresolver);
-        }
-        return _xalanFactory.newTransformerHandler();
-    }
-
-    /**
-     * Get a TransformerHandler object that can process SAX ContentHandler
-     * events based on a transformer specified by the stylesheet Source.
-     * Uses com.sun.org.apache.xalan.internal.processor.TransformerFactory.
-     */
-    public TransformerHandler newTransformerHandler(Source src)
-        throws TransformerConfigurationException
-    {
-        if (_xalanFactory == null) {
-            createXalanTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xalanFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xalanFactory.setURIResolver(_uriresolver);
-        }
-        return _xalanFactory.newTransformerHandler(src);
-    }
-
-
-    /**
-     * Get a TransformerHandler object that can process SAX ContentHandler
-     * events based on a transformer specified by the stylesheet Source.
-     * Uses com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory.
-     */
-    public TransformerHandler newTransformerHandler(Templates templates)
-        throws TransformerConfigurationException
-    {
-        if (_xsltcFactory == null) {
-            createXSLTCTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xsltcFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xsltcFactory.setURIResolver(_uriresolver);
-        }
-        return _xsltcFactory.newTransformerHandler(templates);
-    }
-
-
-    /**
-     * Create an XMLFilter that uses the given source as the
-     * transformation instructions. Uses
-     * com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory.
-     */
-    public XMLFilter newXMLFilter(Source src)
-        throws TransformerConfigurationException {
-        if (_xsltcFactory == null) {
-            createXSLTCTransformerFactory();
-        }
-        if (_errorlistener != null) {
-            _xsltcFactory.setErrorListener(_errorlistener);
-        }
-        if (_uriresolver != null) {
-            _xsltcFactory.setURIResolver(_uriresolver);
-        }
-        Templates templates = _xsltcFactory.newTemplates(src);
-        if (templates == null ) return null;
-        return newXMLFilter(templates);
-    }
-
-    /*
-     * Create an XMLFilter that uses the given source as the
-     * transformation instructions. Uses
-     * com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactory.
-     */
-    public XMLFilter newXMLFilter(Templates templates)
-        throws TransformerConfigurationException {
-        try {
-            return new com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter(templates);
-        }
-        catch(TransformerConfigurationException e1) {
-            if (_xsltcFactory == null) {
-                createXSLTCTransformerFactory();
-            }
-            ErrorListener errorListener = _xsltcFactory.getErrorListener();
-            if(errorListener != null) {
-                try {
-                    errorListener.fatalError(e1);
-                    return null;
-                }
-                catch( TransformerException e2) {
-                    new TransformerConfigurationException(e2);
-                }
-            }
-            throw e1;
-        }
-    }
-}