There are some overridable components in eXo Collaboration so that you can control how these components work by implementing or extending default implementations and then reconfigure these new components in the file configuration.xml.

h1. ContentDAO {anchor:id=CSref.ExtensionPoints.ContentDAO}

{{ContentDAO}} is an overridable component used in the Content application ( or called RSS reader) of eXo Collaboration.

You can find the configuration file at _WEB-INF/cs-extension/cs/content/content-service-configuration.xml_ with the declaration as below:

{code:xml}
<component>
  <key>org.exoplatform.content.service.ContentDAO</key>
  <type>org.exoplatform.content.service.impl.ContentDAOImpl</type>
</component>
{code}
The example below is an example of plugin configuration:

{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.content.service.ContentDAO</target-component>
  <component-plugin>
    <name>rssreader.listener</name>
    <set-method>addPlugin</set-method>
    <type>org.exoplatform.content.service.RSSContentPlugin</type>
    <description>rss reader plugin</description>
  </component-plugin>

  <component-plugin>
    <name>description.listener</name>
    <set-method>addPlugin</set-method>
    <type>org.exoplatform.content.service.DescriptionPlugin</type>
    <description>Description plugin</description>
  </component-plugin>
</external-component-plugins> 
{code}


h1. ContactLifeCycle {anchor:id=CSref.ExtensionPoints.ContactLifeCycle}
{{ContactLifeCycle}} is an interface to extend the capabilities of eXo Platform. A {{ContactLifeCycle}} lets you be notified during the lifecycle of an address book's contact when a contact is added or modified.

An example of {{ContactLifeCycle}} has been implemented to integrate the Address Book application in the eXo Social's Spaces. See the following configuration at:  _ext/social-integration/src/main/resources/conf/portal/configuration.xml._

See the following example:

{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.contact.service.ContactService</target-component>
  <component-plugin>
    <name>ContactEventListener</name>
    <set-method>addListenerPlugin</set-method>
    <type>org.exoplatform.cs.ext.impl.ContactSpaceActivityPublisher</type>
  </component-plugin>
</external-component-plugins> 
{code}

Details:
{{ContactSpaceActivityPublisher}} implements {{ContactLifeCycle}}. This implementation publishes activities in the space activity stream to notify of new and updated contacts in the space address book.


h1. Transport {anchor:id=CSref.ExtensionPoints.Transport}

{{Transport}} is an overridable component used in the Chat application of eXo Collaboration.

This overridable component is used to help users add the protocol to the Chat application, such as: ICQ, YAHOO, MSN, XMPP, AIM, GTALk.

The Chat application of eXo Collaboration only uses the XMPP protocol that is implemented in this object "{{XMPPTransport}}".


h1. EventLifeCycle {anchor:id=CSref.ExtensionPoints.EventLifeCycle}

{{EventLifeCycle}} is an extension point used in the Calendar application of eXo Collaboration.
You can find the configuration file of this component at:  _ext/social-integration/src/main/resources/conf/portal/configuration.xml_.

See the following example:
{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.calendar.service.CalendarService</target-component>
  <component-plugin>
    <name>CalendarEventListener</name>
    <set-method>addEventListenerPlugin</set-method>
    <type>org.exoplatform.cs.ext.impl.CalendarSpaceActivityPublisher</type>
  </component-plugin>
</external-component-plugins>
{code}

Details:
{{CalendarSpaceActivityPublisher}} implements {{EventLifeCycle}}. It writes activities in the space activity stream when events or tasks are added/modified.