1 10 package org.mmbase.util.transformers; 11 12 import java.io.*; 13 14 import org.mmbase.util.logging.*; 15 16 41 42 public class TransformingWriter extends PipedWriter { 43 44 private static final Logger log = Logging.getLoggerInstance(TransformingWriter.class); 45 46 private Writer out; 47 private CharTransformerLink link; 48 49 50 public TransformingWriter(Writer out, CharTransformer charTransformer) { 51 super(); 52 this.out = out; 53 54 PipedReader r = new PipedReader(); 55 try { 56 connect(r); 57 link = new CharTransformerLink(charTransformer, r, out, false); 58 org.mmbase.util.ThreadPools.filterExecutor.execute(link); 59 } catch (IOException ioe) { 60 log.error(ioe.getMessage()); 61 } 62 } 63 64 65 69 public void close() throws IOException { 70 super.close(); try { 72 while (! link.ready()) { 73 synchronized(link) { link.wait(); 75 } 76 } 77 } catch (InterruptedException ie) { 78 log.warn("" + ie); 79 } 80 out.close(); 81 } 82 83 84 public static void main(String [] args) { 86 Writer out = new OutputStreamWriter(System.out); 87 ChainedCharTransformer t = new ChainedCharTransformer(); 88 t.add(new UpperCaser()); 89 t.add(new SpaceReducer()); 90 t.add(new Trimmer()); 91 TransformingWriter writer = new TransformingWriter(out, t); 92 String testString = "use argument to change this string"; 93 if (args.length > 0) { 94 testString = args[0]; 95 } 96 try { 97 writer.write(testString); 98 writer.close(); 99 } catch(Exception e) { 100 log.error("" + e + Logging.stackTrace(e)); 101 } 102 } 103 104 105 106 107 } 108 109 | Popular Tags |