001    package com.hammurapi.review;
002    
003    import java.util.ArrayList;
004    import java.util.Collection;
005    
006    
007    public class CompositeObservationSink implements ObservationSink {
008            
009            private Collection<ObservationSink> sinks = new ArrayList<ObservationSink>();
010            
011            public synchronized void addSink(ObservationSink sink) {
012                    sinks.add(sink);
013            }
014    
015            @Override
016            public synchronized void close() throws ReviewException {
017                    for (ObservationSink sink: sinks) {
018                            sink.close();
019                    }
020            }
021    
022            @Override
023            public synchronized void consumeObservation(Observation observation) throws ReviewException {
024                    for (ObservationSink sink: sinks) {
025                            sink.consumeObservation(observation);
026                    }
027            }
028    
029    }