KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > org > apache > xalan > internal > xsltc > trax > TrAXFilter


1 /*
2  * Copyright 2001-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 /*
17  * $Id: TrAXFilter.java,v 1.1.2.1 2006/09/19 01:07:40 jeffsuttor Exp $
18  */

19
20
21 package com.sun.org.apache.xalan.internal.xsltc.trax;
22
23 import java.io.IOException JavaDoc;
24 import javax.xml.XMLConstants JavaDoc;
25
26 import javax.xml.parsers.FactoryConfigurationError JavaDoc;
27 import javax.xml.parsers.ParserConfigurationException JavaDoc;
28 import javax.xml.parsers.SAXParser JavaDoc;
29 import javax.xml.parsers.SAXParserFactory JavaDoc;
30 import javax.xml.transform.ErrorListener JavaDoc;
31 import javax.xml.transform.Templates JavaDoc;
32 import javax.xml.transform.Transformer JavaDoc;
33 import javax.xml.transform.TransformerConfigurationException JavaDoc;
34 import javax.xml.transform.sax.SAXResult JavaDoc;
35
36 import com.sun.org.apache.xml.internal.utils.XMLReaderManager;
37
38 import org.xml.sax.ContentHandler JavaDoc;
39 import org.xml.sax.InputSource JavaDoc;
40 import org.xml.sax.SAXException JavaDoc;
41 import org.xml.sax.XMLReader JavaDoc;
42 import org.xml.sax.helpers.XMLFilterImpl JavaDoc;
43 import org.xml.sax.helpers.XMLReaderFactory JavaDoc;
44
45 /**
46  * skeleton extension of XMLFilterImpl for now.
47  * @author Santiago Pericas-Geertsen
48  * @author G. Todd Miller
49  */

50 public class TrAXFilter extends XMLFilterImpl JavaDoc {
51     private Templates JavaDoc _templates;
52     private TransformerImpl _transformer;
53     private TransformerHandlerImpl _transformerHandler;
54
55     public TrAXFilter(Templates JavaDoc templates) throws
56     TransformerConfigurationException JavaDoc
57     {
58     _templates = templates;
59     _transformer = (TransformerImpl) templates.newTransformer();
60         _transformerHandler = new TransformerHandlerImpl(_transformer);
61     }
62     
63     public Transformer JavaDoc getTransformer() {
64         return _transformer;
65     }
66
67     private void createParent() throws SAXException JavaDoc {
68     XMLReader JavaDoc parent = null;
69         try {
70             SAXParserFactory JavaDoc pfactory = SAXParserFactory.newInstance();
71             pfactory.setNamespaceAware(true);
72             
73             if (_transformer.isSecureProcessing()) {
74                 try {
75                     pfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
76                 }
77                 catch (SAXException JavaDoc e) {}
78             }
79
80             SAXParser JavaDoc saxparser = pfactory.newSAXParser();
81             parent = saxparser.getXMLReader();
82         }
83         catch (ParserConfigurationException JavaDoc e) {
84             throw new SAXException JavaDoc(e);
85         }
86         catch (FactoryConfigurationError JavaDoc e) {
87             throw new SAXException JavaDoc(e.toString());
88         }
89
90         if (parent == null) {
91             parent = XMLReaderFactory.createXMLReader();
92         }
93
94         // make this XMLReader the parent of this filter
95
setParent(parent);
96     }
97
98     public void parse (InputSource JavaDoc input) throws SAXException JavaDoc, IOException JavaDoc
99     {
100         XMLReader JavaDoc managedReader = null;
101
102         try {
103             if (getParent() == null) {
104                 try {
105                     managedReader = XMLReaderManager.getInstance()
106                                                     .getXMLReader();
107                     setParent(managedReader);
108                 } catch (SAXException JavaDoc e) {
109                     throw new SAXException JavaDoc(e.toString());
110                 }
111             }
112
113             // call parse on the parent
114
getParent().parse(input);
115         } finally {
116             if (managedReader != null) {
117                 XMLReaderManager.getInstance().releaseXMLReader(managedReader);
118             }
119         }
120     }
121
122     public void parse (String JavaDoc systemId) throws SAXException JavaDoc, IOException JavaDoc
123     {
124         parse(new InputSource JavaDoc(systemId));
125     }
126
127     public void setContentHandler (ContentHandler JavaDoc handler)
128     {
129     _transformerHandler.setResult(new SAXResult JavaDoc(handler));
130     if (getParent() == null) {
131                 try {
132                     createParent();
133                 }
134                 catch (SAXException JavaDoc e) {
135                    return;
136                 }
137     }
138     getParent().setContentHandler(_transformerHandler);
139     }
140
141     public void setErrorListener (ErrorListener JavaDoc handler) { }
142 }
143
Popular Tags