changeset 54:3c889ef68a6f

once again, improved logging while searching windbg tools
author Evgeniy.Koshkin
date Fri, 15 Nov 2013 15:23:11 +0400
parents addde7b9aff6
children f51eb259cfe1 9777f9420be3
files agent/src/jetbrains/buildServer/symbols/tools/WinDbgToolsHelper.java
diffstat 1 files changed, 24 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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<String,String> 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<String> winSdkPathParams = CollectionsUtil.filterCollection(agentConfigParameters.keySet(), new Filter<String>() {
+      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;
   }
 }