<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

	<bean id="TaggingService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.tagging.TaggingService</value>
        </property>
        <property name="target">
            <ref bean="taggingService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="TaggingService_transaction"/>
                <idref bean="AuditMethodInterceptor"/>
                <idref bean="exceptionTranslator"/>
                <idref local="TaggingService_security"/>
            </list>
        </property>
    </bean>

    <bean id="TaggingService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <bean id="TaggingService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor" />
    
    <bean id="taggingService" class="org.alfresco.repo.tagging.TaggingServiceImpl" init-method="init">
    	<property name="nodeService" ref="NodeService"/>
    	<property name="categoryService" ref="CategoryService"/>
    	<property name="searchService" ref="SearchService"/>
    	<property name="actionService" ref="ActionService"/>
    	<property name="contentService" ref="ContentService"/>
    	<property name="namespaceService" ref="NamespaceService"/>
    	<property name="policyComponent" ref="policyComponent"/>
    </bean>
    
    <bean id="update-tagscope" class="org.alfresco.repo.tagging.UpdateTagScopesActionExecuter" parent="action-executer">
        <property name="publicAction">
           <value>false</value>
        </property>
        <property name="nodeService" ref="NodeService"/>
        <property name="contentService" ref="ContentService"/>
        <property name="taggingService" ref="TaggingService"/>
    </bean> 
    
    <bean id="refresh-tagscope" class="org.alfresco.repo.tagging.RefreshTagScopeActionExecuter" parent="action-executer">
        <property name="publicAction">
           <value>false</value>
        </property>
        <property name="nodeService" ref="NodeService"/>
        <property name="contentService" ref="ContentService"/>
        <property name="taggingService" ref="TaggingService"/>
    </bean> 
    
    <bean id="scriptTaggingService" parent="baseJavaScriptExtension" class="org.alfresco.repo.tagging.script.ScriptTaggingService">
        <property name="extensionName">
            <value>taggingService</value>
        </property>
        <!-- Creates ScriptNodes which require the ServiceRegistry -->
        <property name="serviceRegistry" ref="ServiceRegistry"/>
    </bean>
    
</beans>
