<?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/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"
       xmlns:int="http://www.springframework.org/schema/integration">

    <int:channel id="caseFileFilteredMailChannel"/>

    <bean id="caseFileMailFilter" class="com.armedia.acm.services.email.filter.AcmObjectPatternMailFilter" scope="refresh">
        <constructor-arg index="0" value="#{caseConfig.emailRegexCaseNumber}"/>
        <constructor-arg index="1" value="#{caseConfig.emailRegexObjectType}"/>
        <aop:scoped-proxy/>
    </bean>

    <bean id="caseFileMailHandler" class="com.armedia.acm.services.email.handler.AcmObjectMailHandler" scope="refresh">
        <constructor-arg index="0" ref="caseFileDao"/>
        <property name="mailDirectory" value="#{caseConfig.emailFolderRelativePath}"/>
        <property name="enabled" value="#{caseConfig.emailHandlerEnabled}"/>
        <property name="objectIdRegexPattern" value="#{caseConfig.emailRegexCaseNumber}"/>
        <property name="acmFolderService" ref="acmFolderService"/>
        <property name="ecmFileService" ref="ecmFileService"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="emailReceiverConfig" ref="emailReceiverConfig"/>
        <property name="emlToPDFConverter" ref="emlToPDFConverter"/>
    </bean>

    <int:service-activator input-channel="caseFileFilteredMailChannel" ref="caseFileMailHandler" method="handle"/>

    <int:chain input-channel="mailChannelCaseFile" output-channel="caseFileFilteredMailChannel">
        <int:filter ref="caseFileMailFilter" throw-exception-on-rejection="false" method="accept"/>
    </int:chain>


    <!-- Create new CaseFile from incoming mail -->
    <bean id="newCaseFileMailFilter" class="com.armedia.acm.services.email.filter.CaseFilePatternMailFilter" scope="refresh">
        <constructor-arg index="0" value=""/>
        <constructor-arg index="1" value="#{caseConfig.emailRegexObjectType}"/>
        <property name="emailReceiverConfig" ref="emailReceiverConfig"/>
        <aop:scoped-proxy/>
    </bean>

    <bean id="newCaseFileMailHandler" class="com.armedia.acm.plugins.casefile.email.NewCaseFileMailHandler" parent="caseFileMailHandler">
        <property name="saveCaseService" ref="saveCaseService"/>
        <property name="lookupDao" ref="lookupDao"/>
        <property name="emailReceiverConfig" ref="emailReceiverConfig"/>
    </bean>

    <int:service-activator input-channel="newCaseFileFilteredMailChannel" ref="newCaseFileMailHandler" method="handle"/>

    <int:chain input-channel="mailChannelCaseFile" output-channel="newCaseFileFilteredMailChannel">
        <int:filter ref="newCaseFileMailFilter" throw-exception-on-rejection="false" method="accept"/>
    </int:chain>


</beans>