1 10 package org.mmbase.util.transformers; 11 12 import java.io.*; 13 import org.mmbase.util.logging.*; 14 15 22 23 public abstract class ByteArrayToCharTransformer implements ByteToCharTransformer { 24 private static Logger log = Logging.getLoggerInstance(ByteArrayToCharTransformer.class); 25 26 public abstract String transform(byte[] r); 28 29 public final OutputStream transformBack(Reader r) { 31 return transformBack(r, new ByteArrayOutputStream()); 32 } 33 34 public final Writer transform(InputStream in) { 36 return transform(in, new StringWriter()); 37 } 38 39 public byte[] transformBack(String r) { 41 throw new UnsupportedOperationException ("transformBack is not supported for this transformer"); 42 } 43 44 48 public Writer transform(InputStream in, Writer w) { 49 try { 50 ByteArrayOutputStream sw = new ByteArrayOutputStream(); 51 while (true) { 52 int c = in.read(); 53 if (c == -1) break; 54 sw.write(c); 55 } 56 String result = transform(sw.toByteArray()); 57 w.write(result); 58 } catch (java.io.IOException e) { 59 log.error(e.toString()); 60 log.debug(Logging.stackTrace(e)); 61 } 62 return w; 63 } 64 65 public OutputStream transformBack(Reader in, OutputStream out) { 66 try { 67 StringWriter sw = new StringWriter(); 68 while (true) { 69 int c = in.read(); 70 if (c == -1) break; 71 sw.write(c); 72 } 73 out.write(transformBack(sw.toString())); 74 } catch (java.io.IOException e) { 75 log.error(e.toString()); 76 log.debug(Logging.stackTrace(e)); 77 } 78 return out; 79 } 80 } 81 | Popular Tags |