001 package com.hammurapi.review; 002 003 /** 004 * Reporters consume review observations. 005 * @author Pavel Vlasov 006 * @param <M> Model type. 007 */ 008 public interface Reporter<M> { 009 010 /** 011 * Creates observation sink for a module. 012 * @param moduleName 013 * @param customConfig 014 * @param model 015 * @return 016 * @throws ReviewException 017 */ 018 ObservationSink createObservationSink(Module module) throws ReviewException; 019 020 /** 021 * This method is invoked when exception is thrown before model and observation sinks are constructed. 022 * @param moduleName 023 * @param e 024 */ 025 void onException(Exception e); 026 027 /** 028 * Closes reporter. 029 * @throws ReviewException 030 */ 031 void close() throws ReviewException; 032 }