mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
loading jps model from eclipse: fixed adding library dependencies
This commit is contained in:
@@ -52,4 +52,7 @@ public interface JpsProject extends JpsCompositeElement, JpsReferenceableElement
|
||||
@NotNull String getName();
|
||||
|
||||
void setName(@NotNull String name);
|
||||
|
||||
@NotNull
|
||||
JpsModel getModel();
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
||||
public class JpsGlobalImpl extends JpsRootElementBase<JpsGlobalImpl> implements JpsGlobal {
|
||||
private final JpsLibraryCollectionImpl myLibraryCollection;
|
||||
|
||||
public JpsGlobalImpl(JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
public JpsGlobalImpl(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
super(model, eventDispatcher);
|
||||
myLibraryCollection = new JpsLibraryCollectionImpl(myContainer.setChild(JpsLibraryRole.LIBRARIES_COLLECTION_ROLE));
|
||||
myContainer.setChild(JpsFileTypesConfigurationImpl.ROLE, new JpsFileTypesConfigurationImpl());
|
||||
|
||||
@@ -34,7 +34,7 @@ public class JpsProjectImpl extends JpsRootElementBase<JpsProjectImpl> implement
|
||||
private final JpsLibraryCollection myLibraryCollection;
|
||||
private String myName = "";
|
||||
|
||||
public JpsProjectImpl(JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
public JpsProjectImpl(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
super(model, eventDispatcher);
|
||||
myContainer.setChild(JpsModuleRole.MODULE_COLLECTION_ROLE);
|
||||
myContainer.setChild(EXTERNAL_REFERENCES_COLLECTION_ROLE);
|
||||
|
||||
@@ -12,7 +12,7 @@ public abstract class JpsRootElementBase<E extends JpsRootElementBase<E>> extend
|
||||
private final JpsModel myModel;
|
||||
private final JpsEventDispatcher myEventDispatcher;
|
||||
|
||||
protected JpsRootElementBase(JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
protected JpsRootElementBase(@NotNull JpsModel model, JpsEventDispatcher eventDispatcher) {
|
||||
super();
|
||||
myModel = model;
|
||||
myEventDispatcher = eventDispatcher;
|
||||
@@ -29,8 +29,9 @@ public abstract class JpsRootElementBase<E extends JpsRootElementBase<E>> extend
|
||||
return myEventDispatcher;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected JpsModel getModel() {
|
||||
public JpsModel getModel() {
|
||||
return myModel;
|
||||
}
|
||||
|
||||
|
||||
+7
-22
@@ -23,10 +23,9 @@ import org.jdom.Element;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.eclipse.*;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.library.JpsLibraryReference;
|
||||
import org.jetbrains.jps.model.library.JpsOrderRootType;
|
||||
import org.jetbrains.jps.model.module.*;
|
||||
import org.jetbrains.jps.model.serialization.JpsMacroExpander;
|
||||
@@ -67,11 +66,10 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
|
||||
boolean exported,
|
||||
String name,
|
||||
boolean applicationLevel) {
|
||||
JpsLibrary lib = findLibraryByName(rootModel.getProject(), name);
|
||||
if (lib != null) {
|
||||
final JpsLibraryDependency dependency = rootModel.getDependenciesList().addLibraryDependency(lib);
|
||||
setLibraryEntryExported(exported, dependency);
|
||||
}
|
||||
JpsElementFactory factory = JpsElementFactory.getInstance();
|
||||
JpsLibraryReference libraryReference = factory.createLibraryReference(name, applicationLevel ? factory.createGlobalReference() : factory.createProjectReference());
|
||||
final JpsLibraryDependency dependency = rootModel.getDependenciesList().addLibraryDependency(libraryReference);
|
||||
setLibraryEntryExported(dependency, exported);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -160,7 +158,7 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
|
||||
}
|
||||
jpsLibrary.addRoot(url, JpsOrderRootType.COMPILED);
|
||||
|
||||
setLibraryEntryExported(exported, dependency);
|
||||
setLibraryEntryExported(dependency, exported);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -239,24 +237,11 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
|
||||
extension.setInheritOutput(false);
|
||||
}
|
||||
|
||||
private static void setLibraryEntryExported(boolean exported,
|
||||
final JpsDependencyElement dependency) {
|
||||
private static void setLibraryEntryExported(final JpsDependencyElement dependency, boolean exported) {
|
||||
final JpsJavaDependencyExtension extension = getService().getOrCreateDependencyExtension(dependency);
|
||||
extension.setExported(exported);
|
||||
}
|
||||
|
||||
|
||||
public static JpsLibrary findLibraryByName(JpsProject project, String name) {
|
||||
JpsLibrary lib = project.getLibraryCollection().findLibrary(name);
|
||||
if (lib == null) {
|
||||
final JpsModel model = JpsElementFactory.getInstance().createModel();
|
||||
lib = model.getGlobal().getLibraryCollection().findLibrary(name);
|
||||
}
|
||||
|
||||
return lib;
|
||||
}
|
||||
|
||||
|
||||
private static JpsJavaExtensionService getService() {
|
||||
return JpsJavaExtensionService.getInstance();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user