org.mmbase.util.transformers
Class ChainedCharTransformer

Package class diagram package ChainedCharTransformer
java.lang.Object
  extended by org.mmbase.util.transformers.ReaderTransformer
      extended by org.mmbase.util.transformers.ChainedCharTransformer
All Implemented Interfaces:
Serializable, CharTransformer, Transformer

public class ChainedCharTransformer
extends ReaderTransformer

A CharTransformer which wraps N other CharTransformers, and links them with N - 1 new Threads, effectively working as a 'chained' transformer. The first transformation is done by the ChainedCharTransformer instance itself, after starting the N - 1 Threads for the other N - 1 transformations. If no CharTransformers are added, and 'transform' is called, logically, nothing will happen. Add the CopyCharTransformer if necessary. Schematicly:


  new ChainedCharTransformer().add(T1).add(T2)....add(TN).transform(R, W);

  ___________  __________       _________
 /           \/          \     /         \
 |  R  --> PW - PR --> PW -...- PR --> W  |
 |     T1     |    T2     |    |   TN     |
 \___________/ \_________/     \_________/


 R: reader, PR: piped reader, W: writer, PW, piped writer, T1 - TN: transformers

  

Since:
MMBase-1.7
Version:
$Id: ChainedCharTransformer.java 44809 2011-01-12 23:09:27Z michiel $
Author:
Michiel Meeuwissen
See Also:
Serialized Form

Constructor Summary
ChainedCharTransformer()
           
 
Method Summary
 ChainedCharTransformer add(CharTransformer... col)
           
 ChainedCharTransformer add(CharTransformer ct)
          Adds a CharTranformer to the chain of CharTransformers.
 ChainedCharTransformer addAll(Collection<CharTransformer> col)
          Adds a Collection of CharTranformers to the chain of CharTransformers.
static void main(String[] args)
           
 String toString()
           
 Writer transform(Reader startReader, Writer endWriter)
           
 String transform(String string)
          Implementation without Threads.
 
Methods inherited from class org.mmbase.util.transformers.ReaderTransformer
transform, transformBack, transformBack, transformBack
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ChainedCharTransformer

public ChainedCharTransformer()
Method Detail

add

public ChainedCharTransformer add(CharTransformer ct)
Adds a CharTranformer to the chain of CharTransformers. If the CharTransformer is a ChainedCharTransformer, then it will not be added itself, but its elements will be added.


addAll

public ChainedCharTransformer addAll(Collection<CharTransformer> col)
Adds a Collection of CharTranformers to the chain of CharTransformers.

Throws:
ClassCastException - if collection does not contain only CharTransformers

add

public ChainedCharTransformer add(CharTransformer... col)
Since:
MMBase-1.9

transform

public String transform(String string)
Implementation without Threads. Not needed when transforming by String.

Specified by:
transform in interface CharTransformer
Overrides:
transform in class ReaderTransformer

transform

public Writer transform(Reader startReader,
                        Writer endWriter)
Specified by:
transform in interface CharTransformer
Specified by:
transform in class ReaderTransformer

toString

public String toString()
Specified by:
toString in interface Transformer
Overrides:
toString in class Object

main

public static void main(String[] args)
                 throws IOException
Throws:
IOException


MMBase2 Utils 2.0-SNAPSHOT - 2013-05-29T22:03