{docbook}
<highlights>
        <itemizedlist>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.ActivityResourceBundlePlugin">ActivityResourceBundlePlugin</link>
            </para>
            <para>
            This plugin is used to register the external resource bundle for the internationalized activity type.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.IdentityProviderPluginIdentityManager">IdentityProviderPlugin</link>
            </para>
            <para>This plugin provides the identity for a space.</para>
          </listitem>
		      <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.MentionsProcessor">MentionsProcessor</link>
            </para>
            <para>This plugin allows creating a link to a user profile when the user is mentioned in the activity content.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.OSHtmlSanitizerProcessor">OSHtmlSanitizerProcessor</link>
            </para>
            <para>This plugin renders valid HTML tags appearing in the Activity body (content).
          </para>
           </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.SpaceService.ExternalPluginConfiguration.PortletPreferenceRequiredPlugin">PortletPreferenceRequiredPlugin</link>
            </para>
            <para>This plugin is used to configure the list of portlet names which will have portlet preference of space context.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.SpaceApplicationConfigPlugin">SpaceApplicationConfigPlugin</link>
            </para>
            <para>This plugin is used to configure the default applications when creating a new space.
            </para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.SocialChromatticLifeCycle">SocialChromatticLifeCycle</link>
            </para>
            <para>This plugin is used to manage <emphasis>ChromatticSession</emphasis> in the Social project.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.TemplateParamsProcessor">TemplateParamsProcessor</link>
            </para>
            <para>
            This plugin uses the value in the <emphasis>template</emphasis> parameter of the activity and replaces the title and body of the activity with
            the <emphasis>template</emphasis> parameter of this activity.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.XMLTagFilterPolicy">URLConverterFilterPlugin</link>
            </para>
            <para>This plugin converts all the URLs in the activity into the hyperlinks.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="SOCref.Configuration.External_component_plugins.RestPortalContainerNameConfig">RestPortalContainerNameConfig</link>
            </para>
            <para>This plugin is used to set the portal container name used for REST service.</para>
          </listitem>
        </itemizedlist>
</highlights>
{docbook}

{note}
This section only describes the main component plugins used in Social. Each part supplies an sample configuration with the explanation about init-params so you can know how to use these plugins.
{note}

{docbook}
<para>
<prompt>
    <emphasis role="bold">See also</emphasis>
</prompt>
</para>
{docbook}

* [Component|#SOCref.Configuration.Component]

h1. ActivityResourceBundlePlugin  {anchor:id=SOCref.Configuration.External_component_plugins.ActivityResourceBundlePluginRoleNotInToc}
This plugin is used to register the external resource bundle for the internationalized activity type.

*Sample configuration*:
{code:xml}<component-plugin>
  <name>exosocial:spaces</name> <!-- activity type -->
  <set-method>addActivityResourceBundlePlugin</set-method>
  <type>org.exoplatform.social.core.processor.ActivityResourceBundlePlugin</type>
  <init-params>
    <object-param>
      <name>locale.social.Core</name> <!-- resource bundle key file -->
      <description>activity key type resource bundle mapping for exosocial:spaces</description>
      <object type="org.exoplatform.social.core.processor.ActivityResourceBundlePlugin">
        <field name="activityKeyTypeMapping">
          <map type="java.util.HashMap">
            <entry>
              <key><string>space_created</string></key>
              <value><string>SpaceActivityPublisher.space_created</string></value>
            </entry>
            <entry>
              <key><string>manager_role_granted</string></key>
              <value><string>SpaceActivityPublisher.manager_role_granted</string></value>
            </entry>
            <entry>
              <key><string>user_joined</string></key>
              <value><string>SpaceActivityPublisher.user_joined</string></value>
            </entry>
            <entry>
              <key><string>member_left</string></key>
              <value><string>SpaceActivityPublisher.member_left</string></value>
            </entry>
          </map>
        </field>
      </object>
    </object-param>
  </init-params>
</component-plugin>{code}

In which:

* *Name*: _exosocial\:spaces_

* *Set-method*: _addActivityResourceBundlePlugin_

* *Type*: _org.exoplatform.social.core.processor.ActivityResourceBundlePlugin_

* *Init-params*:
|| Object-param || Description ||
| *locale.social.Core* |The resource bundle key file.|

h1. IdentityProviderPlugin {anchor:id=SOCref.Configuration.IdentityProviderPluginIdentityManagerRoleNotInToc}
The plugin provides the identity for a space.

*Sample configuration*:
{code:xml}<component-plugins>
  <component-plugin>
    <name>SpaceIdentityProvider plugin</name>
    <set-method>registerIdentityProviders</set-method>
    <type>org.exoplatform.social.core.identity.IdentityProviderPlugin</type>
    <init-params>
      <values-param>
        <name>providers</name>
        <description>Identity Providers</description>
        <value>org.exoplatform.social.core.identity.provider.SpaceIdentityProvider</value>
      </values-param>
    </init-params>
  </component-plugin>
</component-plugins>{code}

In which:

* *Name*: _SpaceIdentityProvider plugin_

* *Set-method*: _registerIdentityProviders_

* *Type*: _org.exoplatform.social.core.identity.IdentityProviderPlugin_

* *Init-params*:
|| Name || Possible value || Default value || Description ||
| *providers* | {{Every other identity providers}} | {{org.exoplatform.social.core.identity.provider.SpaceIdentityProvider}} | Identity Provider instances for managing identities. |

h1. MentionsProcessor {anchor:id=SOCref.Configuration.External_component_plugins.MentionsProcessorRoleNotInToc}
This plugin allows creating a link to a user profile when the user is mentioned in the activity content.

To use the plugin in the component configuration, you must use the following target-component:

{code:xml}<target-component>org.exoplatform.social.core.manager.ActivityManager</target-component>{code}

*Sample Configuration*:
{code:xml}<component-plugin>
  <name>MentionsProcessor</name>
  <set-method>addProcessorPlugin</set-method>
  <type>org.exoplatform.social.core.processor.MentionsProcessor</type>
  <init-params>
    <value-param>
      <name>priority</name>
      <description>priority of this processor (lower are executed first)</description>
      <value>2</value>
    </value-param>
  </init-params>
</component-plugin>{code}
In which:

* *Name*: _MentionsProcessor_

* *Set-method*: _addProcessorPlugin_

* *Type*: _org.exoplatform.social.core.processor.MentionsProcessor_

* *Init-params*:
|| Name || Possible value || Default value || Description ||
|*priority* |{{integer}} |2 |The priority of this processor. The lower priority level is executed first. |

h1. OSHtmlSanitizerProcessor {anchor:id=SOCref.Configuration.OSHtmlSanitizerProcessorRoleNotInToc}
The plugin renders valid HTML tags appearing in the Activity body (content).

*Sample configuration*:
{code:xml}<component>
    <key>org.exoplatform.social.core.manager.ActivityManager</key>
    <type>org.exoplatform.social.core.manager.ActivityManagerImpl</type>
    <component-plugins>
      <component-plugin>
        <name>OSHtmlSanitizer</name>
        <set-method>addProcessorPlugin</set-method>
        <type>org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor</type>
      </component-plugin>
    </component-plugins>
</component>{code}

In which:

* *Name*: _OSHtmlSanitizer_

* *Set-method*: _addProcessorPluginn_

* *Type*: _org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor_

h1. PortletPreferenceRequiredPlugin {anchor:id=SOCref.Configuration.SpaceService.ExternalPluginConfiguration.PortletPreferenceRequiredPluginRoleNotInToc}
This plugin is used to configure the list of portlet names which will have portlet preference of space context.

To use the plugin in the component configuration, you must use the following target-component:
{code:xml}<target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>{code}

*Sample configuration*:
{code:xml}<component-plugin>
  <name>portlets.prefs.required</name>
  <set-method>setPortletsPrefsRequired</set-method>
  <type>org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin</type>
  <init-params>
    <values-param>
      <name>portletsPrefsRequired</name>
      <value>SpaceActivityStreamPortlet</value>
      <value>SpaceSettingPortlet</value>
      <value>MembersPortlet</value>
    </values-param>
  </init-params>
</component-plugin>{code}

In which:

* *Name*: _portlets.prefs.required_

* *Set-method*: _setPortletsPrefsRequired_

* *Type*: _org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin_

* *Init-params*:
|| Name || Possible value || Default value || Description ||
| *portletsPrefsRequired* | {{Portlet names}} | {{SpaceActivityStreamPortlet; SpaceSettingPortlet; MembersPortlet}} |The list of portlets which need to be saved and get the space context name. |

h1. SpaceApplicationConfigPlugin  {anchor:id=SOCref.Configuration.External_component_plugins.SpaceApplicationConfigPluginRoleNotInToc}
This plugin is used to configure the default applications when creating a new space.

*Sample configuration*:
{code:xml}<component-plugin>
  <name>Space Application Configuration</name>
  <set-method>setSpaceApplicationConfigPlugin</set-method>
  <type>org.exoplatform.social.core.space.SpaceApplicationConfigPlugin</type>
  <init-params>
    <object-param>
      <name>spaceHomeApplication</name>
      <description>Space Home Application</description>
      <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
        <field name="portletApp"><string>social-portlet</string></field>
        <field name="portletName"><string>SpaceActivityStreamPortlet</string></field>
        <field name="appTitle"><string>Home</string></field>
        <!--<field name="icon"><string>SpaceHomeIcon</string></field>-->
      </object>
    </object-param>

    <object-param>
      <name>spaceApplicationListConfig</name>
      <description>space application list configuration</description>
      <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin">
        <field name="spaceApplicationList">
          <collection type="java.util.ArrayList">
            <value>
              <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                <field name="portletApp"><string>dashboard</string></field>
                <field name="portletName"><string>DashboardPortlet</string></field>
                <field name="appTitle"><string>Dashboard</string></field>
                <field name="removable"><boolean>true</boolean></field>
                <field name="order"><int>1</int></field>
                <field name="uri"><string>dashboard</string></field>
                <!--<field name="icon"><string>SpaceDashboardIcon</string></field>-->
              </object>
            </value>
            <value>
              <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                <field name="portletApp"><string>social-portlet</string></field>
                <field name="portletName"><string>SpaceSettingPortlet</string></field>
                <field name="appTitle"><string>Space Settings</string></field>
                <field name="removable"><boolean>false</boolean></field>
                <field name="order"><int>2</int></field>
                <field name="uri"><string>settings</string></field>
                <!--<field name="icon"><string>SpaceSettingsIcon</string></field>-->
              </object>
            </value>
            <value>
              <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                <field name="portletApp"><string>social-portlet</string></field>
                <field name="portletName"><string>MembersPortlet</string></field>
                <field name="appTitle"><string>Members</string></field>
                <field name="removable"><boolean>true</boolean></field>
                <field name="order"><int>3</int></field>
                <field name="uri"><string>members</string></field>
                <!--<field name="icon"><string>SpaceMembersIcon</string></field>-->
              </object>
            </value>
          </collection>
        </field>
      </object>
    </object-param>
  </init-params>
</component-plugin>{code}

In which:

* *Name*: _Space Application Configuration_

* *Set-method*: _setSpaceApplicationConfigPlugin_

* *Type*: _org.exoplatform.social.core.space.SpaceApplicationConfigPlugin_

* *Init-params*:
|| Object-param || Description ||
|*spaceHomeApplication*| Set the _Application_ portlet to be the home page of a space. |
|*spaceApplicationListConfig*| The list of the applications that are installed by default to a new space.|

|| Field name || Possible value || Description ||
|*portletAp* | {{string}} |The .war name file which has the portlet. |
|*portletName* | {{string}} |The name of portlet which is registered in the system. |
|*appTitle* | {{string}} |The display name of the application. |
|*removable* | {{boolean}} |Specify if the application is removed from the space or not. |
|*order* | {{integer}} |The order of the application in the space navigation. |
|*uri* | {{string}} |The URI of the application in the page node. |
|*icon* | {{string}} |The icon of the application. |

h1. SocialChromatticLifeCycle  {anchor:id=SOCref.Configuration.External_component_plugins.SocialChromatticLifeCycleRoleNotInToc}
This plugin is used to manage _ChromatticSession_ in the Social project.

To use the plugin in the component configuration, you must use the following target-component:
{code:xml}<target-component>org.exoplatform.commons.chromattic.ChromatticManager</target-component>{code}

*Sample configuration*:
{code:xml}<component-plugin>
  <name>chromattic</name>
  <set-method>addLifeCycle</set-method>
  <type>org.exoplatform.social.common.lifecycle.SocialChromatticLifeCycle</type>
  <init-params>
    <value-param>
      <name>domain-name</name>
      <value>soc</value>
    </value-param>
    <value-param>
      <name>workspace-name</name>
      <value>social</value>
    </value-param>
    <value-param profiles="all,default,minimal">
      <name>workspace-name</name>
      <value>social</value>
    </value-param>
    <values-param>
      <name>entities</name>
      <value>org.exoplatform.social.core.chromattic.entity.ProviderRootEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ProviderEntity</value>

      <value>org.exoplatform.social.core.chromattic.entity.IdentityEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ProfileEntity</value>

      <value>org.exoplatform.social.core.chromattic.entity.RelationshipEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.RelationshipListEntity</value>

      <value>org.exoplatform.social.core.chromattic.entity.ActivityEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ActivityListEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ActivityDayEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ActivityMonthEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ActivityYearEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.ActivityParameters</value>

      <value>org.exoplatform.social.core.chromattic.entity.SpaceRootEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.SpaceEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.SpaceListEntity</value>
      <value>org.exoplatform.social.core.chromattic.entity.SpaceRef</value>
    </values-param>
    <properties-param>
      <name>options</name>
      <property name="org.chromattic.api.Option.root_node.path" value="/production"/>
      <property name="org.chromattic.api.Option.root_node.create" value="true"/>
    </properties-param>
  </init-params>
</component-plugin>{code}

In which:

* *Name*: _chromattic_

* *Set-method*: _addLifeCycle_

* *Type*: _org.exoplatform.social.common.lifecycle.SocialChromatticLifeCycle_

* *Init-params*:

|| Value-param || Possible value || Description ||
| *domain-name* | {{String}}|The life cycle domain name.|
| *workspace-name* | {{String}}|The repository workspace name that is associated with this life cycle. |
| *entities* | {{List<String> }} |The list of chromatic entities that will be registered against the chromatic builder. |


*Properties-param*: _option_
||Property name|| Possible value || Default value || Description ||
|*org.chromattic.api.Option.root_node.path*|{{String}} |{{/production}}|The path of the root node. |
|*org.chromattic.api.Option.root_node.create*|{{Boolean}} |{{true}}|Specify whether or not the root node is created by the _ROOT\_NODE\_PATH_ option when it does not exist. |

h1. TemplateParamsProcessor {anchor:id=SOCref.Configuration.External_component_plugins.TemplateParamsProcessorRoleNotInToc}
This plugin uses the value in the _template_ parameter of the activity and replaces the title and body of the activity with
the _template_ parameter of this activity.

To use the plugin in the component configuration, you must use the following target-component:
{code:xml}<target-component>org.exoplatform.social.core.manager.ActivityManager</target-component>{code}

*Sample configuration*:
{code:xml}<component-plugin>
  <name>TemplateParamsProcessor</name>
  <set-method>addProcessorPlugin</set-method>
  <type>org.exoplatform.social.core.processor.TemplateParamsProcessor</type>
  <init-params>
    <value-param>
      <name>priority</name>
      <value>1</value>
    </value-param>
  </init-params>
</component-plugin>{code}
In which:

* *Name*: _TemplateParamsProcessor_

* *Set-method*: _addProcessorPlugin_

* *Type*: _org.exoplatform.social.core.processor.TemplateParamsProcessor_

* *Init-params*:
|| Name || Possible value || Default value || Description ||
|*priority* |{{integer}} |1|The priority of this processor. The lower priority level is executed first. |


h1. URLConverterFilterPlugin {anchor:id=SOCref.Configuration.External_component_plugins.XMLTagFilterPolicyRoleNotInToc}
This plugin converts all the URLs in the activity into the hyperlinks.

To use the plugin in the component configuration, you must use the following target-component:
{code:xml}<target-component>org.exoplatform.social.common.xmlprocessor.XMLProcessor</target-component>{code}

*Sample configuration*:
{code:xml}<component-plugin>
  <name>URLConverterFilterPlugin</name>
  <set-method>addFilterPlugin</set-method>
  <type>org.exoplatform.social.common.xmlprocessor.filters.URLConverterFilterPlugin</type>
  <init-params>
    <value-param>
      <name>urlMaxLength</name>
      <description>the max length of URL</description>
      <value>-1</value>
    </value-param>
  </init-params>
</component-plugin>{code}

In which:

* *Name*: _URLConverterFilterPlugin_

* *Set-method*: _addFilterPlugin_

* *Type*: _org.exoplatform.social.common.xmlprocessor.filters.URLConverterFilterPlugin_

* *Init-params*:

|| Value-param ||Possible value|| Default value|| Description ||
|*urlMaxLength*| {{integer}} | \-1 | The maximum length of the URL. If the URL is exceeding the maximum length, the URL will be shorten. If the value is \-1, it means the URL is not be shortened.|

h1. RestPortalContainerNameConfig {anchor:id=SOCref.Configuration.External_component_plugins.RestPortalContainerNameConfigRoleNotInToc}
This plugin is used to set the portal container name used for REST service.

To use the plugin in the component configuration, you must use the following target-component:
{code:xml}<target-component>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</target-component>{code}
*Sample configuration*:
{code:xml}<component-plugin>
  <name>set portal container name used for REST service</name>
  <set-method>setRestContainerName</set-method>
  <type>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</type>
    <init-params>
    <value-param>
      <name>rest-container-name</name>
      <value>socialdemo</value>
    </value-param>
  </init-params>
</component-plugin>{code}

In which:

* *Set-method*: _setRestContainerName_

* *Type*: _org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig_

* *Init-params*:

|| Value-param ||Possible value|| Default value|| Description ||
|*rest-container-name*|{{String}}|{{socialdemo}} |The portal container name. |