blob: 792a0dd25b8af887f0aa987e2fcb721960edd2a8 [file] [log] [blame]
<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT> /*<a name="line.1"></a>
<FONT color="green">002</FONT> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<FONT color="green">003</FONT> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<FONT color="green">004</FONT> * distributed with this work for additional information<a name="line.4"></a>
<FONT color="green">005</FONT> * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a>
<FONT color="green">006</FONT> * to you under the Apache License, Version 2.0 (the "License");<a name="line.6"></a>
<FONT color="green">007</FONT> * you may not use this file except in compliance with the License.<a name="line.7"></a>
<FONT color="green">008</FONT> * You may obtain a copy of the License at<a name="line.8"></a>
<FONT color="green">009</FONT> *<a name="line.9"></a>
<FONT color="green">010</FONT> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<FONT color="green">011</FONT> *<a name="line.11"></a>
<FONT color="green">012</FONT> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<FONT color="green">013</FONT> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<FONT color="green">014</FONT> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<FONT color="green">015</FONT> * See the License for the specific language governing permissions and<a name="line.15"></a>
<FONT color="green">016</FONT> * limitations under the License.<a name="line.16"></a>
<FONT color="green">017</FONT> */<a name="line.17"></a>
<FONT color="green">018</FONT> /*<a name="line.18"></a>
<FONT color="green">019</FONT> * $Id: DOMOutputImpl.java 1225426 2011-12-29 04:13:08Z mrglavas $<a name="line.19"></a>
<FONT color="green">020</FONT> */<a name="line.20"></a>
<FONT color="green">021</FONT> <a name="line.21"></a>
<FONT color="green">022</FONT> package org.apache.xml.serializer.dom3;<a name="line.22"></a>
<FONT color="green">023</FONT> <a name="line.23"></a>
<FONT color="green">024</FONT> import org.w3c.dom.ls.LSOutput;<a name="line.24"></a>
<FONT color="green">025</FONT> <a name="line.25"></a>
<FONT color="green">026</FONT> import java.io.Writer;<a name="line.26"></a>
<FONT color="green">027</FONT> import java.io.OutputStream;<a name="line.27"></a>
<FONT color="green">028</FONT> <a name="line.28"></a>
<FONT color="green">029</FONT> /**<a name="line.29"></a>
<FONT color="green">030</FONT> * This is a copy of the Xerces-2J class org.apache.xerces.dom.DOMOutputImpl.java<a name="line.30"></a>
<FONT color="green">031</FONT> * <a name="line.31"></a>
<FONT color="green">032</FONT> * This class represents an output destination for data.<a name="line.32"></a>
<FONT color="green">033</FONT> * This interface allows an application to encapsulate information about an<a name="line.33"></a>
<FONT color="green">034</FONT> * output destination in a single object, which may include a URI, a byte stream<a name="line.34"></a>
<FONT color="green">035</FONT> * (possibly with a specifiedencoding), a base URI, and/or a character stream.<a name="line.35"></a>
<FONT color="green">036</FONT> * The exact definitions of a byte stream and a character stream are binding<a name="line.36"></a>
<FONT color="green">037</FONT> * dependent.<a name="line.37"></a>
<FONT color="green">038</FONT> * The application is expected to provide objects that implement this interface<a name="line.38"></a>
<FONT color="green">039</FONT> * whenever such objects are needed. The application can either provide its<a name="line.39"></a>
<FONT color="green">040</FONT> * own objects that implement this interface, or it can use the generic factory<a name="line.40"></a>
<FONT color="green">041</FONT> * method DOMImplementationLS.createLSOutput() to create objects that<a name="line.41"></a>
<FONT color="green">042</FONT> * implement this interface.<a name="line.42"></a>
<FONT color="green">043</FONT> * The DOMSerializer will use the LSOutput object to determine where to<a name="line.43"></a>
<FONT color="green">044</FONT> * serialize the output to. The DOMSerializer will look at the different<a name="line.44"></a>
<FONT color="green">045</FONT> * outputs specified in the LSOutput in the following order to know which one<a name="line.45"></a>
<FONT color="green">046</FONT> * to output to, the first one that data can be output to will be used:<a name="line.46"></a>
<FONT color="green">047</FONT> * 1.LSOutput.characterStream<a name="line.47"></a>
<FONT color="green">048</FONT> * 2.LSOutput.byteStream<a name="line.48"></a>
<FONT color="green">049</FONT> * 3.LSOutput.systemId<a name="line.49"></a>
<FONT color="green">050</FONT> * LSOutput objects belong to the application. The DOM implementation will<a name="line.50"></a>
<FONT color="green">051</FONT> * never modify them (though it may make copies and modify the copies,<a name="line.51"></a>
<FONT color="green">052</FONT> * if necessary).<a name="line.52"></a>
<FONT color="green">053</FONT> *<a name="line.53"></a>
<FONT color="green">054</FONT> *<a name="line.54"></a>
<FONT color="green">055</FONT> * @author Arun Yadav, Sun Microsytems<a name="line.55"></a>
<FONT color="green">056</FONT> * @author Gopal Sharma, Sun Microsystems<a name="line.56"></a>
<FONT color="green">057</FONT> * @version $Id : <a name="line.57"></a>
<FONT color="green">058</FONT> * @xsl.usage internal <a name="line.58"></a>
<FONT color="green">059</FONT> */<a name="line.59"></a>
<FONT color="green">060</FONT> <a name="line.60"></a>
<FONT color="green">061</FONT> final class DOMOutputImpl implements LSOutput {<a name="line.61"></a>
<FONT color="green">062</FONT> <a name="line.62"></a>
<FONT color="green">063</FONT> private Writer fCharStream = null;<a name="line.63"></a>
<FONT color="green">064</FONT> private OutputStream fByteStream = null;<a name="line.64"></a>
<FONT color="green">065</FONT> private String fSystemId = null;<a name="line.65"></a>
<FONT color="green">066</FONT> private String fEncoding = null;<a name="line.66"></a>
<FONT color="green">067</FONT> <a name="line.67"></a>
<FONT color="green">068</FONT> /**<a name="line.68"></a>
<FONT color="green">069</FONT> * Default Constructor<a name="line.69"></a>
<FONT color="green">070</FONT> */<a name="line.70"></a>
<FONT color="green">071</FONT> DOMOutputImpl() {}<a name="line.71"></a>
<FONT color="green">072</FONT> <a name="line.72"></a>
<FONT color="green">073</FONT> /**<a name="line.73"></a>
<FONT color="green">074</FONT> * An attribute of a language and binding dependent type that represents a<a name="line.74"></a>
<FONT color="green">075</FONT> * writable stream of bytes. If the application knows the character encoding<a name="line.75"></a>
<FONT color="green">076</FONT> * of the byte stream, it should set the encoding attribute. Setting the<a name="line.76"></a>
<FONT color="green">077</FONT> * encoding in this way will override any encoding specified in an XML<a name="line.77"></a>
<FONT color="green">078</FONT> * declaration in the data.<a name="line.78"></a>
<FONT color="green">079</FONT> */<a name="line.79"></a>
<FONT color="green">080</FONT> <a name="line.80"></a>
<FONT color="green">081</FONT> public Writer getCharacterStream(){<a name="line.81"></a>
<FONT color="green">082</FONT> return fCharStream;<a name="line.82"></a>
<FONT color="green">083</FONT> };<a name="line.83"></a>
<FONT color="green">084</FONT> <a name="line.84"></a>
<FONT color="green">085</FONT> /**<a name="line.85"></a>
<FONT color="green">086</FONT> * An attribute of a language and binding dependent type that represents a<a name="line.86"></a>
<FONT color="green">087</FONT> * writable stream of bytes. If the application knows the character encoding<a name="line.87"></a>
<FONT color="green">088</FONT> * of the byte stream, it should set the encoding attribute. Setting the<a name="line.88"></a>
<FONT color="green">089</FONT> * encoding in this way will override any encoding specified in an XML<a name="line.89"></a>
<FONT color="green">090</FONT> * declaration in the data.<a name="line.90"></a>
<FONT color="green">091</FONT> */<a name="line.91"></a>
<FONT color="green">092</FONT> <a name="line.92"></a>
<FONT color="green">093</FONT> public void setCharacterStream(Writer characterStream){<a name="line.93"></a>
<FONT color="green">094</FONT> fCharStream = characterStream;<a name="line.94"></a>
<FONT color="green">095</FONT> };<a name="line.95"></a>
<FONT color="green">096</FONT> <a name="line.96"></a>
<FONT color="green">097</FONT> /**<a name="line.97"></a>
<FONT color="green">098</FONT> * Depending on the language binding in use, this attribute may not be<a name="line.98"></a>
<FONT color="green">099</FONT> * available. An attribute of a language and binding dependent type that<a name="line.99"></a>
<FONT color="green">100</FONT> * represents a writable stream to which 16-bit units can be output. The<a name="line.100"></a>
<FONT color="green">101</FONT> * application must encode the stream using UTF-16 (defined in [Unicode] and<a name="line.101"></a>
<FONT color="green">102</FONT> * Amendment 1 of [ISO/IEC 10646]).<a name="line.102"></a>
<FONT color="green">103</FONT> */<a name="line.103"></a>
<FONT color="green">104</FONT> <a name="line.104"></a>
<FONT color="green">105</FONT> public OutputStream getByteStream(){<a name="line.105"></a>
<FONT color="green">106</FONT> return fByteStream;<a name="line.106"></a>
<FONT color="green">107</FONT> };<a name="line.107"></a>
<FONT color="green">108</FONT> <a name="line.108"></a>
<FONT color="green">109</FONT> /**<a name="line.109"></a>
<FONT color="green">110</FONT> * Depending on the language binding in use, this attribute may not be<a name="line.110"></a>
<FONT color="green">111</FONT> * available. An attribute of a language and binding dependent type that<a name="line.111"></a>
<FONT color="green">112</FONT> * represents a writable stream to which 16-bit units can be output. The<a name="line.112"></a>
<FONT color="green">113</FONT> * application must encode the stream using UTF-16 (defined in [Unicode] and<a name="line.113"></a>
<FONT color="green">114</FONT> * Amendment 1 of [ISO/IEC 10646]).<a name="line.114"></a>
<FONT color="green">115</FONT> */<a name="line.115"></a>
<FONT color="green">116</FONT> <a name="line.116"></a>
<FONT color="green">117</FONT> public void setByteStream(OutputStream byteStream){<a name="line.117"></a>
<FONT color="green">118</FONT> fByteStream = byteStream;<a name="line.118"></a>
<FONT color="green">119</FONT> };<a name="line.119"></a>
<FONT color="green">120</FONT> <a name="line.120"></a>
<FONT color="green">121</FONT> /**<a name="line.121"></a>
<FONT color="green">122</FONT> * The system identifier, a URI reference [IETF RFC 2396], for this output<a name="line.122"></a>
<FONT color="green">123</FONT> * destination. If the application knows the character encoding of the<a name="line.123"></a>
<FONT color="green">124</FONT> * object pointed to by the system identifier, it can set the encoding<a name="line.124"></a>
<FONT color="green">125</FONT> * using the encoding attribute. If the system ID is a relative URI<a name="line.125"></a>
<FONT color="green">126</FONT> * reference (see section 5 in [IETF RFC 2396]), the behavior is<a name="line.126"></a>
<FONT color="green">127</FONT> * implementation dependent.<a name="line.127"></a>
<FONT color="green">128</FONT> */<a name="line.128"></a>
<FONT color="green">129</FONT> <a name="line.129"></a>
<FONT color="green">130</FONT> public String getSystemId(){<a name="line.130"></a>
<FONT color="green">131</FONT> return fSystemId;<a name="line.131"></a>
<FONT color="green">132</FONT> };<a name="line.132"></a>
<FONT color="green">133</FONT> <a name="line.133"></a>
<FONT color="green">134</FONT> /**<a name="line.134"></a>
<FONT color="green">135</FONT> * The system identifier, a URI reference [IETF RFC 2396], for this output<a name="line.135"></a>
<FONT color="green">136</FONT> * destination. If the application knows the character encoding of the<a name="line.136"></a>
<FONT color="green">137</FONT> * object pointed to by the system identifier, it can set the encoding<a name="line.137"></a>
<FONT color="green">138</FONT> * using the encoding attribute. If the system ID is a relative URI<a name="line.138"></a>
<FONT color="green">139</FONT> * reference (see section 5 in [IETF RFC 2396]), the behavior is<a name="line.139"></a>
<FONT color="green">140</FONT> * implementation dependent.<a name="line.140"></a>
<FONT color="green">141</FONT> */<a name="line.141"></a>
<FONT color="green">142</FONT> <a name="line.142"></a>
<FONT color="green">143</FONT> public void setSystemId(String systemId){<a name="line.143"></a>
<FONT color="green">144</FONT> fSystemId = systemId;<a name="line.144"></a>
<FONT color="green">145</FONT> };<a name="line.145"></a>
<FONT color="green">146</FONT> <a name="line.146"></a>
<FONT color="green">147</FONT> /**<a name="line.147"></a>
<FONT color="green">148</FONT> * The character encoding, if known. The encoding must be a string<a name="line.148"></a>
<FONT color="green">149</FONT> * acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3<a name="line.149"></a>
<FONT color="green">150</FONT> * "Character Encoding in Entities"). This attribute has no effect when the<a name="line.150"></a>
<FONT color="green">151</FONT> * application provides a character stream or string data. For other sources<a name="line.151"></a>
<FONT color="green">152</FONT> * of input, an encoding specified by means of this attribute will override<a name="line.152"></a>
<FONT color="green">153</FONT> * any encoding specified in the XML declaration or the Text declaration, or<a name="line.153"></a>
<FONT color="green">154</FONT> * an encoding obtained from a higher level protocol, such as HTTP<a name="line.154"></a>
<FONT color="green">155</FONT> * [IETF RFC 2616].<a name="line.155"></a>
<FONT color="green">156</FONT> */<a name="line.156"></a>
<FONT color="green">157</FONT> <a name="line.157"></a>
<FONT color="green">158</FONT> public String getEncoding(){<a name="line.158"></a>
<FONT color="green">159</FONT> return fEncoding;<a name="line.159"></a>
<FONT color="green">160</FONT> };<a name="line.160"></a>
<FONT color="green">161</FONT> <a name="line.161"></a>
<FONT color="green">162</FONT> /**<a name="line.162"></a>
<FONT color="green">163</FONT> * The character encoding, if known. The encoding must be a string<a name="line.163"></a>
<FONT color="green">164</FONT> * acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3<a name="line.164"></a>
<FONT color="green">165</FONT> * "Character Encoding in Entities"). This attribute has no effect when the<a name="line.165"></a>
<FONT color="green">166</FONT> * application provides a character stream or string data. For other sources<a name="line.166"></a>
<FONT color="green">167</FONT> * of input, an encoding specified by means of this attribute will override<a name="line.167"></a>
<FONT color="green">168</FONT> * any encoding specified in the XML declaration or the Text declaration, or<a name="line.168"></a>
<FONT color="green">169</FONT> * an encoding obtained from a higher level protocol, such as HTTP<a name="line.169"></a>
<FONT color="green">170</FONT> * [IETF RFC 2616].<a name="line.170"></a>
<FONT color="green">171</FONT> */<a name="line.171"></a>
<FONT color="green">172</FONT> <a name="line.172"></a>
<FONT color="green">173</FONT> public void setEncoding(String encoding){<a name="line.173"></a>
<FONT color="green">174</FONT> fEncoding = encoding;<a name="line.174"></a>
<FONT color="green">175</FONT> };<a name="line.175"></a>
<FONT color="green">176</FONT> <a name="line.176"></a>
<FONT color="green">177</FONT> }//DOMOutputImpl<a name="line.177"></a>
</PRE>
</BODY>
</HTML>