<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">

    <bean id="processMailService" class="com.armedia.acm.services.email.service.AcmProcessMailServiceImpl">
        <property name="acmFolderService" ref="acmFolderService"/>
        <property name="ecmFileService" ref="ecmFileService"/>
    </bean>

    <bean id="emailSenderConfigurationService" class="com.armedia.acm.services.email.sender.service.EmailSenderConfigurationServiceImpl">
        <property name="emailSenderConfig" ref="emailSenderConfig"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
    </bean>

    <bean id="emailReceiverConfigurationService"
          class="com.armedia.acm.services.email.receiver.service.EmailReceiverConfigurationServiceImpl">
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
        <property name="emailReceiverConfig" ref="emailReceiverConfig"/>
    </bean>

    <bean id="filesystemTemplateConfigurationService"
          class="com.armedia.acm.services.email.service.AcmFilesystemMailTemplateConfigurationService">
        <property name="templateFolderPath" value="${user.home}/.arkcase/acm/templates"/>
    </bean>

    <bean id="configurableEmailSenderService" class="com.armedia.acm.services.email.service.AcmConfigurableEmailSenderService">
        <property name="emailSenderMap">
            <map>
                <entry key="smtp" value-ref="smtpService"></entry>
                <entry key="outlook" value-ref="outlookService"></entry>
            </map>
        </property>
        <property name="emailSenderConfigurationService" ref="emailSenderConfigurationService"/>
    </bean>

    <bean id="acmEmailContentGeneratorService" class="com.armedia.acm.services.email.service.AcmEmailContentGeneratorService" scope="refresh">
        <aop:scoped-proxy/>
        <property name="authenticationTokenService" ref="authenticationTokenService"/>
        <property name="authenticationTokenDao" ref="authenticationTokenDao"/>
        <property name="templatingEngine" ref="templatingEngine"/>
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="objectLabelConfig" ref="objectLabelConfig"/>
        <property name="translationService" ref="translationService"/>
    </bean>

    <bean id="objectLabelConfig" class="com.armedia.acm.services.labels.service.ObjectLabelConfig" scope="refresh">
        <aop:scoped-proxy/>
    </bean>

    <bean id="forwardedAsAttachmentEmailExtractor" class="com.armedia.acm.services.email.service.ForwardedAsAttachmentEmailExtractor"/>

    <bean id="emailBodyContentEmailExtractor" class="com.armedia.acm.services.email.service.EmailBodyContentEmailExtractor"/>

    <bean id="defaultOriginalEmailExtractor" class="com.armedia.acm.services.email.service.DefaultOriginalEmailExtractor"/>

    <bean id="originalEmailExtractor" class="com.armedia.acm.services.email.service.OriginalEmailExtractor">
        <property name="originalEmailExtractorStrategies">
            <list value-type="com.armedia.acm.services.email.service.OriginalEmailExtractorStrategy">
                <ref bean="forwardedAsAttachmentEmailExtractor"/>
                <ref bean="emailBodyContentEmailExtractor"/>
                <ref bean="defaultOriginalEmailExtractor"/>
            </list>
        </property>
    </bean>

</beans>