Mercurial > hg > tc-symbol-server
changeset 16:7dec02710a42
fixed PE signature parsing
author | Evgeniy.Koshkin |
---|---|
date | Thu, 01 Aug 2013 17:22:34 +0400 |
parents | 37172df1b16e |
children | af87768a0724 |
files | agent/src/jetbrains/buildServer/symbols/PEDebugType.java server/src/jetbrains/buildServer/symbols/BuildSymbolsIndexProvider.java server/src/jetbrains/buildServer/symbols/DownloadSymbolFilesController.java |
diffstat | 3 files changed, 35 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/jetbrains/buildServer/symbols/PEDebugType.java Thu Aug 01 17:22:34 2013 +0400 @@ -0,0 +1,28 @@ +package jetbrains.buildServer.symbols; + +/** + * Windows Portable Executable (PE) debug type + * @author Evgeniy.Koshkin + */ +public enum PEDebugType { + IMAGE_DEBUG_TYPE_UNKNOWN(0), + IMAGE_DEBUG_TYPE_COFF(1), + IMAGE_DEBUG_TYPE_CODEVIEW(2), + IMAGE_DEBUG_TYPE_FPO(3), + IMAGE_DEBUG_TYPE_MISC(4); + + private final int myValue; + + PEDebugType(int value) { + myValue = value; + } + + private int getValue() { + return myValue; + } + + @Override + public String toString() { + return String.valueOf(myValue); + } +}
--- a/server/src/jetbrains/buildServer/symbols/BuildSymbolsIndexProvider.java Wed Jul 31 11:45:40 2013 +0400 +++ b/server/src/jetbrains/buildServer/symbols/BuildSymbolsIndexProvider.java Thu Aug 01 17:22:34 2013 +0400 @@ -73,7 +73,7 @@ Map<String, String> result = new HashMap<String, String>(); for (Object signElementObject : document.getRootElement().getChildren()){ final Element signElement = (Element) signElementObject; - result.put(signElement.getAttributeValue("sign"), signElement.getAttributeValue("file")); + result.put(extractGuid(signElement.getAttributeValue("sign")), signElement.getAttributeValue("file")); } return result; } catch (JDOMException e) { @@ -82,6 +82,10 @@ } } + private String extractGuid(String sign) { + return sign.substring(0, sign.length() - 1); //last symbol is PEDebugType + } + private String locateArtifact(SBuild build, final String fileName) { final AtomicReference<String> locatedArtifactPath = new AtomicReference<String>(null); build.getArtifacts(BuildArtifactsViewMode.VIEW_DEFAULT_WITH_ARCHIVES_CONTENT).iterateArtifacts(new BuildArtifacts.BuildArtifactsProcessor() {
--- a/server/src/jetbrains/buildServer/symbols/DownloadSymbolFilesController.java Wed Jul 31 11:45:40 2013 +0400 +++ b/server/src/jetbrains/buildServer/symbols/DownloadSymbolFilesController.java Thu Aug 01 17:22:34 2013 +0400 @@ -58,7 +58,8 @@ final String valuableUriPart = requestURI.substring(requestURI.indexOf(APP_SYMBOLS) + APP_SYMBOLS.length()); final int firstDelimiterPosition = valuableUriPart.indexOf('/'); final String fileName = valuableUriPart.substring(0, firstDelimiterPosition); - final String guid = valuableUriPart.substring(firstDelimiterPosition + 1, valuableUriPart.indexOf('/', firstDelimiterPosition + 1)); + final String signature = valuableUriPart.substring(firstDelimiterPosition + 1, valuableUriPart.indexOf('/', firstDelimiterPosition + 1)); + final String guid = signature.substring(0, signature.length() - 1); //last symbol is PEDebugType LOG.debug(String.format("Symbol file requested. File name: %s. Guid: %s.", fileName, guid)); final BuildArtifact buildArtifact = findArtifact(guid, fileName);