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

    <bean id="onlyOfficeConfigService"
          class="com.armedia.acm.plugins.onlyoffice.service.ConfigServiceImpl">
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="arkPermissionEvaluator" ref="arkPermissionEvaluator"/>
        <property name="documentTypeResolver" ref="documentTypeResolver"/>
        <property name="onlyOfficeConfig" ref="onlyOfficeConfig"/>
    </bean>

    <bean id="onlyOfficeCallbackService"
          class="com.armedia.acm.plugins.onlyoffice.service.CallbackServiceImpl">
        <property name="onlyOfficeEventPublisher" ref="onlyOfficeEventPublisher"/>
        <property name="objectLockService" ref="objectLockService"/>
        <property name="ecmFileService" ref="ecmFileService"/>
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="documentHistoryManager" ref="historyFilesManager"/>
        <property name="acmObjectLockingManager" ref="acmObjectLockingManager"/>
        <property name="config" ref="onlyOfficeConfig"/>
    </bean>

    <bean id="historyFilesManager"
          class="com.armedia.acm.plugins.onlyoffice.service.DocumentHistoryManagerImpl">
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="mapper" ref="sourceObjectMapper"/>
        <property name="config" ref="onlyOfficeConfig"/>
    </bean>

    <bean id="signingServiceImpl" class="com.armedia.acm.plugins.onlyoffice.service.JWTSigningServiceImpl">
        <property name="config" ref="onlyOfficeConfig"/>
    </bean>

    <bean id="documentTypeResolver" class="com.armedia.acm.plugins.onlyoffice.util.DocumentTypeResolver"/>

    <bean id="onlyOfficeEventPublisher" class="com.armedia.acm.plugins.onlyoffice.service.OnlyOfficeEventPublisher"/>

    <bean id="onlyOfficeConfig" class="com.armedia.acm.plugins.onlyoffice.model.OnlyOfficeConfig" scope="refresh">
        <aop:scoped-proxy/>
    </bean>
</beans>