| package org.jetbrains.jps.android.model.impl; |
| |
| import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; |
| import com.intellij.util.xmlb.XmlSerializer; |
| import org.jdom.Element; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.jps.android.model.JpsAndroidDexCompilerConfiguration; |
| import org.jetbrains.jps.android.model.JpsAndroidExtensionService; |
| import org.jetbrains.jps.model.JpsProject; |
| import org.jetbrains.jps.model.serialization.JpsProjectExtensionSerializer; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class JpsAndroidDexSettingsSerializer extends JpsProjectExtensionSerializer { |
| |
| private static final SkipDefaultValuesSerializationFilters FILTERS = new SkipDefaultValuesSerializationFilters(); |
| |
| public JpsAndroidDexSettingsSerializer() { |
| super("androidDexCompiler.xml", "AndroidDexCompilerConfiguration"); |
| } |
| |
| @Override |
| public void loadExtension(@NotNull JpsProject element, @NotNull Element componentTag) { |
| JpsAndroidDexCompilerConfigurationImpl.MyState state = XmlSerializer.deserialize( |
| componentTag, JpsAndroidDexCompilerConfigurationImpl.MyState.class); |
| |
| if (state == null) { |
| state = new JpsAndroidDexCompilerConfigurationImpl.MyState(); |
| } |
| JpsAndroidExtensionService.getInstance().setDexCompilerConfiguration(element, new JpsAndroidDexCompilerConfigurationImpl(state)); |
| } |
| |
| @Override |
| public void saveExtension(@NotNull JpsProject element, @NotNull Element componentTag) { |
| final JpsAndroidDexCompilerConfiguration configuration = |
| JpsAndroidExtensionService.getInstance().getDexCompilerConfiguration(element); |
| |
| if (configuration != null) { |
| XmlSerializer.serializeInto(((JpsAndroidDexCompilerConfigurationImpl)configuration).getState(), |
| componentTag, FILTERS); |
| } |
| } |
| } |