01: /*
02: * Fast Infoset ver. 0.1 software ("Software")
03: *
04: * Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
05: *
06: * Software is licensed under the Apache License, Version 2.0 (the "License");
07: * you may not use this file except in compliance with the License. You may
08: * obtain a copy of the License at:
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15: * License for the specific language governing permissions and limitations.
16: *
17: * Sun supports and benefits from the global community of open source
18: * developers, and thanks the community for its important contributions and
19: * open standards-based technology, which Sun has adopted into many of its
20: * products.
21: *
22: * Please note that portions of Software may be provided with notices and
23: * open source licenses from such communities and third parties that govern the
24: * use of those portions, and any licenses granted hereunder do not alter any
25: * rights and obligations you may have under such open source licenses,
26: * however, the disclaimer of warranty and limitation of liability provisions
27: * in this License will apply to all Software in this distribution.
28: *
29: * You acknowledge that the Software is not designed, licensed or intended
30: * for use in the design, construction, operation or maintenance of any nuclear
31: * facility.
32: *
33: * Apache License
34: * Version 2.0, January 2004
35: * http://www.apache.org/licenses/
36: *
37: */
38:
39: package org.jvnet.fastinfoset;
40:
41: import java.io.InputStream;
42:
43: import javax.xml.transform.sax.SAXSource;
44:
45: import org.xml.sax.InputSource;
46: import org.xml.sax.XMLReader;
47:
48: import com.sun.xml.fastinfoset.sax.SAXDocumentParser;
49:
50: /**
51: * A JAXP Source implementation that supports the parsing fast
52: * infoset document for use by applications that expect a Source.
53: *
54: * <P>The derivation of FISource from SAXSource is an implementation
55: * detail.<P>
56: *
57: * <P>This implementation is designed for interoperation with JAXP and is not
58: * not designed with performance in mind. It is recommended that for performant
59: * interoperation alternative parser specific solutions be used.<P>
60: *
61: * <P>Applications shall obey the following restrictions:
62: * <UL>
63: * <LI>The setXMLReader and setInputSource shall not be called.</LI>
64: * <LI>The XMLReader object obtained by the getXMLReader method shall
65: * be used only for parsing the InputSource object returned by
66: * the getInputSource method.</LI>
67: * <LI>The InputSource object obtained by the getInputSource method shall
68: * be used only for being parsed by the XMLReader object returned by
69: * the getXMLReader method.</LI>
70: * </UL>
71: * </P>
72: */
73: public class FastInfosetSource extends SAXSource {
74:
75: public FastInfosetSource(InputStream inputStream) {
76: super (new InputSource(inputStream));
77: }
78:
79: public XMLReader getXMLReader() {
80: XMLReader reader = super .getXMLReader();
81: if (reader == null) {
82: reader = new SAXDocumentParser();
83: setXMLReader(reader);
84: }
85: ((SAXDocumentParser) reader).setInputStream(getInputStream());
86: return reader;
87: }
88:
89: public InputStream getInputStream() {
90: return getInputSource().getByteStream();
91: }
92:
93: public void setInputStream(InputStream inputStream) {
94: setInputSource(new InputSource(inputStream));
95: }
96: }
|