User Interface plugin modules
Build Lifecycle plugin modules
Notification plugin modules
System plugin modules

Component module

Available:

Bamboo 2.6 and later
Note: only 'Version 1' plugins can use this module. When using 'Version 2' plugins, the component declarations will be processed by the plugin framework and added to the plugin's container.

Purpose of this Module Type

Component plugin modules enable you to add components to Bamboo's internal component system (powered by Spring).

Component Plugin Module

Each component module adds a single object to Bamboo's component management system.

Other plugins and objects within Bamboo can then be autowired with your component. This is very useful for having a single component that is automatically passed to all of your other plugin modules (i.e. a Manager object).

Here is an example atlassian-plugin.xml file containing a single component module:

1
2
<atlassian-plugin name="Sample Component" key="bamboo.extra.component">
    ...
    <component name="Keyed Test Component" 
        key="testComponent" 
        alias="bogusComponent"
        class="com.atlassian.bamboo.plugin.descriptor.BogusComponent" />
    ...
</atlassian-plugin>
  • the name attribute represents how this component will be referred to in the user interface.
  • the key attribute represents the internal, system name for your component.
  • the class attribute represents the class of the component to be created
  • the alias attribute represents the alias this component will be stored with. This element is optional, if not specified the module key will be used instead.

Accessing Your Components

Accessing your components is extremely simple.

Autowired Objects

If your object is being autowired (for example another plugin module or an XWork action), the easiest way to access a component is to add a basic Java setter method.

For example, if you use the above BogusComponent module your object would retrieve the component as follows:

1
2
public void setBogusComponent(BogusComponent bogusComponent)
{
    this.bogusComponent = bogusComponent;
}

Non-autowired Objects

If your object is not being autowired, you may need to retrieve the component explicitly. This is done via the ContainerManager like so:

1
2
BogusComponent bc = (BogusComponent) ContainerManager.getComponent("bogusComponent");

Notes

Some issues to be aware of when developing a component:

  • One component module can depend on another component module but be careful of circular references (ie A requires B, B requires A).
  • The component "namespace" is flat at the moment, so choose a sensible alias for your component.
  • The installation of your plugin will fail if its component with a given name (derived from the 'key' or 'alias' attribute as specified above), already exists in Bamboo's component container (because it is a core Bamboo component or was added by another plugin).

Rate this page: