From d99ea35c219721c2e84cd4f75d4c4a38eb2611b8 Mon Sep 17 00:00:00 2001 From: Alexey Gopachenko Date: Sat, 29 Jul 2006 23:54:57 +0400 Subject: [PATCH] Added versionString cache --- .../intellij/openapi/projectRoots/impl/JavaSdkImpl.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/com/intellij/openapi/projectRoots/impl/JavaSdkImpl.java b/source/com/intellij/openapi/projectRoots/impl/JavaSdkImpl.java index 9c4cad5750..66e3e15287 100644 --- a/source/com/intellij/openapi/projectRoots/impl/JavaSdkImpl.java +++ b/source/com/intellij/openapi/projectRoots/impl/JavaSdkImpl.java @@ -14,6 +14,7 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.containers.HashMap; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -21,6 +22,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.io.*; import java.util.ArrayList; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -40,6 +42,7 @@ public class JavaSdkImpl extends JavaSdk { public JavaSdkImpl(JarFileSystem jarFileSystem) { super("JavaSDK"); + System.out.println("NEW JavaSdkImpl"+this); myJarFileSystem = jarFileSystem; } @@ -199,15 +202,27 @@ public class JavaSdkImpl extends JavaSdk { sdkModificator.commitChanges(); } + private final Map myCachedVersionStrings = new HashMap(); + public final String getVersionString(final String sdkHome) { - String versionString = getVersionStringImpl(sdkHome); + String versionString; + + if(myCachedVersionStrings.containsKey(sdkHome)) { + return myCachedVersionStrings.get(sdkHome); + } else { + versionString = getVersionStringImpl(sdkHome); + } if (versionString != null && versionString.length() == 0) { versionString = null; } + if (versionString == null){ Messages.showMessageDialog(ProjectBundle.message("sdk.java.corrupt.error", sdkHome), ProjectBundle.message("sdk.java.corrupt.title"), Messages.getErrorIcon()); + } else { + myCachedVersionStrings.put(sdkHome, versionString); } + return versionString; } -- 2.11.4.GIT