1 /* 2 * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. 3 */ 4 /* 5 * Licensed to the Apache Software Foundation (ASF) under one or more 6 * contributor license agreements. See the NOTICE file distributed with 7 * this work for additional information regarding copyright ownership. 8 * The ASF licenses this file to You under the Apache License, Version 2.0 9 * (the "License"); you may not use this file except in compliance with 10 * the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 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) { 62 throw new RuntimeException(e.toString()); 63 } 64 return this; 65 } 66 67 public OutputBuffer append(char[] s, int from, int to) { 68 try { 69 _writer.write(s, from, to); 70 } 71 catch (IOException e) { 72 throw new RuntimeException(e.toString()); 73 } 74 return this; 75 } 76 77 public OutputBuffer append(char ch) { 78 try { 79 _writer.write(ch); 80 } 81 catch (IOException e) { 82 throw new RuntimeException(e.toString()); 83 } 84 return this; 85 } 86 }