mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
loading jps model from eclipse .classpath files: initial
This commit is contained in:
Generated
+1
@@ -38,6 +38,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/xml/dom-openapi/dom-openapi.iml" filepath="$PROJECT_DIR$/xml/dom-openapi/dom-openapi.iml" group="xml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/xml/dom-tests/dom-tests.iml" filepath="$PROJECT_DIR$/xml/dom-tests/dom-tests.iml" group="xml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/eclipse.iml" filepath="$PROJECT_DIR$/plugins/eclipse/eclipse.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/jps-plugin/eclipse-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/eclipse/jps-plugin/eclipse-jps-plugin.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/execution/impl/execution-impl.iml" filepath="$PROJECT_DIR$/java/execution/impl/execution-impl.iml" group="java" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml" filepath="$PROJECT_DIR$/java/execution/openapi/execution-openapi.iml" group="java" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/extensions/extensions.iml" filepath="$PROJECT_DIR$/platform/extensions/extensions.iml" group="platform" />
|
||||
|
||||
@@ -204,7 +204,7 @@ def layoutFull(String home, String targetDirectory, String patchedDescriptorDir
|
||||
|
||||
public def layoutCommunityPlugins(String home) {
|
||||
dir("plugins") {
|
||||
def simplePlugins = ["commander", "copyright", "properties", "java-i18n", "eclipse", "hg4idea", "github", "ui-designer-new"]
|
||||
def simplePlugins = ["commander", "copyright", "properties", "java-i18n", "hg4idea", "github", "ui-designer-new"]
|
||||
|
||||
simplePlugins.each {
|
||||
layoutPlugin it
|
||||
@@ -364,6 +364,11 @@ public def layoutCommunityPlugins(String home) {
|
||||
}
|
||||
}
|
||||
}
|
||||
layoutPlugin("eclipse") {
|
||||
jar("eclipse-jps-plugin.jar") {
|
||||
module("eclipse-jps-plugin")
|
||||
}
|
||||
}
|
||||
|
||||
layoutPlugin("android") {
|
||||
fileset(dir: "${home}/plugins/android/lib") {
|
||||
|
||||
+6
@@ -13,6 +13,7 @@ import org.jetbrains.jps.model.serialization.facet.JpsFacetConfigurationSerializ
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryPropertiesSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryRootTypeSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsSdkPropertiesSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleClasspathSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModulePropertiesSerializer;
|
||||
import org.jetbrains.jps.service.JpsServiceManager;
|
||||
|
||||
@@ -94,4 +95,9 @@ public abstract class JpsModelSerializerExtension {
|
||||
public List<? extends JpsArtifactPropertiesSerializer<?>> getArtifactTypePropertiesSerializers() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JpsModuleClasspathSerializer getClasspathSerializer() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+20
-5
@@ -18,6 +18,7 @@ import org.jetbrains.jps.model.serialization.artifact.JpsArtifactSerializer;
|
||||
import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsSdkTableSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleClasspathSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModulePropertiesSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer;
|
||||
import org.jetbrains.jps.service.SharedThreadPool;
|
||||
@@ -36,6 +37,8 @@ import java.util.concurrent.Future;
|
||||
*/
|
||||
public class JpsProjectLoader extends JpsLoaderBase {
|
||||
private static final BoundedTaskExecutor ourThreadPool = new BoundedTaskExecutor(SharedThreadPool.getInstance(), Runtime.getRuntime().availableProcessors());
|
||||
public static final String CLASSPATH_ATTRIBUTE = "classpath";
|
||||
public static final String CLASSPATH_DIR_ATTRIBUTE = "classpath-dir";
|
||||
private final JpsProject myProject;
|
||||
private final Map<String, String> myPathVariables;
|
||||
|
||||
@@ -169,11 +172,23 @@ public class JpsProjectLoader extends JpsLoaderBase {
|
||||
final String typeId = moduleRoot.getAttributeValue("type");
|
||||
final JpsModulePropertiesSerializer<?> serializer = getModulePropertiesSerializer(typeId);
|
||||
final JpsModule module = createModule(name, moduleRoot, serializer);
|
||||
JpsModuleRootModelSerializer
|
||||
.loadRootModel(module, JDomSerializationUtil.findComponent(moduleRoot, "NewModuleRootManager"), projectSdkType);
|
||||
final String moduleDirPath = file.getParent();
|
||||
JpsFacetSerializer.loadFacets(module, JDomSerializationUtil.findComponent(moduleRoot, "FacetManager"),
|
||||
FileUtil.toSystemIndependentName(moduleDirPath));
|
||||
|
||||
String baseModulePath = FileUtil.toSystemIndependentName(file.getParent());
|
||||
String classpath = moduleRoot.getAttributeValue(CLASSPATH_ATTRIBUTE);
|
||||
if (classpath == null) {
|
||||
JpsModuleRootModelSerializer.loadRootModel(module, JDomSerializationUtil.findComponent(moduleRoot, "NewModuleRootManager"),
|
||||
projectSdkType);
|
||||
}
|
||||
else {
|
||||
for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
|
||||
JpsModuleClasspathSerializer classpathSerializer = extension.getClasspathSerializer();
|
||||
if (classpathSerializer != null && classpathSerializer.getClasspathId().equals(classpath)) {
|
||||
String classpathDir = moduleRoot.getAttributeValue(CLASSPATH_DIR_ATTRIBUTE);
|
||||
classpathSerializer.loadClasspath(module, classpathDir, baseModulePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
JpsFacetSerializer.loadFacets(module, JDomSerializationUtil.findComponent(moduleRoot, "FacetManager"), baseModulePath);
|
||||
return module;
|
||||
}
|
||||
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package org.jetbrains.jps.model.serialization.module;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class JpsModuleClasspathSerializer {
|
||||
private final String myClasspathId;
|
||||
|
||||
protected JpsModuleClasspathSerializer(String classpathId) {
|
||||
myClasspathId = classpathId;
|
||||
}
|
||||
|
||||
public final String getClasspathId() {
|
||||
return myClasspathId;
|
||||
}
|
||||
|
||||
public abstract void loadClasspath(@NotNull JpsModule module, @Nullable String classpathDir, @NotNull String baseModulePath);
|
||||
}
|
||||
+3
-2
@@ -50,6 +50,7 @@ import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.serialization.JpsProjectLoader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -69,8 +70,8 @@ public class ClasspathStorage implements StateStorage {
|
||||
|
||||
public static final String DEFAULT_STORAGE_DESCR = ProjectBundle.message("project.roots.classpath.format.default.descr");
|
||||
|
||||
@NonNls public static final String CLASSPATH_OPTION = "classpath";
|
||||
@NonNls public static final String CLASSPATH_DIR_OPTION = "classpath-dir";
|
||||
@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";
|
||||
private Object mySession;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<orderEntry type="module" module-name="idea-ui" />
|
||||
<orderEntry type="module" module-name="annotations" />
|
||||
<orderEntry type="module" module-name="java-impl" />
|
||||
<orderEntry type="module" module-name="eclipse-jps-plugin" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="util" />
|
||||
<orderEntry type="module" module-name="jps-model-api" />
|
||||
<orderEntry type="module" module-name="jps-model-serialization" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
org.jetbrains.jps.eclipse.model.JpsEclipseModelSerializerExtension
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package org.jetbrains.jps.eclipse.model;
|
||||
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleClasspathSerializer;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer {
|
||||
@NonNls public static final String CLASSPATH_STORAGE_ID = "eclipse";
|
||||
|
||||
public JpsEclipseClasspathSerializer() {
|
||||
super(CLASSPATH_STORAGE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadClasspath(@NotNull JpsModule module, @Nullable String classpathDir, @NotNull String baseModulePath) {
|
||||
}
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright 2000-2012 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 org.jetbrains.jps.eclipse.model;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleClasspathSerializer;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsEclipseModelSerializerExtension extends JpsModelSerializerExtension {
|
||||
private static final JpsEclipseClasspathSerializer CLASSPATH_SERIALIZER = new JpsEclipseClasspathSerializer();
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JpsModuleClasspathSerializer getClasspathSerializer() {
|
||||
return CLASSPATH_SERIALIZER;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
<vendor url="http://www.jetbrains.com" logo="/general/ijLogo.png">JetBrains s.r.o.</vendor>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<classpathStorageProvider implementation="org.jetbrains.idea.eclipse.config.EclipseClasspathStorageProvider"/>
|
||||
<compileServer.plugin classpath="eclipse-jps-plugin.jar"/>
|
||||
<projectImportProvider implementation="org.jetbrains.idea.eclipse.importWizard.EclipseProjectImportProvider"/>
|
||||
<projectOpenProcessor id="EclipseProjectOpenProcessor" implementation="org.jetbrains.idea.eclipse.importWizard.EclipseProjectOpenProcessor"/>
|
||||
<projectImportBuilder implementation="org.jetbrains.idea.eclipse.importWizard.EclipseImportBuilder"/>
|
||||
|
||||
+3
-3
@@ -39,6 +39,7 @@ import org.jetbrains.idea.eclipse.EclipseBundle;
|
||||
import org.jetbrains.idea.eclipse.EclipseXml;
|
||||
import org.jetbrains.idea.eclipse.IdeaXml;
|
||||
import org.jetbrains.idea.eclipse.conversion.*;
|
||||
import org.jetbrains.jps.eclipse.model.JpsEclipseClasspathSerializer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -50,12 +51,11 @@ import java.util.Set;
|
||||
* @author Vladislav.Kaznacheev
|
||||
*/
|
||||
public class EclipseClasspathStorageProvider implements ClasspathStorageProvider {
|
||||
@NonNls public static final String ID = "eclipse";
|
||||
public static final String DESCR = EclipseBundle.message("eclipse.classpath.storage.description");
|
||||
|
||||
@NonNls
|
||||
public String getID() {
|
||||
return ID;
|
||||
return JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID;
|
||||
}
|
||||
|
||||
@Nls
|
||||
@@ -144,7 +144,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider
|
||||
}
|
||||
|
||||
public void moduleRenamed(final Module module, String newName) {
|
||||
if (ClasspathStorage.getStorageType(module).equals(ID)) {
|
||||
if (ClasspathStorage.getStorageType(module).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
try {
|
||||
final CachedXmlDocumentSet documentSet = getFileCache(module);
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.jps.eclipse.model.JpsEclipseClasspathSerializer;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -154,7 +155,7 @@ public class EclipseModuleManager implements PersistentStateComponent<Element>{
|
||||
}
|
||||
|
||||
public Element getState() {
|
||||
if (!ClasspathStorage.getStorageType(myModule).equals(EclipseClasspathStorageProvider.ID)) {
|
||||
if (!ClasspathStorage.getStorageType(myModule).equals(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID)) {
|
||||
if (!myEclipseUrls.isEmpty() || !myEclipseVariablePaths.isEmpty() || myForceConfigureJDK || !myUnknownCons.isEmpty()) {
|
||||
Element root = new Element("EclipseModuleSettings");
|
||||
for (String eclipseUrl : myEclipseUrls) {
|
||||
|
||||
+4
-4
@@ -40,8 +40,8 @@ import org.jdom.output.EclipseJDOMUtil;
|
||||
import org.jetbrains.idea.eclipse.EclipseBundle;
|
||||
import org.jetbrains.idea.eclipse.EclipseXml;
|
||||
import org.jetbrains.idea.eclipse.IdeaXml;
|
||||
import org.jetbrains.idea.eclipse.config.EclipseClasspathStorageProvider;
|
||||
import org.jetbrains.idea.eclipse.conversion.*;
|
||||
import org.jetbrains.jps.eclipse.model.JpsEclipseClasspathSerializer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -64,9 +64,9 @@ public class ExportEclipseProjectsAction extends AnAction implements DumbAware {
|
||||
final List<Module> modules = new ArrayList<Module>();
|
||||
final List<Module> incompatibleModules = new ArrayList<Module>();
|
||||
for (Module module : ModuleManager.getInstance(project).getModules()) {
|
||||
if (!EclipseClasspathStorageProvider.ID.equals(ClasspathStorage.getStorageType(module))) {
|
||||
if (!JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID.equals(ClasspathStorage.getStorageType(module))) {
|
||||
try {
|
||||
ClasspathStorage.getProvider(EclipseClasspathStorageProvider.ID).assertCompatible(ModuleRootManager.getInstance(module));
|
||||
ClasspathStorage.getProvider(JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID).assertCompatible(ModuleRootManager.getInstance(module));
|
||||
modules.add(module);
|
||||
}
|
||||
catch (ConfigurationException e1) {
|
||||
@@ -100,7 +100,7 @@ public class ExportEclipseProjectsAction extends AnAction implements DumbAware {
|
||||
if (dialog.isOK()) {
|
||||
if (dialog.isLink()) {
|
||||
for (Module module : dialog.getSelectedModules()) {
|
||||
ClasspathStorage.setStorageType(ModuleRootManager.getInstance(module), EclipseClasspathStorageProvider.ID);
|
||||
ClasspathStorage.setStorageType(ModuleRootManager.getInstance(module), JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-2
@@ -58,9 +58,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.eclipse.EclipseBundle;
|
||||
import org.jetbrains.idea.eclipse.EclipseXml;
|
||||
import org.jetbrains.idea.eclipse.IdeaXml;
|
||||
import org.jetbrains.idea.eclipse.config.EclipseClasspathStorageProvider;
|
||||
import org.jetbrains.idea.eclipse.conversion.EclipseClasspathReader;
|
||||
import org.jetbrains.idea.eclipse.conversion.EclipseUserLibrariesHelper;
|
||||
import org.jetbrains.jps.eclipse.model.JpsEclipseClasspathSerializer;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
@@ -280,7 +280,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder<String> implement
|
||||
EclipseClasspathReader.setupOutput(rootModel, path + "/bin");
|
||||
}
|
||||
ClasspathStorage.setStorageType(rootModel,
|
||||
getParameters().linkConverted ? EclipseClasspathStorageProvider.ID : ClasspathStorage.DEFAULT_STORAGE);
|
||||
getParameters().linkConverted ? JpsEclipseClasspathSerializer.CLASSPATH_STORAGE_ID : ClasspathStorage.DEFAULT_STORAGE);
|
||||
if (model != null) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
public void run() {
|
||||
|
||||
Reference in New Issue
Block a user