1   package com.atlassian.plugin.osgi.factory.transform.stage;
2   
3   import com.atlassian.plugin.osgi.factory.transform.PluginTransformationException;
4   import com.atlassian.plugin.osgi.factory.transform.TransformContext;
5   import com.atlassian.plugin.osgi.factory.transform.TransformStage;
6   import org.dom4j.Element;
7   
8   import java.util.List;
9   
10  /**
11   * Adds bundle instruction overrides from the plugin descriptor to be later used in the manifest generation process.
12   *
13   * @since 2.2.0
14   */
15  public class AddBundleOverridesStage implements TransformStage
16  {
17      public void execute(TransformContext context) throws PluginTransformationException
18      {
19          Element pluginInfo = context.getDescriptorDocument().getRootElement().element("plugin-info");
20          if (pluginInfo != null)
21          {
22              Element instructionRoot = pluginInfo.element("bundle-instructions");
23              if (instructionRoot != null)
24              {
25                  List<Element> instructionsElement = instructionRoot.elements();
26                  for (Element instructionElement : instructionsElement)
27                  {
28                      String name = instructionElement.getName();
29                      String value = instructionElement.getTextTrim();
30                      context.getBndInstructions().put(name, value);
31                  }
32              }
33          }
34      }
35  }