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.xalan.internal.xsltc.runtime.output; 23 24 import com.sun.org.apache.xalan.internal.utils.SecuritySupport; 25 import java.io.BufferedWriter; 26 import java.io.IOException; 27 import java.io.Writer; 28 29 /** 30 * @author Santiago Pericas-Geertsen 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) { 71 throw new RuntimeException(e.toString()); 72 } 73 return this; 74 } 75 76 public OutputBuffer append(char[] s, int from, int to) { 77 try { 78 _writer.write(s, from, to); 79 } 80 catch (IOException e) { 81 throw new RuntimeException(e.toString()); 82 } 83 return this; 84 } 85 86 public OutputBuffer append(char ch) { 87 try { 88 _writer.write(ch); 89 } 90 catch (IOException e) { 91 throw new RuntimeException(e.toString()); 92 } 93 return this; 94 } 95 }