public BuildStartReason checkChanges()

in nuget-server/src/jetbrains/buildServer/nuget/server/trigger/NamedPackagesUpdateChecker.java [37:82]


  public BuildStartReason checkChanges(@NotNull PolledTriggerContext context) throws BuildTriggerException {
    final PackageCheckRequest checkRequest = myRequestFactory.createRequest(context);

    CheckResult result;
    try {
      result = myPackageChangesManager.checkPackage(checkRequest);
      //no change available
    } catch (Throwable t) {
      LOG.warnAndDebugDetails("Failed to ckeck changes for package: " + checkRequest.getPackage().getPackageId() + ". " + t.getMessage(), t);
      result = CheckResult.failed(t.getMessage());
    }

    if (result == null) return null;
    final String error = result.getError();
    if (error != null) {
      throw new BuildTriggerException("Failed to check for package versions. " + error);
    }

    final CustomDataStorage storage = context.getCustomDataStorage();

    @NotNull  final String newHash = myCalculator.serializeHashcode(result.getInfos());
    @Nullable final String oldHash = storage.getValue(KEY);

    if (LOG.isDebugEnabled()) {
      LOG.debug("Package: " + checkRequest.getPackage().toString());
      LOG.debug("Recieved packages hash: " + newHash);
      LOG.debug("          old hash was: " + oldHash);
    }

    if (oldHash == null || (!newHash.equals(oldHash) && !newHash.equals("v2"))) {
      storage.putValue(KEY, newHash);
      storage.flush();
    }

    //empty feed is error, not a trigger event,
    //still, we update trigger state for that
    if (result.getInfos().isEmpty()) {
      throw new BuildTriggerException("Failed to check for package versions. Package " + checkRequest.getPackage().getPackageId() + " was not found in the feed");
    }

    if (myCalculator.isUpgradeRequired(oldHash, newHash)) {
      return new BuildStartReason("NuGet Package " + checkRequest.getPackage().getPackageId() + " updated");
    }

    return null;
  }