diff --git a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/CompositeProjectRoot.java b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/CompositeProjectRoot.java index 73dc7e9c0c5e..082da1b0ed04 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/CompositeProjectRoot.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/CompositeProjectRoot.java @@ -22,6 +22,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import org.jdom.Element; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -32,6 +33,10 @@ import java.util.List; * @author mike */ class CompositeProjectRoot implements ProjectRoot { + @NonNls private static final String SIMPLE_ROOT = "simple"; + @NonNls private static final String COMPOSITE_ROOT = "composite"; + @NonNls private static final String ATTRIBUTE_TYPE = "type"; + @NonNls private static final String ELEMENT_ROOT = "root"; private final List myRoots = new ArrayList<>(); @NotNull @@ -104,13 +109,13 @@ class CompositeProjectRoot implements ProjectRoot { public void readExternal(Element element) { for (Element child : element.getChildren()) { - myRoots.add(ProjectRootUtil.read(child)); + myRoots.add(read(child)); } } public void writeExternal(Element element) { for (ProjectRoot root : myRoots) { - Element e = ProjectRootUtil.write(root); + Element e = write(root); element.addContent(e); } } @@ -121,4 +126,37 @@ class CompositeProjectRoot implements ProjectRoot { root.update(); } } + + @NotNull + static ProjectRoot read(Element element) { + final String type = element.getAttributeValue(ATTRIBUTE_TYPE); + + if (type.equals(SIMPLE_ROOT)) { + return new SimpleProjectRoot(element); + } + if (type.equals(COMPOSITE_ROOT)) { + CompositeProjectRoot root = new CompositeProjectRoot(); + root.readExternal(element); + return root; + } + throw new IllegalArgumentException("Wrong type: " + type); + } + + @NotNull + static Element write(ProjectRoot projectRoot) { + Element element = new Element(ELEMENT_ROOT); + if (projectRoot instanceof SimpleProjectRoot) { + element.setAttribute(ATTRIBUTE_TYPE, SIMPLE_ROOT); + ((SimpleProjectRoot)projectRoot).writeExternal(element); + } + else if (projectRoot instanceof CompositeProjectRoot) { + element.setAttribute(ATTRIBUTE_TYPE, COMPOSITE_ROOT); + ((CompositeProjectRoot)projectRoot).writeExternal(element); + } + else { + throw new IllegalArgumentException("Wrong root: " + projectRoot); + } + + return element; + } } diff --git a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java index e47d871c7a1c..30c7c47cf003 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.java @@ -254,7 +254,7 @@ public class ProjectRootContainerImpl implements JDOMExternalizable, ProjectRoot if (children.size() != 1) { LOG.error(children); } - CompositeProjectRoot root = (CompositeProjectRoot)ProjectRootUtil.read(children.get(0)); + CompositeProjectRoot root = (CompositeProjectRoot)CompositeProjectRoot.read(children.get(0)); myRoots.put(type, root); } @@ -263,7 +263,7 @@ public class ProjectRootContainerImpl implements JDOMExternalizable, ProjectRoot if (sdkRootName != null) { Element e = new Element(sdkRootName); roots.addContent(e); - final Element root = ProjectRootUtil.write(myRoots.get(type)); + final Element root = CompositeProjectRoot.write(myRoots.get(type)); e.addContent(root); } } diff --git a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootUtil.java b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootUtil.java index 0914fbca2e82..da9ad1bc619c 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootUtil.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectRootUtil.java @@ -18,7 +18,6 @@ package com.intellij.openapi.projectRoots.impl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.ex.ProjectRoot; import com.intellij.openapi.roots.OrderEnumerator; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; @@ -26,8 +25,6 @@ import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiManager; import com.intellij.psi.impl.PsiManagerImpl; import com.intellij.psi.impl.file.impl.FileManager; -import org.jdom.Element; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -39,67 +36,9 @@ import java.util.List; public class ProjectRootUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.projectRoots.impl.ProjectRootUtil"); - @NonNls private static final String SIMPLE_ROOT = "simple"; - @NonNls private static final String COMPOSITE_ROOT = "composite"; - /** - * @deprecated - */ - @NonNls public static final String JDK_ROOT = "jdk"; - /** - * @deprecated - */ - @NonNls public static final String OUTPUT_ROOT = "output"; - /** - * @deprecated - */ - @NonNls public static final String EXCLUDED_OUTPUT = "excludedOutput"; - /** - * @deprecated - */ - @NonNls public static final String LIBRARY_ROOT = "library"; - /** - * @deprecated - */ - @NonNls public static final String EJB_ROOT = "ejb"; - @NonNls private static final String ATTRIBUTE_TYPE = "type"; - @NonNls private static final String ELEMENT_ROOT = "root"; - private ProjectRootUtil() { } - @NotNull - static ProjectRoot read(Element element) { - final String type = element.getAttributeValue(ATTRIBUTE_TYPE); - - if (type.equals(SIMPLE_ROOT)) { - return new SimpleProjectRoot(element); - } - if (type.equals(COMPOSITE_ROOT)) { - CompositeProjectRoot root = new CompositeProjectRoot(); - root.readExternal(element); - return root; - } - throw new IllegalArgumentException("Wrong type: " + type); - } - - @NotNull - static Element write(ProjectRoot projectRoot) { - Element element = new Element(ELEMENT_ROOT); - if (projectRoot instanceof SimpleProjectRoot) { - element.setAttribute(ATTRIBUTE_TYPE, SIMPLE_ROOT); - ((SimpleProjectRoot)projectRoot).writeExternal(element); - } - else if (projectRoot instanceof CompositeProjectRoot) { - element.setAttribute(ATTRIBUTE_TYPE, COMPOSITE_ROOT); - ((CompositeProjectRoot)projectRoot).writeExternal(element); - } - else { - throw new IllegalArgumentException("Wrong root: " + projectRoot); - } - - return element; - } - @NotNull private static PsiDirectory[] convertRoots(final Project project, VirtualFile[] roots) { return convertRoots(((PsiManagerImpl)PsiManager.getInstance(project)).getFileManager(), roots);