View Javadoc

1   //////////////////////////////////////////////////////////////////////////////
2   // Clirr: compares two versions of a java library for binary compatibility
3   // Copyright (C) 2003 - 2005  Lars Kühne
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  //////////////////////////////////////////////////////////////////////////////
19  
20  package net.sf.clirr.ant;
21  
22  import java.util.HashMap;
23  import java.util.Map;
24  
25  import net.sf.clirr.core.DiffListenerAdapter;
26  import net.sf.clirr.core.Severity;
27  import net.sf.clirr.core.MessageTranslator;
28  import net.sf.clirr.core.ApiDifference;
29  import org.apache.tools.ant.Project;
30  import org.apache.tools.ant.Task;
31  
32  final class AntLogger extends DiffListenerAdapter
33  {
34      private Task task;
35  
36      private MessageTranslator translator = new MessageTranslator();
37  
38      private Map severityPrioMap = new HashMap(3);
39  
40      AntLogger(Task task)
41      {
42          this.task = task;
43          severityPrioMap.put(Severity.INFO, new Integer(Project.MSG_INFO));
44          severityPrioMap.put(Severity.WARNING, new Integer(Project.MSG_WARN));
45          severityPrioMap.put(Severity.ERROR, new Integer(Project.MSG_ERR));
46      }
47  
48      public void reportDiff(ApiDifference difference)
49      {
50          final Severity severity = difference.getMaximumSeverity();
51          final Integer prio = (Integer) severityPrioMap.get(severity);
52          task.log(
53              severity.toString() + ": " + difference.getAffectedClass()
54              + ": " + difference.getReport(translator),
55              prio.intValue());
56      }
57  }