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:
Maxim.Mossienko
2010-06-10 18:07:40 +04:00
parent c3b18ab130
commit 1ea6a21e4a
3 changed files with 21 additions and 20 deletions
@@ -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() {