16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 package com.sun.org.apache.xalan.internal.xsltc.runtime.output;
22
23 import java.io.BufferedWriter;
24 import java.io.IOException;
25 import java.io.Writer;
26 import jdk.xml.internal.SecuritySupport;
27
28 /**
29 * @author Santiago Pericas-Geertsen
30 * @LastModified: Sep 2017
31 */
32 class WriterOutputBuffer implements OutputBuffer {
33 private static final int KB = 1024;
34 private static int BUFFER_SIZE = 4 * KB;
35
36 static {
37 // Set a larger buffer size for Solaris
38 final String osName = SecuritySupport.getSystemProperty("os.name");
39 if (osName.equalsIgnoreCase("solaris")) {
40 BUFFER_SIZE = 32 * KB;
41 }
42 }
43
44 private Writer _writer;
45
46 /**
47 * Initializes a WriterOutputBuffer by creating an instance of a
48 * BufferedWriter. The size of the buffer in this writer may have
49 * a significant impact on throughput. Solaris prefers a larger
50 * buffer, while Linux works better with a smaller one.
51 */
52 public WriterOutputBuffer(Writer writer) {
53 _writer = new BufferedWriter(writer, BUFFER_SIZE);
54 }
55
56 public String close() {
57 try {
58 _writer.flush();
59 }
60 catch (IOException e) {
61 throw new RuntimeException(e.toString());
62 }
63 return "";
64 }
65
66 public OutputBuffer append(String s) {
67 try {
68 _writer.write(s);
69 }
70 catch (IOException e) {
|
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 package com.sun.org.apache.xalan.internal.xsltc.runtime.output;
22
23 import java.io.BufferedWriter;
24 import java.io.IOException;
25 import java.io.Writer;
26 import jdk.xml.internal.SecuritySupport;
27
28 /**
29 * @author Santiago Pericas-Geertsen
30 * @LastModified: Sep 2017
31 */
32 class WriterOutputBuffer implements OutputBuffer {
33 private static final int KB = 1024;
34 private static int BUFFER_SIZE = 4 * KB;
35
36 private Writer _writer;
37
38 /**
39 * Initializes a WriterOutputBuffer by creating an instance of a
40 * BufferedWriter. The size of the buffer in this writer may have
41 * a significant impact on throughput.
42 */
43 public WriterOutputBuffer(Writer writer) {
44 _writer = new BufferedWriter(writer, BUFFER_SIZE);
45 }
46
47 public String close() {
48 try {
49 _writer.flush();
50 }
51 catch (IOException e) {
52 throw new RuntimeException(e.toString());
53 }
54 return "";
55 }
56
57 public OutputBuffer append(String s) {
58 try {
59 _writer.write(s);
60 }
61 catch (IOException e) {
|