private FDifference compareMethodDescriptions( TypeDescription leftType, TypeDescription rightType, FDObject source) { FDifference diff = null; if (leftType.getMethods() != null) { if (rightType.getMethods() != null) { FDifference subDiff = compareMethodLists(leftType.getMethods(), rightType.getMethods(), leftType); if (subDiff != null) { if (diff == null) { diff = new FDifference(FDKind.ChangedElement, subDiff.getRating()); } diff.addDifference(subDiff); } } else { // Deleted methods FDifference delDiff = new FDifference(FDKind.DeletedElement, FDRating.Conflict); delDiff.setSource(leftType); delDiff.setDescription( leftType.getMethods().size() + " were removed from type '" + leftType.getFqtn() + "' in version " + this.getRightVersion()); if (diff == null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict); } diff.addDifference(delDiff); } } else if (rightType.getMethods() != null) { // New methods FDifference addDiff = new FDifference(FDKind.CreatedElement, FDRating.Warning); addDiff.setSource(rightType); addDiff.setDescription( "The type '" + rightType.getFqtn() + "' has " + rightType.getMethods().size() + " new methods in version " + this.getRightVersion()); if (diff == null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict); } diff.addDifference(addDiff); } if (diff != null) { diff.setSource(leftType); diff.setDescription( "The type description of '" + leftType.getFqtn() + "' has changed in version " + this.getRightVersion()); } return diff; }