mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move some methods from lang-impl to ClassPathUtil
This commit is contained in:
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleRootEvent;
|
||||
import com.intellij.openapi.roots.ModuleRootListener;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.impl.storage.ClassPathStorageUtil;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorageProvider;
|
||||
import com.intellij.openapi.roots.ui.configuration.classpath.ClasspathPanelImpl;
|
||||
@@ -53,7 +54,7 @@ public class ClasspathEditor extends ModuleElementsEditor implements ModuleRootL
|
||||
super(state);
|
||||
|
||||
final Disposable disposable = Disposer.newDisposable();
|
||||
|
||||
|
||||
state.getProject().getMessageBus().connect(disposable).subscribe(ProjectTopics.PROJECT_ROOTS, this);
|
||||
registerDisposable(disposable);
|
||||
}
|
||||
@@ -211,7 +212,7 @@ public class ClasspathEditor extends ModuleElementsEditor implements ModuleRootL
|
||||
|
||||
@NotNull
|
||||
private String getModuleClasspathFormat() {
|
||||
return ClasspathStorage.getStorageType(getModel().getModule());
|
||||
return ClassPathStorageUtil.getStorageType(getModel().getModule());
|
||||
}
|
||||
|
||||
boolean isModified() {
|
||||
|
||||
+4
-3
@@ -17,6 +17,7 @@ package com.intellij.openapi.roots.impl;
|
||||
|
||||
import com.intellij.openapi.components.*;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.impl.storage.ClassPathStorageUtil;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager;
|
||||
|
||||
@@ -27,7 +28,7 @@ import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager;
|
||||
name = "NewModuleRootManager",
|
||||
storages = {
|
||||
@Storage(
|
||||
id = ClasspathStorage.DEFAULT_STORAGE,
|
||||
id = ClassPathStorageUtil.DEFAULT_STORAGE,
|
||||
file = "$MODULE_FILE$"
|
||||
),
|
||||
|
||||
@@ -50,8 +51,8 @@ public class ModuleRootManagerComponent extends ModuleRootManagerImpl implements
|
||||
public static class StorageChooser implements StateStorageChooser<ModuleRootManagerImpl> {
|
||||
@Override
|
||||
public Storage[] selectStorages(Storage[] storages, ModuleRootManagerImpl moduleRootManager, final StateStorageOperation operation) {
|
||||
final String storageType = ClasspathStorage.getStorageType(moduleRootManager.getModule());
|
||||
final String id = storageType.equals(ClasspathStorage.DEFAULT_STORAGE)? ClasspathStorage.DEFAULT_STORAGE: ClasspathStorage.SPECIAL_STORAGE;
|
||||
final boolean isDefaultStorageType = ClassPathStorageUtil.isDefaultStorage(moduleRootManager.getModule());
|
||||
final String id = isDefaultStorageType ? ClassPathStorageUtil.DEFAULT_STORAGE: ClasspathStorage.SPECIAL_STORAGE;
|
||||
for (Storage storage : storages) {
|
||||
if (storage.id().equals(id)) return new Storage[]{storage};
|
||||
}
|
||||
|
||||
+16
-21
@@ -62,12 +62,10 @@ import java.util.*;
|
||||
public class ClasspathStorage implements StateStorage {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.impl.storage.ClasspathStorage");
|
||||
|
||||
@NonNls public static final String DEFAULT_STORAGE = "default";
|
||||
@NonNls public static final String SPECIAL_STORAGE = "special";
|
||||
|
||||
public static final String DEFAULT_STORAGE_DESCR = ProjectBundle.message("project.roots.classpath.format.default.descr");
|
||||
|
||||
@NonNls public static final String CLASSPATH_OPTION = JpsProjectLoader.CLASSPATH_ATTRIBUTE;
|
||||
@NonNls public static final String CLASSPATH_DIR_OPTION = JpsProjectLoader.CLASSPATH_DIR_ATTRIBUTE;
|
||||
|
||||
@NonNls private static final String COMPONENT_TAG = "component";
|
||||
@@ -76,7 +74,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
|
||||
|
||||
public ClasspathStorage(Module module) {
|
||||
myConverter = getProvider(getStorageType(module)).createConverter(module);
|
||||
myConverter = getProvider(ClassPathStorageUtil.getStorageType(module)).createConverter(module);
|
||||
final MessageBus messageBus = module.getMessageBus();
|
||||
final VirtualFileTracker virtualFileTracker =
|
||||
(VirtualFileTracker)module.getPicoContainer().getComponentInstanceOfType(VirtualFileTracker.class);
|
||||
@@ -185,7 +183,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public SaveSession startSave(final ExternalizationSession externalizationSession) {
|
||||
public SaveSession startSave(@NotNull final ExternalizationSession externalizationSession) {
|
||||
assert mySession == externalizationSession;
|
||||
|
||||
final SaveSession session = new MySaveSession();
|
||||
@@ -202,7 +200,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishSave(final SaveSession saveSession) {
|
||||
public void finishSave(@NotNull final SaveSession saveSession) {
|
||||
try {
|
||||
LOG.assertTrue(mySession == saveSession);
|
||||
}
|
||||
@@ -212,7 +210,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reload(final Set<String> changedComponents) throws StateStorageException {
|
||||
public void reload(@NotNull final Set<String> changedComponents) throws StateStorageException {
|
||||
}
|
||||
|
||||
public boolean needsSave() throws StateStorageException {
|
||||
@@ -238,7 +236,8 @@ public class ClasspathStorage implements StateStorage {
|
||||
}
|
||||
}
|
||||
|
||||
public static ClasspathStorageProvider getProvider(final String type) {
|
||||
@NotNull
|
||||
public static ClasspathStorageProvider getProvider(@NotNull String type) {
|
||||
for (ClasspathStorageProvider provider : getProviders()) {
|
||||
if (type.equals(provider.getID())) {
|
||||
return provider;
|
||||
@@ -247,6 +246,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
return new UnsupportedStorageProvider(type);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<ClasspathStorageProvider> getProviders() {
|
||||
final List<ClasspathStorageProvider> list = new ArrayList<ClasspathStorageProvider>();
|
||||
list.add(new DefaultStorageProvider());
|
||||
@@ -255,12 +255,7 @@ public class ClasspathStorage implements StateStorage {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getStorageType(final Module module) {
|
||||
final String id = module.getOptionValue(CLASSPATH_OPTION);
|
||||
return id != null ? id : DEFAULT_STORAGE;
|
||||
}
|
||||
|
||||
public static String getModuleDir(final Module module) {
|
||||
public static String getModuleDir(@NotNull Module module) {
|
||||
return new File(module.getModuleFilePath()).getParent();
|
||||
}
|
||||
|
||||
@@ -278,38 +273,38 @@ public class ClasspathStorage implements StateStorage {
|
||||
}
|
||||
}
|
||||
|
||||
public static void setStorageType(final ModuleRootModel model, final String storageID) {
|
||||
public static void setStorageType(@NotNull ModuleRootModel model, @NotNull String storageID) {
|
||||
final Module module = model.getModule();
|
||||
final String oldStorageType = getStorageType(module);
|
||||
final String oldStorageType = ClassPathStorageUtil.getStorageType(module);
|
||||
if (oldStorageType.equals(storageID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
getProvider(oldStorageType).detach(module);
|
||||
|
||||
if (storageID.equals(DEFAULT_STORAGE)) {
|
||||
module.clearOption(CLASSPATH_OPTION);
|
||||
if (storageID.equals(ClassPathStorageUtil.DEFAULT_STORAGE)) {
|
||||
module.clearOption(ClassPathStorageUtil.CLASSPATH_OPTION);
|
||||
module.clearOption(CLASSPATH_DIR_OPTION);
|
||||
}
|
||||
else {
|
||||
module.setOption(CLASSPATH_OPTION, storageID);
|
||||
module.setOption(ClassPathStorageUtil.CLASSPATH_OPTION, storageID);
|
||||
module.setOption(CLASSPATH_DIR_OPTION, getProvider(storageID).getContentRoot(model));
|
||||
}
|
||||
}
|
||||
|
||||
public static void moduleRenamed(Module module, String newName) {
|
||||
getProvider(getStorageType(module)).moduleRenamed(module, newName);
|
||||
getProvider(ClassPathStorageUtil.getStorageType(module)).moduleRenamed(module, newName);
|
||||
}
|
||||
|
||||
public static void modulePathChanged(Module module, String path) {
|
||||
getProvider(getStorageType(module)).modulePathChanged(module, path);
|
||||
getProvider(ClassPathStorageUtil.getStorageType(module)).modulePathChanged(module, path);
|
||||
}
|
||||
|
||||
private static class DefaultStorageProvider implements ClasspathStorageProvider {
|
||||
@Override
|
||||
@NonNls
|
||||
public String getID() {
|
||||
return DEFAULT_STORAGE;
|
||||
return ClassPathStorageUtil.DEFAULT_STORAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.openapi.roots.impl.storage;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.serialization.JpsProjectLoader;
|
||||
|
||||
public class ClassPathStorageUtil {
|
||||
@NonNls public static final String DEFAULT_STORAGE = "default";
|
||||
@NonNls public static final String CLASSPATH_OPTION = JpsProjectLoader.CLASSPATH_ATTRIBUTE;
|
||||
|
||||
public static boolean isDefaultStorage(@NotNull Module module) {
|
||||
final String storageType = getStorageType(module);
|
||||
return storageType.equals(DEFAULT_STORAGE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getStorageType(@NotNull Module module) {
|
||||
final String id = module.getOptionValue(CLASSPATH_OPTION);
|
||||
return id == null ? DEFAULT_STORAGE : id;
|
||||
}
|
||||
}
|
||||
+14
-3
@@ -21,6 +21,7 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.impl.RootModelImpl;
|
||||
import com.intellij.openapi.roots.impl.storage.ClassPathStorageUtil;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorageProvider;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
@@ -29,7 +30,7 @@ import com.intellij.openapi.util.WriteExternalException;
|
||||
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.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jdom.Document;
|
||||
import org.jdom.Element;
|
||||
@@ -55,16 +56,19 @@ import java.util.Set;
|
||||
public class EclipseClasspathStorageProvider implements ClasspathStorageProvider {
|
||||
public static final String DESCR = EclipseBundle.message("eclipse.classpath.storage.description");
|
||||
|
||||
@Override
|
||||
@NonNls
|
||||
public String getID() {
|
||||
return JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nls
|
||||
public String getDescription() {
|
||||
return DESCR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assertCompatible(final ModuleRootModel model) throws ConfigurationException {
|
||||
final String moduleName = model.getModule().getName();
|
||||
for (OrderEntry entry : model.getOrderEntries()) {
|
||||
@@ -91,7 +95,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
final String output = model.getModuleExtension(CompilerModuleExtension.class).getCompilerOutputUrl();
|
||||
final String contentRoot = getContentRoot(model);
|
||||
if (output == null ||
|
||||
!StringUtil.startsWith(VfsUtil.urlToPath(output), contentRoot) &&
|
||||
!StringUtil.startsWith(VfsUtilCore.urlToPath(output), contentRoot) &&
|
||||
PathMacroManager.getInstance(model.getModule()).collapsePath(output).equals(output)) {
|
||||
throw new ConfigurationException("Module \'" +
|
||||
moduleName +
|
||||
@@ -99,14 +103,17 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach(Module module) {
|
||||
EclipseModuleManagerImpl.getInstance(module).setDocumentSet(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClasspathConverter createConverter(Module module) {
|
||||
return new EclipseClasspathConverter(module);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContentRoot(ModuleRootModel model) {
|
||||
final VirtualFile contentRoot = EPathUtil.getContentRoot(model);
|
||||
if (contentRoot != null) return contentRoot.getPath();
|
||||
@@ -145,8 +152,9 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
return fileCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moduleRenamed(final Module module, String newName) {
|
||||
if (ClasspathStorage.getStorageType(module).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
if (ClassPathStorageUtil.getStorageType(module).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
try {
|
||||
final CachedXmlDocumentSet documentSet = getFileCache(module);
|
||||
|
||||
@@ -184,10 +192,12 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CachedXmlDocumentSet getFileSet() {
|
||||
return getFileCache(module);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getClasspath(ModifiableRootModel model, final Element element) throws IOException, InvalidDataException {
|
||||
try {
|
||||
final HashSet<String> usedVariables = new HashSet<String>();
|
||||
@@ -225,6 +235,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClasspath(final ModuleRootModel model) throws IOException, WriteExternalException {
|
||||
try {
|
||||
final Element classpathElement = new Element(EclipseXml.CLASSPATH_TAG);
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.components.State;
|
||||
import com.intellij.openapi.components.Storage;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleServiceManager;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.roots.impl.storage.ClassPathStorageUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.jdom.Element;
|
||||
@@ -174,7 +174,7 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
|
||||
|
||||
@Override
|
||||
public Element getState() {
|
||||
if (!ClasspathStorage.getStorageType(myModule).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
if (!ClassPathStorageUtil.getStorageType(myModule).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
if (!myEclipseUrls.isEmpty() || !myEclipseVariablePaths.isEmpty() || myForceConfigureJDK || !myUnknownCons.isEmpty()) {
|
||||
Element root = new Element("EclipseModuleSettings");
|
||||
for (String eclipseUrl : myEclipseUrls) {
|
||||
|
||||
+3
-2
@@ -36,6 +36,7 @@ import com.intellij.openapi.project.impl.ProjectMacrosUtil;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.impl.ModifiableModelCommitter;
|
||||
import com.intellij.openapi.roots.impl.storage.ClassPathStorageUtil;
|
||||
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.roots.libraries.LibraryTable;
|
||||
@@ -173,7 +174,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
|
||||
public boolean validate(final Project currentProject, final Project dstProject) {
|
||||
final Ref<Exception> refEx = new Ref<Exception>();
|
||||
final HashSet<String> variables = new HashSet<String>();
|
||||
final Map<String, String> naturesNames = new HashMap<String, String>();
|
||||
final Map<String, String> naturesNames = new HashMap<String, String>();
|
||||
final List<String> projectsToConvert = getParameters().projectsToConvert;
|
||||
final boolean oneProjectToConvert = projectsToConvert.size() == 1;
|
||||
final String separator = oneProjectToConvert ? "<br>" : ", ";
|
||||
@@ -333,7 +334,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
|
||||
EclipseClasspathReader.setOutputUrl(rootModel, path + "/bin");
|
||||
}
|
||||
ClasspathStorage.setStorageType(rootModel,
|
||||
getParameters().linkConverted ? JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID : ClasspathStorage.DEFAULT_STORAGE);
|
||||
getParameters().linkConverted ? JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID : ClassPathStorageUtil.DEFAULT_STORAGE);
|
||||
if (model != null) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
public void run() {
|
||||
|
||||
Reference in New Issue
Block a user