mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[jps model] make JpsLibraryCollectionBridge a real JpsElement (IJPL-409)
We have code that invokes `jpsLibrary.getParent().getParent()` to get a JpsModule instance for a module-level library. To keep such code working, we need to have JpsModule and JpsProject as super-parents (not direct parents) of JpsLibrary instances in the new implementation as well. GitOrigin-RevId: a5f944d152229275b05efdfc686afa091c3fd963
This commit is contained in:
committed by
intellij-monorepo-bot
parent
968ae2429c
commit
35a9f9cbc7
@@ -7,6 +7,7 @@ import com.intellij.testFramework.UsefulTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.*;
|
||||
import org.jetbrains.jps.model.artifact.JpsArtifactService;
|
||||
import org.jetbrains.jps.model.ex.JpsElementBase;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.library.JpsOrderRootType;
|
||||
@@ -59,6 +60,7 @@ public class JpsProjectSerializationTest {
|
||||
|
||||
List<JpsLibrary> libraries = project.getLibraryCollection().getLibraries();
|
||||
assertEquals(3, libraries.size());
|
||||
assertEquals(project, ((JpsElementBase<?>)libraries.get(0)).getParent().getParent());
|
||||
|
||||
List<JpsDependencyElement> dependencies = util.getDependenciesList().getDependencies();
|
||||
assertEquals(4, dependencies.size());
|
||||
@@ -69,7 +71,10 @@ public class JpsProjectSerializationTest {
|
||||
assertEquals("1.5", reference.getSdkName());
|
||||
assertInstanceOf(dependencies.get(1), JpsModuleSourceDependency.class);
|
||||
assertInstanceOf(dependencies.get(2), JpsLibraryDependency.class);
|
||||
assertInstanceOf(dependencies.get(3), JpsLibraryDependency.class);
|
||||
JpsLibraryDependency moduleLibraryDependency = assertInstanceOf(dependencies.get(3), JpsLibraryDependency.class);
|
||||
JpsLibrary moduleLibrary = moduleLibraryDependency.getLibrary();
|
||||
assertEquals("log4j", moduleLibrary.getName());
|
||||
assertEquals(util, ((JpsElementBase<?>)moduleLibrary).getParent().getParent());
|
||||
|
||||
assertEquals(projectData.getUrl(""), assertOneElement(main.getContentRootsList().getUrls()));
|
||||
assertEquals(projectData.getUrl("src"), assertOneElement(main.getSourceRoots()).getUrl());
|
||||
|
||||
@@ -13,13 +13,15 @@ import org.jetbrains.jps.model.library.JpsLibraryCollection
|
||||
import org.jetbrains.jps.model.library.JpsLibraryType
|
||||
import org.jetbrains.jps.model.library.JpsTypedLibrary
|
||||
|
||||
internal class JpsLibraryCollectionBridge(entities: List<LibraryEntity>, sdkEntities: List<SdkEntity>?, parentElement: JpsElementBase<*>) : JpsLibraryCollection {
|
||||
internal class JpsLibraryCollectionBridge(entities: List<LibraryEntity>, sdkEntities: List<SdkEntity>?, parentElement: JpsElementBase<*>)
|
||||
: JpsElementBase<JpsLibraryCollectionBridge>(), JpsLibraryCollection {
|
||||
private val libraries: List<JpsLibraryBridgeBase<*>>
|
||||
|
||||
init {
|
||||
parent = parentElement
|
||||
val entitiesList = ArrayList<JpsLibraryBridgeBase<*>>()
|
||||
entities.mapTo(entitiesList) { entity -> JpsLibraryBridge(entity, parentElement) }
|
||||
sdkEntities?.mapTo(entitiesList) { entity -> JpsSdkLibraryBridge(entity, parentElement) }
|
||||
entities.mapTo(entitiesList) { entity -> JpsLibraryBridge(entity, this) }
|
||||
sdkEntities?.mapTo(entitiesList) { entity -> JpsSdkLibraryBridge(entity, this) }
|
||||
libraries = entitiesList
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user