This commit is contained in:
Vladimir Krivosheev
2016-11-04 14:42:18 +01:00
parent 5a803b3471
commit 1977040375
8 changed files with 50 additions and 83 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -19,71 +19,15 @@ import org.jetbrains.annotations.NonNls;
public interface IdeaXml {
@NonNls String COMPONENT_TAG = "component";
@NonNls String NAME_ATTR = "name";
@NonNls String NEW_MODULE_ROOT_MANAGER_VALUE = "NewModuleRootManager";
@NonNls String ORDER_ENTRY_TAG = "orderEntry";
@NonNls String TYPE_ATTR = "type";
@NonNls String EXPORTED_ATTR = "exported";
@NonNls String SOURCE_FOLDER_TYPE = "sourceFolder";
@NonNls String SOURCE_FOLDER_TAG = "sourceFolder";
@NonNls String CONTENT_ENTRY_TAG = "contentEntry";
@NonNls String TEST_FOLDER_TAG = "testFolder";
@NonNls String PACKAGE_PREFIX_TAG = "packagePrefix";
@NonNls String PACKAGE_PREFIX_VALUE_ATTR = "value";
@NonNls String EXCLUDE_FOLDER_TAG = "excludeFolder";
@NonNls String FOR_TESTS_ATTR = "forTests";
@NonNls String TRUE_VALUE = "true";
@NonNls String FALSE_VALUE = "false";
@NonNls String CONTENT_TAG = "content";
@NonNls String MODULE_LIBRARY_TYPE = "module-library";
@NonNls String LIBRARY_TAG = "library";
@NonNls String ROOT_TAG = "root";
@NonNls String CLASSES_TAG = "CLASSES";
@NonNls String SOURCES_TAG = "SOURCES";
@NonNls String JAVADOC_TAG = "JAVADOC";
@NonNls String JAR_DIR = "jarDirectory";
@NonNls String URL_ATTR = "url";
@NonNls String LIBRARY_TYPE = "library";
@NonNls String LEVEL_ATTR = "level";
@NonNls String APPLICATION_LEVEL = "application";
@NonNls String PROJECT_LEVEL = "project";
@NonNls String ECLIPSE_LIBRARY = "ECLIPSE";
@NonNls String MODULE_TYPE = "module";
@NonNls String MODULE_NAME_ATTR = "module-name";
@NonNls String JDK_TYPE = "jdk";
@NonNls String INHERITED_JDK_TYPE = "inheritedJdk";
@NonNls String JDK_NAME_ATTR = "jdkName";
@NonNls String JDK_TYPE_ATTR = "jdkType";
@NonNls String JAVA_SDK_TYPE = "JavaSDK";
@NonNls String MODULE_DIR_MACRO = "$MODULE_DIR$";
@NonNls String FILE_PREFIX = "file://";
@NonNls String JAR_PREFIX = "jar://";
@NonNls String JAR_SUFFIX = "!/";
@NonNls String JAR_EXT = ".jar";
@NonNls String ZIP_EXT = ".zip";
@NonNls String EXCLUDE_OUTPUT_TAG = "exclude-output";
@NonNls String LANGUAGE_LEVEL_ATTR = "LANGUAGE_LEVEL";
@NonNls String INHERIT_COMPILER_OUTPUT_ATTR = "inherit-compiler-output";
@NonNls String OUTPUT_TAG = "output";
@NonNls String OUTPUT_TEST_TAG = "output-test";
@NonNls String IS_TEST_SOURCE_ATTR = "isTestSource";
@NonNls String ORDER_ENTRY_PROPERTIES_TAG = "orderEntryProperties";
@NonNls String IPR_EXT = ".ipr";
@NonNls String PROJECT_MODULE_MANAGER_VALUE = "ProjectModuleManager";
@NonNls String MODULES_TAG = "modules";
@NonNls String MODULE_TAG = "module";
@NonNls String FILEURL_ATTR = "fileurl";
@NonNls String FILEPATH_ATTR = "filepath";
@NonNls String PROJECT_DIR_MACRO = "$PROJECT_DIR$";
@NonNls String PROJECT_PREFIX = FILE_PREFIX + PROJECT_DIR_MACRO + "/";
@NonNls String USED_PATH_MACROS_TAG = "UsedPathMacros";
@NonNls String MACRO_TAG = "macro";
@NonNls String UNNAMED_PROJECT = "unnamed";
@NonNls String MODULE_CONTEXT = "module";
@NonNls String PROJECT_CONTEXT = "project";
@NonNls String CLASSPATH_CONTEXT = "classpath";
@NonNls String TEMPLATE_CONTEXT = "template";
@NonNls String EXCLUDE_OUTPUT = "exclude-output";
@NonNls String IML_EXT = ".iml";
String JUNIT = "junit";
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -31,6 +31,7 @@ import org.jetbrains.jps.model.module.JpsDependenciesList;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
import org.jetbrains.jps.model.serialization.JpsMacroExpander;
import org.jetbrains.jps.model.serialization.java.JpsJavaModelSerializerExtension;
import org.jetbrains.jps.model.serialization.library.JpsSdkTableSerializer;
import java.io.File;
@@ -110,8 +111,8 @@ class JpsIdeaSpecificSettings extends AbstractIdeaSpecificSettings<JpsModule, St
extension.setTestOutputUrl(testOutputElement.getAttributeValue(IdeaXml.URL_ATTR));
}
final String inheritedOutput = root.getAttributeValue(IdeaXml.INHERIT_COMPILER_OUTPUT_ATTR);
if (inheritedOutput != null && Boolean.valueOf(inheritedOutput).booleanValue()) {
final String inheritedOutput = root.getAttributeValue(JpsJavaModelSerializerExtension.INHERIT_COMPILER_OUTPUT_ATTRIBUTE);
if (inheritedOutput != null && Boolean.parseBoolean(inheritedOutput)) {
extension.setInheritOutput(true);
}
extension.setExcludeOutput(root.getChild(IdeaXml.EXCLUDE_OUTPUT_TAG) != null);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -42,9 +42,9 @@ import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.eclipse.AbstractEclipseClasspathReader;
import org.jetbrains.idea.eclipse.IdeaXml;
import org.jetbrains.idea.eclipse.config.EclipseModuleManagerImpl;
import org.jetbrains.jps.model.serialization.java.JpsJavaModelSerializerExtension;
import java.io.File;
import java.util.*;
@@ -127,7 +127,7 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl
compilerModuleExtension.setCompilerOutputPathForTests(testOutputElement.getAttributeValue(IdeaXml.URL_ATTR));
}
final String inheritedOutput = root.getAttributeValue(IdeaXml.INHERIT_COMPILER_OUTPUT_ATTR);
final String inheritedOutput = root.getAttributeValue(JpsJavaModelSerializerExtension.INHERIT_COMPILER_OUTPUT_ATTRIBUTE);
if (inheritedOutput != null && Boolean.valueOf(inheritedOutput).booleanValue()) {
compilerModuleExtension.inheritCompilerOutputPath(true);
}
@@ -251,7 +251,7 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl
isModified = true;
}
if (compilerModuleExtension.isCompilerOutputPathInherited()) {
root.setAttribute(IdeaXml.INHERIT_COMPILER_OUTPUT_ATTR, String.valueOf(true));
root.setAttribute(JpsJavaModelSerializerExtension.INHERIT_COMPILER_OUTPUT_ATTRIBUTE, String.valueOf(true));
isModified = true;
}
if (compilerModuleExtension.isExcludeOutput()) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -27,6 +27,7 @@ import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
@@ -54,8 +55,6 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packaging.artifacts.ModifiableArtifactModel;
import com.intellij.projectImport.ProjectImportBuilder;
import com.intellij.util.Function;
import com.intellij.util.Processor;
import com.intellij.util.containers.HashMap;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
@@ -93,22 +92,27 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
private Parameters parameters;
@Override
@NotNull
public String getName() {
return EclipseBundle.message("eclipse.name");
}
@Override
public Icon getIcon() {
return EclipseIcons.Eclipse;
}
@Override
@Nullable
public String getRootDirectory() {
return getParameters().root;
}
@Override
public boolean setRootDirectory(final String path) {
ProgressManager.getInstance().run(new Task.Modal(getCurrentProject(), EclipseBundle.message("eclipse.import.scanning"), true) {
@Override
public void run(@NotNull ProgressIndicator indicator) {
final ArrayList<String> roots = new ArrayList<>();
EclipseProjectFinder.findModuleRoots(roots, path, path12 -> {
@@ -128,6 +132,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
getParameters().root = path;
}
@Override
public void onCancel() {
getParameters().workspace = null;
getParameters().root = null;
@@ -138,10 +143,12 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
return getParameters().workspace != null;
}
@Override
public List<String> getList() {
return getParameters().workspace;
}
@Override
public boolean isMarked(final String element) {
if (getParameters().projectsToConvert != null) {
return getParameters().projectsToConvert.contains(element);
@@ -149,23 +156,28 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
return !getParameters().existingModuleNames.contains(EclipseProjectFinder.findProjectName(element));
}
@Override
public void setList(List<String> list) {
getParameters().projectsToConvert = list;
}
@Override
public boolean isOpenProjectSettingsAfter() {
return getParameters().openModuleSettings;
}
@Override
public void setOpenProjectSettingsAfter(boolean on) {
getParameters().openModuleSettings = on;
}
@Override
public void cleanup() {
super.cleanup();
parameters = null;
}
@Override
public boolean validate(final Project currentProject, final Project dstProject) {
final Ref<Exception> refEx = new Ref<>();
final Set<String> variables = new THashSet<>();
@@ -238,7 +250,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
}
final String moduleName = EclipseProjectFinder.findProjectName(path);
moduleNames.add(moduleName);
final File imlFile = new File(modulesDirectory + File.separator + moduleName + IdeaXml.IML_EXT);
final File imlFile = new File(modulesDirectory + File.separator + moduleName + ModuleManagerImpl.IML_EXTENSION);
if (imlFile.isFile()) {
files.add(imlFile);
}
@@ -282,7 +294,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
if (modulesDirectory == null) {
modulesDirectory = path;
}
final Module module = moduleModel.newModule(modulesDirectory + "/" + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT,
final Module module = moduleModel.newModule(modulesDirectory + "/" + EclipseProjectFinder.findProjectName(path) + ModuleManagerImpl.IML_EXTENSION,
StdModuleTypes.JAVA.getId());
result.add(module);
final Set<String> natures = collectNatures(path);
@@ -412,7 +424,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
private static void createEclipseLibrary(final Project project, final Collection<String> libraries, final String libraryName) {
if (libraries.contains(libraryName)) {
final FileChooserDescriptor fileChooserDescriptor = new FileChooserDescriptor(false, true, false, false, false, false) {
@Override
public Icon getIcon(final VirtualFile file) {
return looksLikeEclipse(file) ? dressIcon(file, EclipseIcons.Eclipse) : super.getIcon(file);
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -25,8 +25,8 @@ import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ModuleRootModel;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
@@ -38,7 +38,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.util.Consumer;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
@@ -82,12 +81,9 @@ public class EclipseClasspathTest extends IdeaTestCase {
}
final Element classpathElement = JDOMUtil.loadDocument(fileText).getRootElement();
final Module module = WriteCommandAction.runWriteCommandAction(null, new Computable<Module>() {
@Override
public Module compute() {
String imlPath = path + "/" + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT;
return ModuleManager.getInstance(project).newModule(imlPath, StdModuleTypes.JAVA.getId());
}
final Module module = WriteCommandAction.runWriteCommandAction(null, (Computable<Module>)() -> {
String imlPath = path + "/" + EclipseProjectFinder.findProjectName(path) + ModuleManagerImpl.IML_EXTENSION;
return ModuleManager.getInstance(project).newModule(imlPath, StdModuleTypes.JAVA.getId());
});
ModuleRootModificationUtil.updateModel(module, model -> {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -25,6 +25,7 @@ import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
@@ -75,7 +76,7 @@ public class EclipseEmlTest extends IdeaTestCase {
private static Module doLoadModule(@NotNull String path, @NotNull Project project) throws IOException, JDOMException, InvalidDataException {
Module module = WriteAction.compute(
() -> ModuleManager.getInstance(project).newModule(path + '/' + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT, StdModuleTypes.JAVA.getId()));
() -> ModuleManager.getInstance(project).newModule(path + '/' + EclipseProjectFinder.findProjectName(path) + ModuleManagerImpl.IML_EXTENSION, StdModuleTypes.JAVA.getId()));
replaceRoot(path, EclipseXml.DOT_CLASSPATH_EXT, project);
@@ -29,6 +29,7 @@ import com.intellij.openapi.components.PathMacroManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ModuleRootManager;
@@ -81,7 +82,7 @@ public class EclipseImlTest extends IdeaTestCase {
final Element classpathElement = JDOMUtil.loadDocument(fileText).getRootElement();
final Module module = WriteCommandAction.runWriteCommandAction(null, (Computable<Module>)() -> ModuleManager.getInstance(project)
.newModule(new File(path) + File.separator + EclipseProjectFinder
.findProjectName(path) + IdeaXml.IML_EXT, StdModuleTypes.JAVA.getId()));
.findProjectName(path) + ModuleManagerImpl.IML_EXTENSION, StdModuleTypes.JAVA.getId()));
final ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel();
EclipseClasspathReader classpathReader = new EclipseClasspathReader(path, project, null);
classpathReader.init(rootModel);
@@ -17,15 +17,27 @@ package org.jetbrains.settingsRepository.git
import com.intellij.openapi.progress.ProcessCanceledException
import com.intellij.openapi.util.text.StringUtil
import org.eclipse.jgit.api.CommitCommand
import org.eclipse.jgit.api.ResetCommand
import org.eclipse.jgit.dircache.DirCacheCheckout
import org.eclipse.jgit.errors.TransportException
import org.eclipse.jgit.internal.JGitText
import org.eclipse.jgit.lib.*
import org.eclipse.jgit.revwalk.RevCommit
import org.eclipse.jgit.revwalk.RevSort
import org.eclipse.jgit.revwalk.RevWalk
import org.eclipse.jgit.revwalk.filter.RevFilter
import org.eclipse.jgit.storage.file.FileRepositoryBuilder
import org.eclipse.jgit.transport.CredentialsProvider
import org.eclipse.jgit.transport.FetchResult
import org.eclipse.jgit.transport.RemoteConfig
import org.eclipse.jgit.transport.Transport
import org.eclipse.jgit.treewalk.FileTreeIterator
import org.eclipse.jgit.treewalk.TreeWalk
import org.eclipse.jgit.treewalk.filter.TreeFilter
import org.jetbrains.settingsRepository.AuthenticationException
import org.jetbrains.settingsRepository.IcsCredentialsStore
import org.jetbrains.settingsRepository.LOG
import java.io.InputStream
import java.nio.file.Path