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

    <!-- pre-save handlers -->
    <bean id="documentRepositoryAuditHandler"
        class="com.armedia.acm.plugins.documentrepository.pipeline.presave.DocumentRepositoryAuditHandler"/>

    <!-- post-save handlers -->
    <bean id="documentRepositoryEcmFolderHandler"
        class="com.armedia.acm.plugins.documentrepository.pipeline.postsave.DocumentRepositoryEcmFolderHandler">
        <property name="ecmFileService" ref="ecmFileService"/>
    </bean>
    <bean id="documentRepositoryContainerHandler"
        class="com.armedia.acm.plugins.documentrepository.pipeline.postsave.DocumentRepositoryContainerHandler">
        <property name="fileParticipantService" ref="fileParticipantService"/>
    </bean>

    <bean id="documentRepositoryPipelineManager" class="com.armedia.acm.services.pipeline.PipelineManager">
        <property name="preSaveHandlers">
            <list value-type="com.armedia.acm.services.pipeline.handler.PipelineHandler">
                <ref bean="documentRepositoryAuditHandler"/>
            </list>
        </property>
        <property name="postSaveHandlers">
            <list value-type="com.armedia.acm.services.pipeline.handler.PipelineHandler">
                <ref bean="documentRepositoryRulesHandler"/>
                <ref bean="documentRepositoryContainerHandler"/>
                <ref bean="documentRepositoryEcmFolderHandler"/>
            </list>
        </property>
    </bean>

    <bean id="documentRepositoryToSolrTransformer"
        class="com.armedia.acm.plugins.documentrepository.service.DocumentRepositoryToSolrTransformer">
        <property name="userDao" ref="userJpaDao"/>
        <property name="fileAclSolrUpdateHelper" ref="fileAclSolrUpdateHelper"/>
        <property name="searchAccessControlFields" ref="searchAccessControlFields"/>
        <property name="documentRepositoryDao" ref="documentRepositoryDao"/>
    </bean>

    <bean id="documentRepositoryDao" class="com.armedia.acm.plugins.documentrepository.dao.DocumentRepositoryDao">
        <aop:scoped-proxy proxy-target-class="true"/>
    </bean>

    <bean id="documentRepositoryServiceImpl" class="com.armedia.acm.plugins.documentrepository.service.impl.DocumentRepositoryServiceImpl">
        <property name="documentRepositoryDao" ref="documentRepositoryDao"/>
        <property name="acmFolderService" ref="acmFolderService"/>
        <property name="noteDao" ref="noteDao"/>
        <property name="associatedTagService" ref="associatedTagService"/>
        <property name="objectAssociationService" ref="objectAssociationService"/>
        <property name="pipelineManager" ref="documentRepositoryPipelineManager"/>
        <property name="documentRepositoryEventPublisher" ref="documentRepositoryEventPublisher"/>
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
    </bean>

    <bean id="documentRepositoryPlugin" class="com.armedia.acm.pluginmanager.model.AcmPlugin">
        <property name="pluginName" value="Document Repository Plugin"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
        <property name="suportedObjectTypesNames">
            <list>
                <value>DOC_REPO</value>
            </list>
        </property>
        <property name="pluginConfig" ref="docRepoConfig"/>
    </bean>

    <bean id="documentRepositoryEventPublisher"
        class="com.armedia.acm.plugins.documentrepository.service.DocumentRepositoryEventPublisher"/>

    <bean id="docRepoConfig" class="com.armedia.acm.plugins.documentrepository.model.DocumentRepositoryConfig" scope="refresh">
        <aop:scoped-proxy/>
    </bean>
</beans>
