package br.com.six2six.fixturefactory.transformer; public class TransformerChain { private Transformer transformer; private TransformerChain next; public TransformerChain(Transformer transformer) { this.transformer = transformer; } public Object transform(Object value, Class<?> type) { if (transformer.accepts(value, type)) { value = transformer.transform(value, type); } if (next != null) { value = next.transform(value, type); } return value; } public void add(Transformer transformer) { if (this.next == null) { this.next = new TransformerChain(transformer); } else { this.next.add(transformer); } } }