public List search()

in nuget-feed/src/jetbrains/buildServer/nuget/feed/server/index/NuGetFeed.java [57:100]


  public List<NuGetIndexEntry> search(@NotNull final String searchTerm,
                                      @NotNull final String targetFramework,
                                      final boolean includePrerelease,
                                      final boolean includeSemVer2) {
    final boolean filterByTargetFramework = myServerSettings.isFilteringByTargetFrameworkEnabled();

    final Set<String> requestedFrameworks = FrameworkConstraints.convertFromString(targetFramework);
    final StringBuilder builder = new StringBuilder(String.format("Searching packages by term '%s'", searchTerm));
    if (includePrerelease) builder.append(", including pre-release packages");
    if (!requestedFrameworks.isEmpty())
      builder.append(", with target framework constraints ").append(requestedFrameworks);
    final String searchDetails = builder.toString();
    LOG.debug(searchDetails);

    final List<NuGetIndexEntry> foundPackages = filterSemVer2Packages(searchPackages(searchTerm,
      filterByTargetFramework ? targetFramework : "",
      includePrerelease
    ), includeSemVer2);

    final List<NuGetIndexEntry> packages = CollectionsUtil.filterCollection(foundPackages, nugetPackage -> {
      final Map<String, String> nugetPackageAttributes = nugetPackage.getAttributes();
      final String id = nugetPackageAttributes.get(ID);
      final String version = nugetPackageAttributes.get(VERSION);
      final String isPrerelease = nugetPackageAttributes.get(IS_PRERELEASE);
      final String frameworkConstraints = nugetPackageAttributes.get(TEAMCITY_FRAMEWORK_CONSTRAINTS);
      if (!includePrerelease && Boolean.parseBoolean(isPrerelease)) {
        LOG.debug(String.format("Skipped package (id:%s, version:%s) since its pre-released.", id, version));
        return false;
      }

      if (filterByTargetFramework) {
        final Set<String> packageFrameworkConstraints = FrameworkConstraints.convertFromString(frameworkConstraints);
        if (!VersionUtility.isPackageCompatibleWithFrameworks(requestedFrameworks, packageFrameworkConstraints)) {
          LOG.debug(String.format("Skipped package (id:%s, version:%s) since it doesn't match requested framework constraints.", id, version));
          return false;
        }
      }

      return true;
    });

    LOG.debug(String.format("Found %d packages while " + searchDetails, packages.size()));
    return packages;
  }