It is possible to use component-plugin elements
in order to dynamically change a PortalContainerDefinition. In the
example below, we add the dependency foo to the default
portal container and to the portal containers called
foo1 and foo2:
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
<!-- The name of the plugin -->
<name>Change PortalContainer Definitions</name>
<!-- The name of the method to call on the PortalContainerConfig in order to register the changes on the PortalContainerDefinitions -->
<set-method>registerChangePlugin</set-method>
<!-- The full qualified name of the PortalContainerDefinitionChangePlugin -->
<type>org.exoplatform.container.definition.PortalContainerDefinitionChangePlugin</type>
<init-params>
<value-param>
<name>apply.default</name>
<value>true</value>
</value-param>
<values-param>
<name>apply.specific</name>
<value>foo1</value>
<value>foo2</value>
</values-param>
<object-param>
<name>change</name>
<object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies">
<!-- The list of name of the dependencies to add -->
<field name="dependencies">
<collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
</collection>
</field>
</object>
</object-param>
</init-params>
</component-plugin>
</external-component-plugins>
| apply.all (*) | Indicates whether the changes have to be applied to all
the portal containers or not. The default value of this field
is false. This field is a
ValueParam and is not mandatory. |
| apply.default (*) | Indicates whether the changes have to be applied to the
default portal container or not. The default value of this
field is false. This field is a
ValueParam and is not mandatory. |
| apply.specific (*) | A set of specific portal container names to which we
want to apply the changes. This field is a
ValuesParam and is not mandatory. |
Rest of the expected parameters | The rest of the expected paramaters are
ObjectParam of type
PortalContainerDefinitionChange. Those
parameters are in fact the list of changes that we want to
apply to one or several portal containers. If the list of
changes is empty, the component plugin will be ignored. The
supported implementations of PortalContainerDefinitionChange
are described later in this section. |
All the value of the parameters marked with a (*) can be defined thanks to System properties like any values in configuration files but also thanks to variables loaded by the PropertyConfigurator. For example in GateIn by default, it would be all the variables defined in the file configuration.properties.
To identify the portal containers to which the changes have to be applied, we use the follwing algorithm:
The parameter apply.all has been set to
true. The corresponding changes will be applied to
all the portal containers. The other parameters will be
ignored.
The parameter apply.default has been set to
true and the parameter
apply.specific is null. The
corresponding changes will be applied to the default portal
container only.
The parameter apply.default has been set to
true and the parameter
apply.specific is not null. The
corresponding changes will be applied to the default portal
container and the given list of specific portal containers.
The parameter apply.default has been set to
false or has not been set and the parameter
apply.specific is null. The
corresponding changes will be applied to the default portal
container only.
The parameter apply.default has been set to
false or has not been set and the parameter
apply.specific is not null. The
corresponding changes will be applied to the given list of
specific portal containers.