diff --git a/jps/model-api/src/org/jetbrains/jps/model/module/JpsFacet.java b/jps/model-api/src/org/jetbrains/jps/model/module/JpsFacet.java index 648757fddbc9..d27c56e3fd0c 100644 --- a/jps/model-api/src/org/jetbrains/jps/model/module/JpsFacet.java +++ b/jps/model-api/src/org/jetbrains/jps/model/module/JpsFacet.java @@ -2,6 +2,7 @@ package org.jetbrains.jps.model.module; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.JpsElementProperties; import org.jetbrains.jps.model.JpsNamedElement; import org.jetbrains.jps.model.JpsReferenceableElement; @@ -17,6 +18,9 @@ public interface JpsFacet extends JpsNamedElement, JpsReferenceableElement getType(); + @Nullable +

P getProperties(@NotNull JpsFacetType

type); + void delete(); @NotNull diff --git a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsFacetImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsFacetImpl.java index 8ac665325783..ddfd9963154e 100644 --- a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsFacetImpl.java +++ b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsFacetImpl.java @@ -43,6 +43,11 @@ public class JpsFacetImpl extends JpsNamedCompositeElementBase imp return myContainer.getChild(TYPED_DATA_KIND).getType(); } + @Override + public

P getProperties(@NotNull JpsFacetType

type) { + return myContainer.getChild(TYPED_DATA_KIND).getProperties(type); + } + @Override public void setParentFacet(@NotNull JpsFacet facet) { myContainer.setChild(PARENT_FACET_REFERENCE, facet.createReference()); diff --git a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsGlobalSerializationTest.java b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsGlobalSerializationTest.java index d37003265948..aa96a655b161 100644 --- a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsGlobalSerializationTest.java +++ b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsGlobalSerializationTest.java @@ -10,7 +10,7 @@ import java.util.List; */ public class JpsGlobalSerializationTest extends JpsSerializationTestCase { public void testLoadSdks() throws IOException { - JpsGlobalLoader.loadGlobalSettings(myModel.getGlobal(), getTestDataPath("config/options")); + JpsGlobalLoader.loadGlobalSettings(myModel.getGlobal(), getTestDataFileAbsolutePath("jps/model-serialization/testData/config/options")); final List libraries = myModel.getGlobal().getLibraryCollection().getLibraries(); assertEquals(3, libraries.size()); assertEquals("Gant", libraries.get(0).getName()); diff --git a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsModuleSerializationTest.java b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsModuleSerializationTest.java index 06f9ec2bead8..3405abb4b311 100644 --- a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsModuleSerializationTest.java +++ b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsModuleSerializationTest.java @@ -1,11 +1,11 @@ package org.jetbrains.jps.model.serialization; +import com.intellij.openapi.application.PathManager; +import org.jetbrains.jps.model.JpsProject; import org.jetbrains.jps.model.java.JpsJavaSdkType; import org.jetbrains.jps.model.library.JpsLibrary; import org.jetbrains.jps.model.module.*; -import java.io.IOException; -import java.util.Collections; import java.util.List; /** @@ -13,7 +13,7 @@ import java.util.List; */ public class JpsModuleSerializationTest extends JpsSerializationTestCase { public void test() { - loadProject("iprProject/iprProject.ipr"); + loadProject("/jps/model-serialization/testData/iprProject/iprProject.ipr"); final JpsModule module = assertOneElement(myModel.getProject().getModules()); assertEquals("iprProject", module.getName()); @@ -28,14 +28,12 @@ public class JpsModuleSerializationTest extends JpsSerializationTestCase { assertInstanceOf(dependencies.get(2), JpsLibraryDependency.class); assertInstanceOf(dependencies.get(3), JpsLibraryDependency.class); } - - private void loadProject(final String path) { - try { - final String projectPath = getTestDataPath(path); - JpsProjectLoader.loadProject(myModel.getProject(), Collections.emptyMap(), projectPath); - } - catch (IOException e) { - throw new RuntimeException(e); - } + + public void _testLoadIdeaProject() { + long start = System.currentTimeMillis(); + final JpsProject project = myModel.getProject(); + loadProject(PathManager.getHomePath()); + assertTrue(project.getModules().size() > 0); + System.out.println("Time: " + (System.currentTimeMillis() - start)); } } diff --git a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsSerializationTestCase.java b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsSerializationTestCase.java index 82a496ba39f9..59335b6a4ce4 100644 --- a/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsSerializationTestCase.java +++ b/jps/model-serialization/testSrc/org/jetbrains/jps/model/serialization/JpsSerializationTestCase.java @@ -2,20 +2,48 @@ package org.jetbrains.jps.model.serialization; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.util.io.FileUtilRt; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.util.PathUtil; import org.jetbrains.jps.model.JpsModelTestCase; import java.io.File; +import java.io.IOException; +import java.util.Collections; /** * @author nik */ public abstract class JpsSerializationTestCase extends JpsModelTestCase { - protected static String getTestDataPath(String relativePath) { - File baseDir = new File(PathManager.getHomePath()); - final File communityDir = new File(baseDir, "community"); - if (communityDir.exists()) { - baseDir = communityDir; + private String myProjectHomePath; + + protected void loadProject(final String relativePath) { + final String path = getTestDataFileAbsolutePath(relativePath); + + myProjectHomePath = FileUtilRt.toSystemIndependentName(path); + if (myProjectHomePath.endsWith(".ipr")) { + myProjectHomePath = PathUtil.getParentPath(myProjectHomePath); } - return FileUtilRt.toSystemIndependentName(baseDir.getAbsolutePath()) + "/jps/model-serialization/testData/" + relativePath; + try { + JpsProjectLoader.loadProject(myModel.getProject(), Collections.emptyMap(), path); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + protected String getUrl(String relativePath) { + return VfsUtilCore.pathToUrl(myProjectHomePath + "/" + relativePath); + } + + protected static String getTestDataFileAbsolutePath(String relativePath) { + File baseDir = new File(PathManager.getHomePath()); + File file = new File(baseDir, FileUtilRt.toSystemDependentName(relativePath)); + if (!file.exists()) { + final File communityDir = new File(baseDir, "community"); + if (communityDir.exists()) { + file = new File(communityDir, FileUtilRt.toSystemDependentName(relativePath)); + } + } + return FileUtilRt.toSystemDependentName(file.getAbsolutePath()); } }