Frames | No Frames |
1: /* StreamSource.java -- 2: Copyright (C) 2004, 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: package javax.xml.transform.stream; 39: 40: import java.io.File; 41: import java.io.InputStream; 42: import java.io.IOException; 43: import java.io.Reader; 44: import javax.xml.transform.Source; 45: 46: /** 47: * Specifies a stream from which to read the source XML data. 48: * 49: * @author (a href='mailto:dog@gnu.org'>Chris Burdess</a) 50: */ 51: public class StreamSource 52: implements Source 53: { 54: 55: /** 56: * Factory feature indicating that stream sources are supported. 57: */ 58: public static final String FEATURE = 59: "http://javax.xml.transform.stream.StreamSource/feature"; 60: 61: private String publicId; 62: private String systemId; 63: private InputStream inputStream; 64: private Reader reader; 65: 66: /** 67: * Default constructor. 68: */ 69: public StreamSource() 70: { 71: } 72: 73: /** 74: * Constructor with an input stream. 75: */ 76: public StreamSource(InputStream stream) 77: { 78: this.inputStream = stream; 79: } 80: 81: /** 82: * Constructor with an input stream and system ID. 83: */ 84: public StreamSource(InputStream stream, String systemId) 85: { 86: this.inputStream = stream; 87: this.systemId = systemId; 88: } 89: 90: /** 91: * Constructor with a reader. 92: * Prefer an input stream to a reader, so that the parser can use the 93: * character encoding specified in the XML. 94: */ 95: public StreamSource(Reader reader) 96: { 97: this.reader = reader; 98: } 99: 100: /** 101: * Constructor with a reader and system ID. 102: * Prefer an input stream to a reader, so that the parser can use the 103: * character encoding specified in the XML. 104: */ 105: public StreamSource(Reader reader, String systemId) 106: { 107: this.reader = reader; 108: this.systemId = systemId; 109: } 110: 111: /** 112: * Constructor with a system ID. 113: */ 114: public StreamSource(String systemId) 115: { 116: this.systemId = systemId; 117: } 118: 119: /** 120: * Constructor with a system ID specified as a File reference. 121: */ 122: public StreamSource(File file) 123: { 124: setSystemId(file); 125: } 126: 127: /** 128: * Sets the source input stream. 129: */ 130: public void setInputStream(InputStream stream) 131: { 132: this.inputStream = stream; 133: } 134: 135: /** 136: * Returns the source input stream. 137: */ 138: public InputStream getInputStream() 139: { 140: return inputStream; 141: } 142: 143: /** 144: * Sets the source reader. 145: * Prefer an input stream to a reader, so that the parser can use the 146: * character encoding specified in the XML. 147: */ 148: public void setReader(Reader reader) 149: { 150: this.reader = reader; 151: } 152: 153: /** 154: * Returns the source reader. 155: */ 156: public Reader getReader() 157: { 158: return reader; 159: } 160: 161: /** 162: * Sets the public ID for this source. 163: */ 164: public void setPublicId(String publicId) 165: { 166: this.publicId = publicId; 167: } 168: 169: /** 170: * Returns the public ID for this source. 171: */ 172: public String getPublicId() 173: { 174: return publicId; 175: } 176: 177: /** 178: * Sets the system ID for this source. 179: * If the input stream and reader are absent, the system ID will be used 180: * as a readable URL to locate the source data. 181: */ 182: public void setSystemId(String systemId) 183: { 184: this.systemId = systemId; 185: } 186: 187: /** 188: * Returns the system ID for this source. 189: */ 190: public String getSystemId() 191: { 192: return systemId; 193: } 194: 195: /** 196: * Sets the system ID using a File reference. 197: */ 198: public void setSystemId(File f) 199: { 200: try 201: { 202: this.systemId = f.toURL().toString(); 203: } 204: catch (IOException e) 205: { 206: throw new RuntimeException(e.getMessage(), e); 207: } 208: } 209: 210: }