KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > clirr > core > internal > checks > ExpectedDiff


1 package net.sf.clirr.core.internal.checks;
2
3 import net.sf.clirr.core.ApiDifference;
4 import net.sf.clirr.core.MessageTranslator;
5 import net.sf.clirr.core.Severity;
6
7 /**
8  * Describes an expected API change.
9  */

10
11 public final class ExpectedDiff
12 {
13     private static MessageTranslator translator = new MessageTranslator();
14
15     private String JavaDoc report;
16     private Severity binaryCompatibilitySeverity;
17     private Severity sourceCompatibilitySeverity;
18     private String JavaDoc affectedClass;
19     private String JavaDoc affectedMethod;
20     private String JavaDoc affectedField;
21
22     /**
23      * Create a new API difference representation.
24      *
25      * @param report a human readable string describing the change that was made, must be non-null.
26      * @param severity the severity in terms of binary and source code compatibility, must be non-null.
27      * @param clazz the fully qualified class name where the change occured, must be non-null.
28      * @param method the method signature of the method that changed, <code>null</code>
29      * if no method was affected.
30      * @param field the field name where the change occured, <code>null</code>
31      * if no field was affected.
32      */

33     public ExpectedDiff(String JavaDoc report, Severity severity, String JavaDoc clazz, String JavaDoc method, String JavaDoc field)
34     {
35         this(report, severity, severity, clazz, method, field);
36     }
37
38     /**
39      * Create a new API difference representation.
40      *
41      * @param report a human readable string describing the change that was made, must be non-null.
42      * @param binarySeverity the severity in terms of binary compatibility, must be non-null.
43      * @param sourceSeverity the severity in terms of source code compatibility, must be non-null.
44      * @param clazz the fully qualified class name where the change occured, must be non-null.
45      * @param method the method signature of the method that changed, <code>null</code>
46      * if no method was affected.
47      * @param field the field name where the change occured, <code>null</code>
48      * if no field was affected.
49      */

50     public ExpectedDiff(String JavaDoc report, Severity binarySeverity, Severity sourceSeverity,
51                          String JavaDoc clazz, String JavaDoc method, String JavaDoc field)
52     {
53         checkNonNull(report);
54         checkNonNull(binarySeverity);
55         checkNonNull(sourceSeverity);
56         checkNonNull(clazz);
57
58         this.report = report;
59         this.binaryCompatibilitySeverity = binarySeverity;
60         this.sourceCompatibilitySeverity = sourceSeverity;
61         this.affectedClass = clazz;
62         this.affectedField = field;
63         this.affectedMethod = method;
64     }
65
66     /**
67      * Trivial utility method to verify that a specific object is non-null.
68      */

69     private void checkNonNull(Object JavaDoc o)
70     {
71         if (o == null)
72         {
73             throw new IllegalArgumentException JavaDoc();
74         }
75     }
76
77     /**
78      * {@inheritDoc}
79      */

80     public String JavaDoc toString()
81     {
82         return report + " (" + binaryCompatibilitySeverity + ") - "
83                 + affectedClass + '[' + affectedField + '/' + affectedMethod + ']';
84     }
85
86     /**
87      * Returns true if the provided ApiDifference object matches the
88      * expected value.
89      */

90     public boolean matches(ApiDifference diff)
91     {
92         if (!report.equals(diff.getReport(translator)))
93         {
94             return false;
95         }
96
97         if (!binaryCompatibilitySeverity.equals(diff.getBinaryCompatibilitySeverity()))
98         {
99             return false;
100         }
101
102         if (!sourceCompatibilitySeverity.equals(diff.getSourceCompatibilitySeverity()))
103         {
104             return false;
105         }
106
107
108         final String JavaDoc otherClass = diff.getAffectedClass();
109         if (!affectedClass.equals(otherClass))
110         {
111             return false;
112         }
113
114         final String JavaDoc otherMethod = diff.getAffectedMethod();
115         if (affectedMethod != null ? !affectedMethod.equals(otherMethod) : otherMethod != null)
116         {
117             return false;
118         }
119
120         final String JavaDoc otherField = diff.getAffectedField();
121         if (affectedField != null ? !affectedField.equals(otherField) : otherField != null)
122         {
123             return false;
124         }
125
126         return true;
127     }
128 }
129
Popular Tags