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;
}