package org.elixir_lang.jps.model; import org.elixir_lang.jps.mix.JpsMixSettingsSerializer; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsDummyElement; import org.jetbrains.jps.model.JpsElementFactory; import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension; import org.jetbrains.jps.model.serialization.JpsProjectExtensionSerializer; import org.jetbrains.jps.model.serialization.library.JpsSdkPropertiesSerializer; import org.jetbrains.jps.model.serialization.module.JpsModulePropertiesSerializer; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * Created by zyuyou on 2015/5/27. * https://github.com/ignatov/intellij-erlang/blob/master/jps-shared/src/org/intellij/erlang/jps/model/JpsErlangModelSerializerExtension.java */ public class JpsElixirModelSerializerExtension extends JpsModelSerializerExtension{ public static final String ELIXIR_SDK_TYPE_ID = "Elixir SDK"; @NotNull @Override public List<? extends JpsModulePropertiesSerializer<?>> getModulePropertiesSerializers() { return Collections.singletonList(new JpsModulePropertiesSerializer<JpsDummyElement>(JpsElixirModuleType.INSTANCE, "ELIXIR_MODULE", null) { @Override public JpsDummyElement loadProperties(@Nullable Element componentElement) { return JpsElementFactory.getInstance().createDummyElement(); } @Override public void saveProperties(@NotNull JpsDummyElement properties, @NotNull Element componentElement) { } }); } @NotNull @Override public List<? extends JpsSdkPropertiesSerializer<?>> getSdkPropertiesSerializers() { return Collections.singletonList(new JpsSdkPropertiesSerializer<JpsDummyElement>(ELIXIR_SDK_TYPE_ID, JpsElixirSdkType.INSTANCE) { @NotNull @Override public JpsDummyElement loadProperties(@Nullable Element propertiesElement) { return JpsElementFactory.getInstance().createDummyElement(); } @Override public void saveProperties(@NotNull JpsDummyElement properties, @NotNull Element element) { } }); } @NotNull @Override public List<? extends JpsProjectExtensionSerializer> getProjectExtensionSerializers() { return Arrays.asList(new JpsMixSettingsSerializer(), new JpsElixirCompilerOptionsSerializer()); } }