1 /*
2  * reserved comment block
3  * DO NOT REMOVE OR ALTER!
4  */
5 /*
6  * Licensed to the Apache Software Foundation (ASF) under one or more
7  * contributor license agreements.  See the NOTICE file distributed with
8  * this work for additional information regarding copyright ownership.
9  * The ASF licenses this file to You under the Apache License, Version 2.0
10  * (the "License"); you may not use this file except in compliance with
11  * the License.  You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21 
22 package com.sun.org.apache.xml.internal.serializer;
23 
24 import java.io.IOException;
25 
26 /**
27  * It is unfortunate that java.io.Writer is a class rather than an interface.
28  * The serializer has a number of classes that extend java.io.Writer
29  * and which send their ouput to a yet another wrapped Writer or OutputStream.
30  *
31  * The purpose of this interface is to force such classes to over-ride all of
32  * the important methods defined on the java.io.Writer class, namely these:
33  * <code>
34  * write(int val)
35  * write(char[] chars)
36  * write(char[] chars, int start, int count)
37  * write(String chars)
38  * write(String chars, int start, int count)
39  * flush()
40  * close()
41  * </code>
42  * In this manner nothing will accidentally go directly to
43  * the base class rather than to the wrapped Writer or OutputStream.
44  *
45  * The purpose of this class is to have a uniform way of chaining the output of one writer to
46  * the next writer in the chain. In addition there are methods to obtain the Writer or
47  * OutputStream that this object sends its output to.
48  *
49  * This interface is only for internal use withing the serializer.
50  * @xsl.usage internal
51  */
52 interface WriterChain
53 {
54     /** This method forces us to over-ride the method defined in java.io.Writer */
write(int val)55     public void write(int val) throws IOException;
56     /** This method forces us to over-ride the method defined in java.io.Writer */
write(char[] chars)57     public void write(char[] chars) throws IOException;
58     /** This method forces us to over-ride the method defined in java.io.Writer */
write(char[] chars, int start, int count)59     public void write(char[] chars, int start, int count) throws IOException;
60     /** This method forces us to over-ride the method defined in java.io.Writer */
write(String chars)61     public void write(String chars) throws IOException;
62     /** This method forces us to over-ride the method defined in java.io.Writer */
write(String chars, int start, int count)63     public void write(String chars, int start, int count) throws IOException;
64     /** This method forces us to over-ride the method defined in java.io.Writer */
flush()65     public void flush() throws IOException;
66     /** This method forces us to over-ride the method defined in java.io.Writer */
close()67     public void close() throws IOException;
68 
69     /**
70      * If this method returns null, getOutputStream() must return non-null.
71      * Get the writer that this writer sends its output to.
72      *
73      * It is possible that the Writer returned by this method does not
74      * implement the WriterChain interface.
75      */
getWriter()76     public java.io.Writer getWriter();
77 
78     /**
79      * If this method returns null, getWriter() must return non-null.
80      * Get the OutputStream that this writer sends its output to.
81      */
getOutputStream()82     public java.io.OutputStream getOutputStream();
83 }
84