Updating versions of project dependencies: jdkBuild->11_0_8b1098.1
[idea/community.git] / jps / model-serialization / src / org / jetbrains / jps / model / serialization / artifact / JpsArtifactSerializer.java
index 210dd9b7e0344b1bc48db407ec8fa85325a3f992..c4032e6ab5d1a38a9e7ba540dd6268f04d2a6d81 100644 (file)
@@ -2,16 +2,16 @@
 package org.jetbrains.jps.model.serialization.artifact;
 
 import com.intellij.openapi.util.JDOMUtil;
-import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
 import com.intellij.util.xmlb.XmlSerializer;
 import org.jdom.Element;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.jps.model.*;
-import org.jetbrains.jps.model.artifact.*;
+import org.jetbrains.jps.model.artifact.DirectoryArtifactType;
+import org.jetbrains.jps.model.artifact.JarArtifactType;
+import org.jetbrains.jps.model.artifact.JpsArtifact;
+import org.jetbrains.jps.model.artifact.JpsArtifactService;
 import org.jetbrains.jps.model.artifact.elements.*;
-import org.jetbrains.jps.model.library.JpsLibraryReference;
-import org.jetbrains.jps.model.module.JpsModuleReference;
 import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
 import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer;
 
@@ -34,7 +34,6 @@ public final class JpsArtifactSerializer {
   };
   private static final String ELEMENT_TAG = "element";
   private static final String ID_ATTRIBUTE = "id";
-  private static final SkipDefaultValuesSerializationFilters SERIALIZATION_FILTERS = new SkipDefaultValuesSerializationFilters();
 
 
   public static void loadArtifacts(@NotNull JpsProject project, @Nullable Element componentElement) {
@@ -63,36 +62,6 @@ public final class JpsArtifactSerializer {
     }
   }
 
-  public static void saveArtifact(@NotNull JpsArtifact artifact, Element componentElement) {
-    ArtifactState state = new ArtifactState();
-    state.setName(artifact.getName());
-    state.setBuildOnMake(artifact.isBuildOnMake());
-    state.setOutputPath(artifact.getOutputPath());
-    JpsArtifactPropertiesSerializer<?> serializer = getTypePropertiesSerializer(artifact.getArtifactType());
-    doSaveArtifact(artifact, componentElement, state, serializer);
-  }
-
-  private static <P extends JpsElement> void doSaveArtifact(JpsArtifact artifact, Element componentElement, ArtifactState state,
-                                                            JpsArtifactPropertiesSerializer<P> serializer) {
-    state.setArtifactType(serializer.getTypeId());
-    state.setRootElement(savePackagingElement(artifact.getRootElement()));
-    List<ArtifactPropertiesState> propertiesList = state.getPropertiesList();
-    //noinspection unchecked
-    serializer.saveProperties((P)artifact.getProperties(), propertiesList);
-    for (JpsModelSerializerExtension serializerExtension : JpsModelSerializerExtension.getExtensions()) {
-      for (JpsArtifactExtensionSerializer<?> extensionSerializer : serializerExtension.getArtifactExtensionSerializers()) {
-        JpsElement extension = artifact.getContainer().getChild(extensionSerializer.getRole());
-        if (extension != null) {
-          ArtifactPropertiesState propertiesState = new ArtifactPropertiesState();
-          propertiesState.setId(extensionSerializer.getId());
-          propertiesState.setOptions(saveExtension(extensionSerializer, extension));
-          propertiesList.add(propertiesState);
-        }
-      }
-    }
-    componentElement.addContent(XmlSerializer.serialize(state, SERIALIZATION_FILTERS));
-  }
-
   private static <E extends JpsElement> void loadExtension(JpsArtifactExtensionSerializer<E> serializer,
                                                            JpsArtifact artifact,
                                                            Element options) {
@@ -100,27 +69,6 @@ public final class JpsArtifactSerializer {
     artifact.getContainer().setChild(serializer.getRole(), e);
   }
 
-  private static <E extends JpsElement> Element saveExtension(JpsArtifactExtensionSerializer<?> serializer,
-                                                              E extension) {
-    Element optionsTag = new Element("options");
-    //noinspection unchecked
-    ((JpsArtifactExtensionSerializer<E>)serializer).saveExtension(extension, optionsTag);
-    return optionsTag;
-  }
-
-  private static <P extends JpsPackagingElement> Element savePackagingElement(P element) {
-    //noinspection unchecked
-    JpsPackagingElementSerializer<P> serializer = findElementSerializer((Class<P>)element.getClass());
-    Element tag = new Element(ELEMENT_TAG).setAttribute(ID_ATTRIBUTE, serializer.getTypeId());
-    serializer.save(element, tag);
-    if (element instanceof JpsCompositePackagingElement) {
-      for (JpsPackagingElement child : ((JpsCompositePackagingElement)element).getChildren()) {
-        tag.addContent(savePackagingElement(child));
-      }
-    }
-    return tag;
-  }
-
   @Nullable
   private static JpsPackagingElement loadPackagingElement(Element element) {
     JpsPackagingElement packagingElement = createPackagingElement(element);
@@ -138,6 +86,7 @@ public final class JpsArtifactSerializer {
   @Nullable
   private static JpsPackagingElement createPackagingElement(Element element) {
     String typeId = element.getAttributeValue(ID_ATTRIBUTE);
+    if (typeId == null) return null;
     JpsPackagingElementSerializer<?> serializer = findElementSerializer(typeId);
     if (serializer != null) {
       return serializer.load(element);
@@ -162,25 +111,6 @@ public final class JpsArtifactSerializer {
     return null;
   }
 
-  @NotNull
-  private static <E extends JpsPackagingElement> JpsPackagingElementSerializer<E> findElementSerializer(@NotNull Class<E> elementClass) {
-    for (JpsPackagingElementSerializer<?> serializer : STANDARD_SERIALIZERS) {
-      if (serializer.getElementClass().isAssignableFrom(elementClass)) {
-        //noinspection unchecked
-        return (JpsPackagingElementSerializer<E>)serializer;
-      }
-    }
-    for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
-      for (JpsPackagingElementSerializer<?> serializer : extension.getPackagingElementSerializers()) {
-        if (serializer.getElementClass().isAssignableFrom(elementClass)) {
-          //noinspection unchecked
-          return (JpsPackagingElementSerializer<E>)serializer;
-        }
-      }
-    }
-    throw new IllegalArgumentException("Serializer not found for " + elementClass);
-  }
-
   @Nullable
   private static JpsArtifactExtensionSerializer<?> getExtensionSerializer(String id) {
     for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
@@ -209,22 +139,6 @@ public final class JpsArtifactSerializer {
     return STANDARD_TYPE_SERIALIZERS[0];
   }
 
-  private static JpsArtifactPropertiesSerializer<?> getTypePropertiesSerializer(JpsArtifactType type) {
-    for (JpsArtifactPropertiesSerializer serializer : STANDARD_TYPE_SERIALIZERS) {
-      if (serializer.getType().equals(type)) {
-        return serializer;
-      }
-    }
-    for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
-      for (JpsArtifactPropertiesSerializer serializer : extension.getArtifactTypePropertiesSerializers()) {
-        if (serializer.getType().equals(type)) {
-          return serializer;
-        }
-      }
-    }
-    return null;
-  }
-
   private static class ArtifactRootElementSerializer extends JpsPackagingElementSerializer<JpsArtifactRootElement> {
     ArtifactRootElementSerializer() {
       super("root", JpsArtifactRootElement.class);
@@ -234,10 +148,6 @@ public final class JpsArtifactSerializer {
     public JpsArtifactRootElement load(Element element) {
       return JpsPackagingElementFactory.getInstance().createArtifactRoot();
     }
-
-    @Override
-    public void save(JpsArtifactRootElement element, Element tag) {
-    }
   }
 
   private static class DirectoryElementSerializer extends JpsPackagingElementSerializer<JpsDirectoryPackagingElement> {
@@ -249,11 +159,6 @@ public final class JpsArtifactSerializer {
     public JpsDirectoryPackagingElement load(Element element) {
       return JpsPackagingElementFactory.getInstance().createDirectory(element.getAttributeValue("name"));
     }
-
-    @Override
-    public void save(JpsDirectoryPackagingElement element, Element tag) {
-      tag.setAttribute("name", element.getDirectoryName());
-    }
   }
 
   private static class ArchiveElementSerializer extends JpsPackagingElementSerializer<JpsArchivePackagingElement> {
@@ -265,11 +170,6 @@ public final class JpsArtifactSerializer {
     public JpsArchivePackagingElement load(Element element) {
       return JpsPackagingElementFactory.getInstance().createArchive(element.getAttributeValue("name"));
     }
-
-    @Override
-    public void save(JpsArchivePackagingElement element, Element tag) {
-      tag.setAttribute("name", element.getArchiveName());
-    }
   }
 
   private static class FileCopyElementSerializer extends JpsPackagingElementSerializer<JpsFileCopyPackagingElement> {
@@ -282,15 +182,6 @@ public final class JpsArtifactSerializer {
       return JpsPackagingElementFactory.getInstance().createFileCopy(element.getAttributeValue("path"),
                                                                      element.getAttributeValue("output-file-name"));
     }
-
-    @Override
-    public void save(JpsFileCopyPackagingElement element, Element tag) {
-      tag.setAttribute("path", element.getFilePath());
-      String outputFileName = element.getRenamedOutputFileName();
-      if (outputFileName != null) {
-        tag.setAttribute("output-path-name", outputFileName);
-      }
-    }
   }
 
   private static class DirectoryCopyElementSerializer extends JpsPackagingElementSerializer<JpsDirectoryCopyPackagingElement> {
@@ -302,11 +193,6 @@ public final class JpsArtifactSerializer {
     public JpsDirectoryCopyPackagingElement load(Element element) {
       return JpsPackagingElementFactory.getInstance().createDirectoryCopy(element.getAttributeValue("path"));
     }
-
-    @Override
-    public void save(JpsDirectoryCopyPackagingElement element, Element tag) {
-      tag.setAttribute("path", element.getDirectoryPath());
-    }
   }
 
   private static class ExtractedDirectoryElementSerializer
@@ -320,12 +206,6 @@ public final class JpsArtifactSerializer {
       return JpsPackagingElementFactory.getInstance().createExtractedDirectory(element.getAttributeValue("path"),
                                                                                element.getAttributeValue("path-in-jar"));
     }
-
-    @Override
-    public void save(JpsExtractedDirectoryPackagingElement element, Element tag) {
-      tag.setAttribute("path", element.getFilePath());
-      tag.setAttribute("path-in-jar", element.getPathInJar());
-    }
   }
 
   private static class LibraryFilesElementSerializer extends JpsPackagingElementSerializer<JpsLibraryFilesPackagingElement> {
@@ -348,17 +228,6 @@ public final class JpsArtifactSerializer {
       return JpsPackagingElementFactory.getInstance()
         .createLibraryElement(JpsElementFactory.getInstance().createLibraryReference(libraryName, parentReference));
     }
-
-    @Override
-    public void save(JpsLibraryFilesPackagingElement element, Element tag) {
-      JpsLibraryReference reference = element.getLibraryReference();
-      JpsElementReference<? extends JpsCompositeElement> parentReference = reference.getParentReference();
-      tag.setAttribute("level", JpsLibraryTableSerializer.getLevelId(parentReference));
-      tag.setAttribute("name", reference.getLibraryName());
-      if (parentReference instanceof JpsModuleReference) {
-        tag.setAttribute("module-name", ((JpsModuleReference)parentReference).getModuleName());
-      }
-    }
   }
 
   private static class ArtifactOutputElementSerializer extends JpsPackagingElementSerializer<JpsArtifactOutputPackagingElement> {
@@ -371,10 +240,5 @@ public final class JpsArtifactSerializer {
       return JpsPackagingElementFactory.getInstance()
         .createArtifactOutput(JpsArtifactService.getInstance().createReference(element.getAttributeValue("artifact-name")));
     }
-
-    @Override
-    public void save(JpsArtifactOutputPackagingElement element, Element tag) {
-      tag.setAttribute("artifact-name", element.getArtifactReference().getArtifactName());
-    }
   }
 }