public Map decodeParameters()

in nuget-server/src/jetbrains/buildServer/nuget/server/exec/impl/ListPackagesArguments.java [79:131]


  public Map<SourcePackageReference, ListPackagesResult> decodeParameters(@NotNull final File file) throws IOException {
    final Element root;
    try {
      root = FileUtil.parseDocument(file);
    } catch (final JDOMException e) {
      throw new IOException("Failed to parse " + file + ". " + e.getMessage(), e);
    }

    if (!root.getName().equals(NUGET_PACKAGES)) throw new IOException("Invalid xml");
    final Element packages = root.getChild(PACKAGES);
    if (packages == null) throw new IOException("Invalid xml");

    final Map<SourcePackageReference, ListPackagesResult> result = new HashMap<SourcePackageReference, ListPackagesResult>();

    for (Object pElement : packages.getChildren(PACKAGE)) {
      final Element pkg = (Element) pElement;

      final String id = trim(pkg.getAttributeValue("id"));
      final String spec = trim(pkg.getAttributeValue(VERSIONS));
      final String source = trim(pkg.getAttributeValue(SOURCE_ATTRIBUTE));

      if (id == null) continue;
      final SourcePackageReference ref = new SourcePackageReference(source, parseCredentials(pkg), id, spec, parseIncludePrerelease(pkg));

      final Collection<SourcePackageInfo> versions = new ArrayList<SourcePackageInfo>();
      final String packageErrorMessage = pkg.getChildText("error-message");
      final Element pkgChild = pkg.getChild("package-entries");
      if (pkgChild != null) {
        for (Object pEntry : pkgChild.getChildren("package-entry")) {
          final Element entry = (Element) pEntry;

          final String version = entry.getAttributeValue("version");
          if (version == null || jetbrains.buildServer.util.StringUtil.isEmptyOrSpaces(version)) continue;

          versions.add(ref.toInfo(version));
        }
      }

      result.put(ref, new ListPackagesResult() {
        @Nullable
        public String getErrorMessage() {
          return packageErrorMessage;
        }

        @NotNull
        public Collection<SourcePackageInfo> getCollectedInfos() {
          return Collections.unmodifiableCollection(versions);
        }
      });
    }

    return result;
  }