final boolean silent,
@Nullable final SdkAdditionalData additionalData,
@Nullable final String customSdkSuggestedName) {
- final List<Sdk> sdksList = Arrays.asList(allSdks);
-
final ProjectJdkImpl sdk;
try {
- String sdkPath = sdkType.sdkPath(homeDir);
-
- final String sdkName = customSdkSuggestedName == null
- ? createUniqueSdkName(sdkType, sdkPath, sdksList)
- : createUniqueSdkName(customSdkSuggestedName, sdksList);
- sdk = new ProjectJdkImpl(sdkName, sdkType);
-
- if (additionalData != null) {
- // additional initialization.
- // E.g. some ruby sdks must be initialized before
- // setupSdkPaths() method invocation
- sdk.setSdkAdditionalData(additionalData);
- }
+ sdk = createSdk(allSdks, homeDir, sdkType, additionalData, customSdkSuggestedName);
- sdk.setHomePath(sdkPath);
sdkType.setupSdkPaths(sdk);
}
catch (Exception e) {
return sdk;
}
+ @NotNull
+ public static ProjectJdkImpl createSdk(@NotNull Sdk[] allSdks,
+ @NotNull VirtualFile homeDir,
+ SdkType sdkType,
+ @Nullable SdkAdditionalData additionalData, @Nullable String customSdkSuggestedName) {
+ final List<Sdk> sdksList = Arrays.asList(allSdks);
+
+ String sdkPath = sdkType.sdkPath(homeDir);
+
+ final String sdkName = customSdkSuggestedName == null
+ ? createUniqueSdkName(sdkType, sdkPath, sdksList)
+ : createUniqueSdkName(customSdkSuggestedName, sdksList);
+
+ ProjectJdkImpl sdk = new ProjectJdkImpl(sdkName, sdkType);
+
+ if (additionalData != null) {
+ // additional initialization.
+ // E.g. some ruby sdks must be initialized before
+ // setupSdkPaths() method invocation
+ sdk.setSdkAdditionalData(additionalData);
+ }
+
+ sdk.setHomePath(sdkPath);
+ return sdk;
+ }
+
public static void setDirectoryProjectSdk(@NotNull final Project project, @Nullable final Sdk sdk) {
ApplicationManager.getApplication().runWriteAction(() -> {
ProjectRootManager.getInstance(project).setProjectSdk(sdk);