| package org.jetbrains.jps.intellilang.model.impl; |
| |
| import com.intellij.openapi.diagnostic.Logger; |
| import com.intellij.openapi.util.JDOMExternalizerUtil; |
| import org.jdom.Element; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.jps.intellilang.instrumentation.InstrumentationType; |
| import org.jetbrains.jps.intellilang.model.JpsIntelliLangExtensionService; |
| import org.jetbrains.jps.model.JpsGlobal; |
| import org.jetbrains.jps.model.serialization.JpsGlobalExtensionSerializer; |
| |
| /** |
| * @author Eugene Zhuravlev |
| * Date: 11/29/12 |
| */ |
| public class JpsIntelliLangConfigurationSerializer extends JpsGlobalExtensionSerializer { |
| private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.intellilang.model.impl.JpsIntelliLangConfigurationSerializer"); |
| private static final String INSTRUMENTATION_TYPE_NAME = "INSTRUMENTATION"; |
| private static final String PATTERN_ANNOTATION_NAME = "PATTERN_ANNOTATION"; |
| |
| public JpsIntelliLangConfigurationSerializer() { |
| super("IntelliLang.xml", "LanguageInjectionConfiguration"); |
| } |
| |
| @Override |
| public void loadExtension(@NotNull JpsGlobal global, @NotNull Element componentTag) { |
| final JpsIntelliLangConfigurationImpl configuration = new JpsIntelliLangConfigurationImpl(); |
| |
| final String annotationName = JDOMExternalizerUtil.readField(componentTag, PATTERN_ANNOTATION_NAME); |
| if (annotationName != null) { |
| configuration.setPatternAnnotationClassName(annotationName); |
| } |
| |
| final String instrumentationType = JDOMExternalizerUtil.readField(componentTag, INSTRUMENTATION_TYPE_NAME); |
| if (instrumentationType != null) { |
| try { |
| final InstrumentationType type = InstrumentationType.valueOf(instrumentationType); |
| configuration.setInstrumentationType(type); |
| } |
| catch (IllegalArgumentException ignored) { |
| LOG.info(ignored); |
| } |
| } |
| |
| JpsIntelliLangExtensionService.getInstance().setConfiguration(global, configuration); |
| } |
| |
| @Override |
| public void loadExtensionWithDefaultSettings(@NotNull JpsGlobal global) { |
| JpsIntelliLangExtensionService.getInstance().setConfiguration(global, new JpsIntelliLangConfigurationImpl()); |
| } |
| |
| @Override |
| public void saveExtension(@NotNull JpsGlobal global, @NotNull Element componentTag) { |
| } |
| } |