1 24 package org.objectweb.jalisto.se.storage.raf; 25 26 import java.io.*; 27 import java.util.ArrayList ; 28 29 public class DbByteArrayOutputStream extends ByteArrayOutputStream { 30 private DbByteArrayOutputStream() { 31 super(); 32 output = new DataOutputStream(this); 33 } 34 35 public synchronized void writeTo(DataOutput dstr) throws IOException { 36 dstr.write(super.buf, 0, super.size()); 37 } 38 39 public void writeDatas(byte[] datas) { 40 if (super.buf.length < datas.length) { 41 super.buf = datas; 42 } else { 43 System.arraycopy(datas, 0, super.buf, 0, datas.length); 44 } 45 super.count = datas.length; 46 } 47 48 public byte[] getDataToWrite() { 49 return super.buf; 50 } 51 52 public synchronized void reset() { 53 super.reset(); 54 instances.add(this); 55 } 56 57 public DataOutputStream getOutput() { 58 return output; 59 } 60 61 private DataOutputStream output; 62 63 64 65 private static ArrayList instances = new ArrayList (); 66 67 public static DbByteArrayOutputStream getInstance() { 68 if (instances.isEmpty()) { 69 return new DbByteArrayOutputStream(); 70 } 71 try { 72 return (DbByteArrayOutputStream) instances.remove(0); 73 } catch (ArrayIndexOutOfBoundsException e) { 74 return new DbByteArrayOutputStream(); 75 } 76 } 77 } 78 | Popular Tags |