blob: 70f58e850fb3636fe73bba3f1132f03cbc6c339d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
package jdiff;
import java.io.*;
import java.util.*;
/**
* Track the various modifiers for a program element.
*
* The method used for Collection comparison (compareTo) must make its
* comparison based upon everything that is known about this set of modifiers.
*
* See the file LICENSE.txt for copyright details.
* @author Matthew Doar, mdoar@pobox.com
*/
class Modifiers implements Comparable {
/** Set if the program element is static. */
public boolean isStatic = false;
/** Set if the program element is final. */
public boolean isFinal = false;
/** Set if the program element is deprecated. */
public boolean isDeprecated = false;
/**
* The visibility level; "public", "protected", "package" or
* "private"
*/
public String visibility = null;
/** Default constructor. */
public Modifiers() {
}
/** Compare two Modifiers objects by their contents. */
public int compareTo(Object o) {
Modifiers oModifiers = (Modifiers)o;
if (isStatic != oModifiers.isStatic)
return -1;
if (isFinal != oModifiers.isFinal)
return -1;
if (isDeprecated != oModifiers.isDeprecated)
return -1;
if (visibility != null) {
int comp = visibility.compareTo(oModifiers.visibility);
if (comp != 0)
return comp;
}
return 0;
}
/**
* Generate a String describing the differences between the current
* (old) Modifiers object and a new Modifiers object. The string has
* no leading space, but does end in a period.
*
* @param newModifiers The new Modifiers object.
* @return The description of the differences, null if there is no change.
*/
public String diff(Modifiers newModifiers) {
String res = "";
boolean hasContent = false;
if (isStatic != newModifiers.isStatic) {
res += "Change from ";
if (isStatic)
res += "static to non-static.<br>";
else
res += "non-static to static.<br>";
hasContent = true;
}
if (isFinal != newModifiers.isFinal) {
if (hasContent)
res += " ";
res += "Change from ";
if (isFinal)
res += "final to non-final.<br>";
else
res += "non-final to final.<br>";
hasContent = true;
}
if (isDeprecated != newModifiers.isDeprecated) {
if (hasContent)
res += " ";
if (isDeprecated)
res += "Change from deprecated to undeprecated.<br>";
else
res += "<b>Now deprecated</b>.<br>";
hasContent = true;
}
if (visibility != null) {
int comp = visibility.compareTo(newModifiers.visibility);
if (comp != 0) {
if (hasContent)
res += " ";
res += "Change of visibility from " + visibility + " to " +
newModifiers.visibility + ".<br>";
hasContent = true;
}
}
if (res.compareTo("") == 0)
return null;
return res;
}
}
|