mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SDK becomes user data holder, Flex autogenerated library listener map (with SDK strong key) was transformed to user data value
This commit is contained in:
@@ -24,15 +24,16 @@ import com.intellij.openapi.projectRoots.SdkAdditionalData;
|
||||
import com.intellij.openapi.projectRoots.SdkModificator;
|
||||
import com.intellij.openapi.projectRoots.SdkType;
|
||||
import com.intellij.openapi.roots.RootProvider;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* used to override JdkHome location in order to provide correct paths
|
||||
*/
|
||||
@@ -70,6 +71,14 @@ public final class MockJdkWrapper implements Sdk {
|
||||
return myDelegate.getRootProvider();
|
||||
}
|
||||
|
||||
public <T> T getUserData(@NotNull Key<T> key) {
|
||||
return myDelegate.getUserData(key);
|
||||
}
|
||||
|
||||
public <T> void putUserData(@NotNull Key<T> key, @Nullable T value) {
|
||||
myDelegate.putUserData(key, value);
|
||||
}
|
||||
|
||||
public Object clone() throws CloneNotSupportedException {
|
||||
throw new CloneNotSupportedException();
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.openapi.projectRoots;
|
||||
|
||||
import com.intellij.openapi.roots.RootProvider;
|
||||
import com.intellij.openapi.util.UserDataHolder;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -23,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
* @author Eugene Zhuravlev
|
||||
* Date: Sep 23, 2004
|
||||
*/
|
||||
public interface Sdk {
|
||||
public interface Sdk extends UserDataHolder {
|
||||
|
||||
SdkType getSdkType();
|
||||
|
||||
|
||||
@@ -25,10 +25,7 @@ import com.intellij.openapi.projectRoots.ex.ProjectRootContainer;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.RootProvider;
|
||||
import com.intellij.openapi.roots.impl.RootProviderBaseImpl;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.JDOMExternalizable;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -40,7 +37,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ProjectJdkImpl implements JDOMExternalizable, Sdk, SdkModificator {
|
||||
public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternalizable, Sdk, SdkModificator {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.projectRoots.impl.ProjectJdkImpl");
|
||||
private final ProjectRootContainerImpl myRootContainer;
|
||||
private String myName;
|
||||
@@ -205,7 +202,7 @@ public class ProjectJdkImpl implements JDOMExternalizable, Sdk, SdkModificator {
|
||||
}
|
||||
}
|
||||
|
||||
public Object clone() throws CloneNotSupportedException {
|
||||
public Object clone() {
|
||||
ProjectJdkImpl newJdk = new ProjectJdkImpl("", mySdkType);
|
||||
copyTo(newJdk);
|
||||
return newJdk;
|
||||
@@ -295,17 +292,11 @@ public class ProjectJdkImpl implements JDOMExternalizable, Sdk, SdkModificator {
|
||||
|
||||
// SdkModificator implementation
|
||||
public SdkModificator getSdkModificator() {
|
||||
try {
|
||||
ProjectJdkImpl sdk = (ProjectJdkImpl)clone();
|
||||
sdk.myOrigin = this;
|
||||
sdk.myRootContainer.startChange();
|
||||
sdk.update();
|
||||
return sdk;
|
||||
}
|
||||
catch (CloneNotSupportedException e) {
|
||||
LOG.error(e); // should not happen
|
||||
return null;
|
||||
}
|
||||
ProjectJdkImpl sdk = (ProjectJdkImpl)clone();
|
||||
sdk.myOrigin = this;
|
||||
sdk.myRootContainer.startChange();
|
||||
sdk.update();
|
||||
return sdk;
|
||||
}
|
||||
|
||||
public void commitChanges() {
|
||||
|
||||
Reference in New Issue
Block a user