public FDifference compareMethods( FDifference diff, MethodDescription leftMethod, MethodDescription rightMethod) { FDifference signDiff = basis.compareValues( "signature", leftMethod.getSignature().toString(), rightMethod.getSignature().toString(), leftMethod); FDifference descrDiff = basis.compareDescriptions( leftMethod.getName(), leftMethod.getSignature().getDescription(), rightMethod.getSignature().getDescription(), leftMethod); if (signDiff != null || descrDiff != null) { if (diff == null && signDiff != null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict); } else if (diff == null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Info); } diff.addDifference(signDiff); diff.addDifference(descrDiff); } return diff; }
public FDifference compareTypeDescriptions( CodingUnit leftCodingUnit, CodingUnit rightCodingUnit, FDObject source) { FDifference diff = null; TypeDescription leftType = proxy.getTypeDescription(leftCodingUnit.getTypeAPIPath()); TypeDescription rightType = proxy.getTypeDescription(rightCodingUnit.getTypeAPIPath()); if (leftType != null && rightType != null) { FDifference nameDiff = basis.compareNamedElements("type descriptions", leftType, rightType, source); FDifference descDiff = basis.compareDescriptions(leftType, rightType, source); FDifference fqtnDiff = basis.compareValues("FQTN", leftType.getFqtn(), rightType.getFqtn(), source); FDifference methDiff = this.compareMethodDescriptions(leftType, rightType, source); FDifference packDiff = this.comparePackageDescriptions(leftType, rightType, source); if (nameDiff != null || descDiff != null || fqtnDiff != null || methDiff != null || packDiff != null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Warning); diff.setSource(leftCodingUnit); diff.setDescription( "The type description of '" + leftCodingUnit.getName() + "' has changed in version " + this.getRightVersion()); diff.addDifference(nameDiff); diff.addDifference(descDiff); diff.addDifference(fqtnDiff); diff.addDifference(methDiff); diff.addDifference(packDiff); } } return diff; }