blob: 385d0937e9fff14724dddf112f5fea1680dc2436 [file] [log] [blame]
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) {
}
}