// Copyright 2016 Pants project contributors (see CONTRIBUTORS.md). // Licensed under the Apache License, Version 2.0 (see LICENSE). package com.twitter.intellij.pants.jps.incremental.serialization; import com.intellij.openapi.util.JDOMExternalizerUtil; import com.twitter.intellij.pants.PantsException; import com.twitter.intellij.pants.util.PantsConstants; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.model.JpsProject; import org.jetbrains.jps.model.serialization.JpsProjectExtensionSerializer; public class PantsJpsProjectExtensionSerializer extends JpsProjectExtensionSerializer { private static final String LINKED_PROJECT_SETTINGS = "linkedExternalProjectsSettings"; private static final String PROJECT_SETTINGS = "PantsProjectSettings"; public PantsJpsProjectExtensionSerializer() { super("pants.xml", "PantsSettings"); } @Override public void loadExtension(@NotNull JpsProject project, @NotNull Element componentTag) { final Element linkedSettings = JDOMExternalizerUtil.getOption(componentTag, LINKED_PROJECT_SETTINGS); final Element projectSettings = linkedSettings != null ? linkedSettings.getChild(PROJECT_SETTINGS) : null; if (projectSettings != null) { throw new PantsException(PantsConstants.EXTERNAL_BUILDER_ERROR); } } @Override public void saveExtension(@NotNull JpsProject project, @NotNull Element componentTag) { // do nothing } }