Mercurial > hg > tc-symbol-server
view common/src/jetbrains/buildServer/symbols/PdbSignatureIndexUtil.java @ 115:c8d606a7a07c 9.1.x
fixed searching of pdb by name in order to restore backward compatibility
author | Evgeniy.Koshkin@unit-519.Labs.IntelliJ.Net |
---|---|
date | Fri, 20 May 2016 17:12:53 +0300 |
parents | 0d0a3c1aa428 |
children |
line wrap: on
line source
package jetbrains.buildServer.symbols; import jetbrains.buildServer.util.XmlUtil; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.*; /** * Created by Evgeniy.Koshkin. */ class PdbSignatureIndexUtil { private static final String SIGN = "sign"; private static final String FILE_NAME = "file"; private static final String FILE_PATH = "file-path"; private static final String FILE_SIGNS = "file-signs"; private static final String FILE_SIGN_ENTRY = "file-sign-entry"; @NotNull static Set<PdbSignatureIndexEntry> read(@NotNull final InputStream inputStream) throws JDOMException, IOException { final SAXBuilder builder = new SAXBuilder(); final Document document = builder.build(inputStream); final Set<PdbSignatureIndexEntry> result = new HashSet<PdbSignatureIndexEntry>(); for (Object signElementObject : document.getRootElement().getChildren()){ final Element signElement = (Element) signElementObject; result.add(new PdbSignatureIndexEntry(extractGuid(signElement.getAttributeValue(SIGN)), signElement.getAttributeValue(FILE_NAME), signElement.getAttributeValue(FILE_PATH))); } return result; } static void write(@NotNull final OutputStream outputStream, @NotNull final Set<PdbSignatureIndexEntry> indexData) throws IOException { final Element root = new Element(FILE_SIGNS); for (final PdbSignatureIndexEntry indexEntry : indexData){ final Element entry = new Element(FILE_SIGN_ENTRY); entry.setAttribute(SIGN, indexEntry.getGuid()); entry.setAttribute(FILE_NAME, indexEntry.getFileName()); String artifactPath = indexEntry.getArtifactPath(); if(artifactPath != null){ entry.setAttribute(FILE_PATH, artifactPath); } root.addContent(entry); } XmlUtil.saveDocument(new Document(root), outputStream); } private static String extractGuid(String sign) { return sign.substring(0, sign.length() - 1).toLowerCase(); //last symbol is PEDebugType } }