# HG changeset patch # User Evgeniy.Koshkin # Date 1384514591 -14400 # Node ID 3c889ef68a6f36ab72deb4bbbb2f90c133ce5268 # Parent addde7b9aff6a46bcd6d772969cbc88e739ab8c7 once again, improved logging while searching windbg tools diff -r addde7b9aff6 -r 3c889ef68a6f agent/src/jetbrains/buildServer/symbols/tools/WinDbgToolsHelper.java --- a/agent/src/jetbrains/buildServer/symbols/tools/WinDbgToolsHelper.java Thu Nov 14 17:18:41 2013 +0400 +++ b/agent/src/jetbrains/buildServer/symbols/tools/WinDbgToolsHelper.java Fri Nov 15 15:23:11 2013 +0400 @@ -2,11 +2,14 @@ import jetbrains.buildServer.agent.AgentRunningBuild; import jetbrains.buildServer.dotNet.DotNetConstants; +import jetbrains.buildServer.util.CollectionsUtil; +import jetbrains.buildServer.util.filters.Filter; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; +import java.util.List; import java.util.Map; /** @@ -22,21 +25,29 @@ @Nullable public static File getSrcSrvHomeDir(@NotNull AgentRunningBuild build) { final Map agentConfigParameters = build.getAgentConfiguration().getConfigurationParameters(); - for (String paramName : agentConfigParameters.keySet()){ - if(paramName.startsWith(DotNetConstants.WINDOWS_SDK) && paramName.endsWith(DotNetConstants.PATH)){ - final File winSdkHomeDir = new File(agentConfigParameters.get(paramName)); - if(!winSdkHomeDir.exists()) { - LOG.debug(String.format("Windows SDK home directory mentioned in parameter %s is not exist. Checked path %s.", paramName, winSdkHomeDir.getAbsolutePath())); - continue; - } - File dir = new File(winSdkHomeDir, SRCSRV_HOME_DIR_RELATIVE_X64); - if(dir.exists() && dir.isDirectory()) return dir; - dir = new File(winSdkHomeDir, SRCSRV_HOME_DIR_RELATIVE_X86); - if(dir.exists() && dir.isDirectory()) return dir; - LOG.debug("Failed to find Source Server tools home directory under Windows SDK home directory detected on path " + winSdkHomeDir.getAbsolutePath()); + final List winSdkPathParams = CollectionsUtil.filterCollection(agentConfigParameters.keySet(), new Filter() { + public boolean accept(@NotNull String paramName) { + return paramName.startsWith(DotNetConstants.WINDOWS_SDK) && paramName.endsWith(DotNetConstants.PATH); } + }); + if(winSdkPathParams.isEmpty()){ + LOG.debug("None of Windows SDK versions are mentioned in agent configuration."); + return null; } - LOG.debug("None of Windows SDK versions are mentioned in agent configuration."); + + for (String paramName : winSdkPathParams){ + final File winSdkHomeDir = new File(agentConfigParameters.get(paramName)); + if(!winSdkHomeDir.exists()) { + LOG.debug(String.format("Windows SDK home directory mentioned in parameter %s is not exist. Checked path %s.", paramName, winSdkHomeDir.getAbsolutePath())); + continue; + } + File dir = new File(winSdkHomeDir, SRCSRV_HOME_DIR_RELATIVE_X64); + if(dir.exists() && dir.isDirectory()) return dir; + dir = new File(winSdkHomeDir, SRCSRV_HOME_DIR_RELATIVE_X86); + if(dir.exists() && dir.isDirectory()) return dir; + LOG.debug("Failed to find Source Server tools home directory under Windows SDK home directory detected on path " + winSdkHomeDir.getAbsolutePath()); + } + LOG.debug("None of detected Windows SDK installations contain Source Server tools."); return null; } }