[Clirr-devel] CVS: clirr/src/java/net/sf/clirr/checks FieldSetCheck.java,1.7,1.8
Status: Alpha
Brought to you by:
lkuehne
From: <lk...@us...> - 2004-06-05 16:19:15
|
Update of /cvsroot/clirr/clirr/src/java/net/sf/clirr/checks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22634/java/net/sf/clirr/checks Modified Files: FieldSetCheck.java Log Message: integrated ScopeSelector and improved change messages contributed by Simon Kitching Index: FieldSetCheck.java =================================================================== RCS file: /cvsroot/clirr/clirr/src/java/net/sf/clirr/checks/FieldSetCheck.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- FieldSetCheck.java 23 May 2004 13:52:27 -0000 1.7 +++ FieldSetCheck.java 5 Jun 2004 16:19:07 -0000 1.8 @@ -27,6 +27,7 @@ import net.sf.clirr.framework.ApiDiffDispatcher; import net.sf.clirr.event.ApiDifference; import net.sf.clirr.event.Severity; +import net.sf.clirr.event.ScopeSelector; import org.apache.bcel.classfile.JavaClass; import org.apache.bcel.classfile.Field; import org.apache.bcel.classfile.ConstantValue; @@ -55,10 +56,12 @@ } private Comparator comparator = new FieldNameComparator(); + private ScopeSelector scopeSelector; - public FieldSetCheck(ApiDiffDispatcher dispatcher) + public FieldSetCheck(ApiDiffDispatcher dispatcher, ScopeSelector scopeSelector) { super(dispatcher); + this.scopeSelector = scopeSelector; } public final void check(JavaClass compatBaseline, JavaClass currentVersion) @@ -81,10 +84,11 @@ boolean[] newInCurrent = new boolean[cFields.length]; Arrays.fill(newInCurrent, true); + // check for deleted fields and modified fields for (int i = 0; i < bFields.length; i++) { Field bField = bFields[i]; - if (!bField.isPublic() && !bField.isProtected()) + if (!scopeSelector.isSelected(bField)) { continue; } @@ -105,12 +109,13 @@ } } + // check for added fields for (int i = 0; i < newInCurrent.length; i++) { Field field = cFields[i]; - if (newInCurrent[i] && (field.isPublic() || field.isProtected())) + if (newInCurrent[i] && scopeSelector.isSelected(field)) { - String scope = field.isPublic() ? "public" : "protected"; + String scope = ScopeSelector.getScopeDesc(field); final String fieldName = field.getName(); fireDiff("Added " + scope + " field " + fieldName, Severity.INFO, currentClass, field); } @@ -191,15 +196,26 @@ private void checkForVisibilityChange(Field bField, Field cField, JavaClass clazz) { - if (bField.isProtected() && cField.isPublic()) - { - fireDiff("Field " + bField.getName() + " is now public", Severity.INFO, clazz, cField); - } - else if (bField.isProtected() && !(cField.isProtected() || cField.isPublic()) - || bField.isPublic() && !cField.isPublic()) + int bVisibility = ScopeSelector.getVisibilityRating(bField); + int cVisibility = ScopeSelector.getVisibilityRating(cField); + + if (cVisibility > bVisibility) { - fireDiff("Accessibility of field " + bField.getName() + " has been weakened", - Severity.ERROR, clazz, cField); + fireDiff( + "Accessability of field " + bField.getName() + + " has been increased" + + " from " + ScopeSelector.getScopeDesc(bField) + + " to " + ScopeSelector.getScopeDesc(cField), + Severity.INFO, clazz, cField); + } + else if (cVisibility < bVisibility) + { + fireDiff( + "Accessibility of field " + bField.getName() + + " has been weakened" + + " from " + ScopeSelector.getScopeDesc(bField) + + " to " + ScopeSelector.getScopeDesc(cField), + Severity.ERROR, clazz, cField); } } |