Exemplo n.º 1
0
  private FDifference compareMethodLists(
      List<MethodDescription> leftMethods, List<MethodDescription> rightMethods, FDObject source) {
    FDifference diff = null;

    for (MethodDescription leftMethod : leftMethods) {
      MethodDescription rightMethod =
          (MethodDescription) basis.getFromList(rightMethods, leftMethod);
      if (rightMethod != null) {
        diff = compareMethods(diff, leftMethod, rightMethod);
      } else {
        // Deleted method
        FDifference delDiff = new FDifference(FDKind.DeletedElement, FDRating.Conflict);
        delDiff.setSource(leftMethod);
        delDiff.setDescription(
            "The method with signature '"
                + leftMethod.getSignature().toString()
                + "' was removed in version "
                + this.getRightVersion());
        if (diff == null) {
          diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict);
        }
        diff.addDifference(delDiff);
      }
    }

    for (MethodDescription rightMethod : rightMethods) {
      MethodDescription leftMethod =
          (MethodDescription) basis.getFromList(leftMethods, rightMethod);
      if (leftMethod == null) {
        // New method
        FDifference addDiff = new FDifference(FDKind.CreatedElement, FDRating.Warning);
        addDiff.setSource(rightMethod);
        addDiff.setDescription(
            "The method with signature '"
                + rightMethod.getSignature().toString()
                + "' was added in version "
                + this.getRightVersion());
        if (diff == null) {
          diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict);
        }
        diff.addDifference(addDiff);
      }
    }

    if (diff != null) {
      diff.setSource(source);
      diff.setDescription("Method signatures have changed in version " + this.getRightVersion());
    }
    return diff;
  }