Example: IMAP Subsystem - Alfresco Content Services - 23.4 - 23.4 - Ready - Alfresco - external

Alfresco Content Services

Platform
Alfresco
Product
Alfresco Content Services
Release
23.4
License

The IMAP subsystem is mounted as:

<!-- IMAP Subsystem -->
<bean id="imap" class="org.alfresco.repo.management.subsystems.ChildApplicationContextFactory" parent="abstractPropertyBackedBean">
    <property name="autoStart">
        <value>true</value>
    </property>
    <property name="compositePropertyTypes">
        <map>
            <entry key="imap.server.mountPoints">
                <value>org.alfresco.repo.imap.config.ImapConfigMountPointsBean</value>
            </entry>
        </map>
    </property>
</bean>

The subsystem declares a single composite property called imap.server.mountPoints with component type org.alfresco.repo.imap.config.ImapConfigMountPointsBean.

The configured value of this composite property is materialized in the child application context as a ListFactoryBean. The bean’s ID should match the name of the composite property. So, for example, in the IMAP subsystem configuration:

<!--The configurable list of mount points - actually a post-processed composite property! -->
  <bean id="imap.server.mountPoints" class="org.springframework.beans.factory.config.ListFactoryBean">
      <property name="sourceList">
          <list>
              <!-- Anything declared in here will actually be ignored and replaced by the configured composite propery value, resolved on initialization -->
              <bean id="Repository_virtual" class="org.alfresco.repo.imap.config.ImapConfigMountPointsBean">
                  <property name="mode">
                      <value>virtual</value>
                  </property>
                  <property name="store">
                      <value>${spaces.store}</value>
                  </property>
                  <property name="path">
                      <value>/${spaces.company_home.childname}</value>
                  </property>
              </bean>
              <bean id="Repository_archive" class="org.alfresco.repo.imap.config.ImapConfigMountPointsBean">
                  <property name="mode">
                      <value>archive</value>
                  </property>
                  <property name="store">
                      <value>${spaces.store}</value>
                  </property>
                  <property name="path">
                      <value>/${spaces.company_home.childname}</value>
                  </property>
              </bean>
          </list>
      </property>
  </bean>

Other beans in the subsystem application context can use imap.server.mountPoints as though it were a regular list of ImapConfigMountPointsBeans.