<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
 
<beans>
    <import resource="classpath:alfresco/public-services-security-context.xml"/>
    
    <!-- Base Service Descriptor for Alfresco Services -->
    <bean id="AlfrescoServiceDescriptor" abstract="true" class="org.alfresco.repo.service.ServiceDescriptorAdvisorFactory">
        <property name="namespace">
            <value>http://www.alfresco.org</value>
        </property>
    </bean>
    
    <!-- Service Registry -->
    
    <bean id="ServiceRegistry" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.ServiceRegistry</value>
        </property>
        <property name="target">
            <bean class="org.alfresco.repo.service.ServiceDescriptorRegistry"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ServiceRegistry_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ServiceRegistry_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.ServiceRegistry</value>
        </property>
        <property name="description">
            <value>Repository service registry</value>
        </property>
    </bean>
    
    <!-- Exception Translation -->
    
    <bean id="exceptionTranslator" class="org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor"/>
    
    <!-- Descriptor Service -->
    
    <bean id="DescriptorService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.descriptor.DescriptorService</value>
        </property>
        <property name="target">
            <ref bean="descriptorComponent"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="exceptionTranslator"/>
                <idref local="DescriptorService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="DescriptorService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.descriptor.DescriptorService</value>
        </property>
        <property name="description">
            <value>Descriptor service</value>
        </property>
    </bean>
    
    <!-- AuditMethodInterceptor -->
    
    <bean id="AuditMethodInterceptor" class="org.alfresco.repo.audit.AuditMethodInterceptor">
        <property name="auditComponent">
            <ref bean="auditComponent"/>
        </property>
        <property name="disabled">
            <value>false</value>
        </property>
    </bean>
   
    
    <!-- Namespace Service -->
    
    <alias name="namespaceService" alias="NamespaceService"/>

    <bean id="NamespaceService_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="NamespaceService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.namespace.NamespaceService</value>
        </property>
        <property name="description">
            <value>Namespace service</value>
        </property>
    </bean>
    
    <!-- Transaction Service -->
    
    <alias alias="TransactionService" name="transactionComponent"/>
    
    <!-- Dictionary Service -->
    
    <alias name="dictionaryService" alias="DictionaryService"/>
    
    <bean id="DictionaryService_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="DictionaryService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.dictionary.DictionaryService</value>
        </property>
        <property name="description">
            <value>Dictionary Service</value>
        </property>
    </bean>
    
    <!-- Node Service -->
    
    <bean id="NodeService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>org.alfresco.service.ServiceDescriptor</value>
                <value>org.alfresco.service.cmr.repository.NodeService</value>
            </list>
        </property>
        <property name="target">
            <ref bean="nodeService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="NodeService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="NodeService_security"/>
                <idref local="NodeService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="NodeService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="exist*">${server.transaction.mode.readOnly}</prop>
                <prop key="get*">${server.transaction.mode.readOnly}</prop>
                <prop key="has*">${server.transaction.mode.readOnly}</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <bean id="NodeService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.NodeService</value>
        </property>
        <property name="description">
            <value>Node Service</value>
        </property>
    </bean>
    
    <!-- Content Service -->
    
    <bean id="ContentService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.repository.ContentService</value>
        </property>
        <property name="target">
            <ref bean="contentService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ContentService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="ContentService_security"/>
                <idref local="ContentService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ContentService_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="ContentService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.ContentService</value>
        </property>
        <property name="description">
            <value>Content Service</value>
        </property>
    </bean>
    
    <!-- Mime Type Service -->
    
    <alias name="mimetypeService" alias="MimetypeService"/>
    
    <bean id="MimetypeService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.MimetypeService</value>
        </property>
        <property name="description">
            <value>Mime Type Service</value>
        </property>
    </bean>
    
    <!-- Search Service -->
    
    <bean id="SearchService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.search.SearchService</value>
        </property>
        <property name="target">
            <ref bean="searchService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="SearchService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="SearchService_security"/>
                <idref local="SearchService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="SearchService_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="SearchService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.search.SearchService</value>
        </property>
        <property name="description">
            <value>Search Service</value>
        </property>
    </bean>
    
    <!-- Category Service -->
    
    <bean id="CategoryService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.search.CategoryService</value>
        </property>
        <property name="target">
            <ref bean="categoryService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="CategoryService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="CategoryService_security"/>
                <idref local="CategoryService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="CategoryService_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="CategoryService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.search.CategoryService</value>
        </property>
        <property name="description">
            <value>Category Service</value>
        </property>
    </bean>
    
    <!-- Copy Service -->
    
    <bean id="CopyService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.repository.CopyService</value>
        </property>
        <property name="target">
            <ref bean="copyService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="CopyService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="CopyService_security"/>
                <idref local="CopyService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="CopyService_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="CopyService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.CopyService</value>
        </property>
        <property name="description">
            <value>Copy Service</value>
        </property>
    </bean>
    
    <!-- Lock Service -->
    
    <bean id="LockService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.lock.LockService</value>
        </property>
        <property name="target">
            <ref bean="lockService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="LockService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="LockService_security"/>
                <idref local="LockService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="LockService_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="LockService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.lock.LockService</value>
        </property>
        <property name="description">
            <value>Lock Service</value>
        </property>
    </bean>
    
    <!-- Version Service -->
    
    <bean id="VersionService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.version.VersionService</value>
        </property>
        <property name="target">
            <ref bean="versionService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="VersionService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="VersionService_security"/>
                <idref local="VersionService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="VersionService_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="VersionService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.version.VersionService</value>
        </property>
        <property name="description">
            <value>Version Service</value>
        </property>
    </bean>
    
    <!-- COCI Service -->
    
    <bean id="CheckoutCheckinService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.coci.CheckOutCheckInService</value>
        </property>
        <property name="target">
            <ref bean="checkOutCheckInService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="CheckoutCheckinService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="CheckoutCheckinService_security"/>
                <idref local="CheckoutCheckinService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="CheckoutCheckinService_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="CheckoutCheckinService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.coci.CheckOutCheckInService</value>
        </property>
        <property name="description">
            <value>Version Service</value>
        </property>
    </bean>
    
    <!-- Rule Service -->
    
    <bean id="RuleService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.rule.RuleService</value>
        </property>
        <property name="target">
            <ref bean="ruleService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="RuleService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="RuleService_security"/>
                <idref local="RuleService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="RuleService_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="RuleService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.rule.RuleService</value>
        </property>
        <property name="description">
            <value>Rule Service</value>
        </property>
    </bean>
    
    <!-- Importer Service -->
    
    <bean id="ImporterService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.view.ImporterService</value>
        </property>
        <property name="target">
            <ref bean="importerComponent"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ImporterService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="ImporterService_security"/>
                <idref local="ImporterService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ImporterService_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="ImporterService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.view.ImporterService</value>
        </property>
        <property name="description">
            <value>Importer Service</value>
        </property>
    </bean>
    
    <!-- Exporter Service -->
    
    <bean id="ExporterService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.view.ExporterService</value>
        </property>
        <property name="target">
            <ref bean="exporterComponent"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ExporterService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="ExporterService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ExporterService_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="ExporterService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.view.ExporterService</value>
        </property>
        <property name="description">
            <value>Exporter Service</value>
        </property>
    </bean>
    
    <!-- Action Service -->
    
    <bean id="ActionService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.action.ActionService</value>
        </property>
        <property name="target">
            <ref bean="actionService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ActionService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="ActionService_security"/>
                <idref local="ActionService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ActionService_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="ActionService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.action.ActionService</value>
        </property>
        <property name="description">
            <value>Action Service</value>
        </property>
    </bean>
    
    <!-- Permission Service -->
    
    <bean id="PermissionService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.security.PermissionService</value>
        </property>
        <property name="target">
            <ref bean="permissionService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="PermissionService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="PermissionService_security"/>
                <idref local="PermissionService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="PermissionService_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="PermissionService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.security.PermissionService</value>
        </property>
        <property name="description">
            <value>Permission Service</value>
        </property>
    </bean>
    
    <!-- Authority Service -->
    
    <bean id="AuthorityService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.security.AuthorityService</value>
        </property>
        <property name="target">
            <ref bean="authorityService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="AuthorityService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="AuthorityService_security"/>
                <idref local="AuthorityService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="AuthorityService_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="AuthorityService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.security.AuthorityService</value>
        </property>
        <property name="description">
            <value>Authority Service</value>
        </property>
    </bean>
    
    <!-- Ownable Service -->
    
    <bean id="OwnableService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.security.OwnableService</value>
        </property>
        <property name="target">
            <ref bean="ownableService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="OwnableService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="OwnableService_security"/>
                <idref local="OwnableService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="OwnableService_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="OwnableService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.security.OwnableService</value>
        </property>
        <property name="description">
            <value>OwnableService Service</value>
        </property>
    </bean>
    
    <!-- Person Service -->
    
    <bean id="PersonService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.security.PersonService</value>
        </property>
        <property name="target">
            <ref bean="personService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="PersonService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="PersonService_security"/>
                <idref local="PersonService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="PersonService_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="PersonService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.security.PersonService</value>
        </property>
        <property name="description">
            <value>PersonService Service</value>
        </property>
    </bean>
    
    <!-- Authentication Service -->
    
    <bean id="AuthenticationService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.security.AuthenticationService</value>
        </property>
        <property name="target">
            <ref bean="authenticationServiceImpl"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="AuthenticationService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="AuthenticationService_security"/>
                <idref local="AuthenticationService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="AuthenticationService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="getCurrentUserName">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="invalidateUserSession">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="invalidateTicket">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="getCurrentTicket">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="clearCurrentSecurityContext">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="isCurrentUserTheSystemUser">PROPAGATION_NOT_SUPPORTED, readOnly</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <bean id="AuthenticationService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.security.AuthenticationService</value>
        </property>
        <property name="description">
            <value>AuthenticationService Service</value>
        </property>
    </bean>
    
    <!-- Template Service -->
    
    <bean id="TemplateService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.repository.TemplateService</value>
        </property>
        <property name="target">
            <ref bean="templateService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="TemplateService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="TemplateService_security"/>
                <idref local="TemplateService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="TemplateService_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="TemplateService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.TemplateService</value>
        </property>
        <property name="description">
            <value>TemplateService Service</value>
        </property>
    </bean>
    
    <!-- Script Service -->
    
    <bean id="ScriptService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.repository.ScriptService</value>
        </property>
        <property name="target">
            <ref bean="scriptService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ScriptService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="ScriptService_security"/>
                <idref local="ScriptService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="ScriptService_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="ScriptService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.repository.ScriptService</value>
        </property>
        <property name="description">
            <value>ScriptService Service</value>
        </property>
    </bean>
    
    <!-- File/Folder Service -->
    
    <bean id="FileFolderService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.model.FileFolderService</value>
        </property>
        <property name="target">
            <ref bean="fileFolderService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="FileFolderService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                <idref bean="FileFolderService_security"/>
                <idref bean="FileFolderService_descriptor"/>
                <idref bean="tempFileMarkerInterceptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="FileFolderService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="list*">${server.transaction.mode.readOnly}</prop>
                <prop key="search*">${server.transaction.mode.readOnly}</prop>
                <prop key="get*">${server.transaction.mode.readOnly}</prop>
                <prop key="resolve*">${server.transaction.mode.readOnly}</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
     <bean id="FileFolderService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.model.FileFolderService</value>
        </property>
        <property name="description">
            <value>FileFolderService Service</value>
        </property>
    </bean>
    
    <!-- The CrossRepositoryCopyService -->
    
    <bean id="crossRepositoryCopyService" class="org.alfresco.repo.copy.CrossRepositoryCopyServiceImpl">
        <property name="avmService">
            <ref bean="avmService"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="fileFolderService">
            <ref bean="fileFolderService"/>
        </property>
        <property name="contentService">
            <ref bean="contentService"/>
        </property>
        <property name="copyService">
            <ref bean="copyService"/>
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService"/>
        </property> 
    </bean>
    
    <bean id="crossRepositoryCopyServiceWriteTxnAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <ref bean="retryingWriteTxnAdvice"/>
        </property>
        <property name="mappedNames">
            <list>
                <value>copy</value>
            </list>
        </property>
    </bean>
    
    <bean id="CrossRepositoryCopyService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>org.alfresco.service.cmr.repository.CrossRepositoryCopyService</value>
            </list>
        </property>
        <property name="targetName">
            <value>crossRepositoryCopyService</value>
        </property>
        <property name="interceptorNames">
            <list>
                <value>crossRepositoryCopyServiceWriteTxnAdvisor</value>
            </list>
        </property>
    </bean>
    
    <!-- The AVMService -->
    
    <bean id="avmService" class="org.alfresco.repo.avm.AVMServiceImpl">
	    <property name="avmRepository">
	    	<ref bean="avmRepository"/>
	    </property>
	    <property name="transactionListener">
	        <ref bean="lookupCacheListener"/>
	    </property>
	</bean>
	
    <bean id="avmServiceReadTxnAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <ref bean="retryingReadTxnAdvice"/>
        </property>
        <property name="mappedNames">
            <list>
                <value>getFileInputStream</value>
                <value>getContentReader</value>
                <value>getDirectoryListing</value>
                <value>getDirectoryListingDirect</value>
                <value>getDirectoryListingArray</value>
                <value>getDeleted</value>
                <value>getNextVersionID</value>
                <value>getLatestSnapshotID</value>
                <value>getStoreVersions</value>
                <value>getStores</value>
                <value>getStore</value>
                <value>getStoreRoot</value>
                <value>lookup</value>
                <value>getPaths</value>
                <value>getHeadPaths</value>
                <value>getPathsInStoreHead</value>
                <value>getIndirectionPath</value>
                <value>getHistory</value>
                <value>getCommonAncestor</value>
                <value>getLayereingInfo</value>
                <value>getNodeProperty</value>
                <value>getNodeProperties</value>
                <value>getStoreProperty</value>
                <value>getStoreProperties</value>
                <value>queryStorePropertyKey</value>
                <value>queryStoresPropertyKeys</value>
                <value>getContentDataForRead</value>
                <value>getAspects</value>
                <value>hasAspect</value>
                <value>getAPath</value>
            </list>
        </property>
    </bean>

    <bean id="avmServiceWriteTxnAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <ref bean="retryingWriteTxnAdvice"/>
        </property>
        <property name="mappedNames">
            <list>
                <value>getFileOutputStream</value>
                <value>getContentWriter</value>
                <value>createFile</value>
                <value>createDirectory</value>
                <value>createLayeredFile</value>
                <value>createLayeredDirectory</value>
                <value>retargetLayeredDirectory</value>
                <value>createStore</value>
                <value>createBranch</value>
                <value>removeNode</value>
                <value>rename</value>
                <value>uncover</value>
                <value>makeTransparent</value>
                <value>createSnapshot</value>
                <value>purgeStore</value>
                <value>purgeVersion</value>
                <value>makePrimary</value>
                <value>setOpacity</value>
                <value>setNodeProperty</value>
                <value>setNodeProperties</value>
                <value>deleteNodeProperty</value>
                <value>deleteNodeProperties</value>
                <value>setStoreProperty</value>
                <value>setStoreProperties</value>
                <value>deleteStoreProperty</value>
                <value>getContentDataForWrite</value>
                <value>setContentData</value>
                <value>setMetaDataFrom</value>
                <value>addAspect</value>
                <value>removeAspect</value>
                <value>link</value>
                <value>forceCopy</value>
                <value>copy</value>
                <value>renameStore</value>
                <value>getSystemStore</value>
                <value>revert</value>
            </list>
        </property>
    </bean>
	
    <bean id="AVMService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>org.alfresco.service.cmr.avm.AVMService</value>
            </list>
        </property>
        <property name="targetName">
            <value>avmService</value>
        </property>
        <property name="interceptorNames">
            <list>
                <value>avmServiceWriteTxnAdvisor</value>
                <value>avmServiceReadTxnAdvisor</value>
            </list>
        </property>
    </bean>
	
    <!-- The AVMSyncService -->
    
    <bean id="avmSyncService" class="org.alfresco.repo.avm.AVMSyncServiceImpl">
        <property name="avmService">
            <ref bean="avmService"/>
        </property>
        <property name="avmRepository">
            <ref bean="avmRepository"/>
        </property>
    </bean>
    
    <!-- Read transaction advisor for sync service. -->
    <bean id="avmSyncServiceReadTxnAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <ref bean="retryingReadTxnAdvice"/>
        </property>
        <property name="mappedNames">
            <list>
            	<value>compare</value>
            </list>
        </property>
    </bean>
	
	<!-- Write transaction advisor for sync service. -->
    <bean id="avmSyncServiceWriteTxnAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <ref bean="retryingWriteTxnAdvice"/>
        </property>
        <property name="mappedNames">
            <list>
            	<value>update</value>
            	<value>flatten</value>
            	<value>resetLayer</value>
            </list>
        </property>
    </bean>

    <bean id="AVMSyncService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>org.alfresco.service.cmr.avmsync.AVMSyncService</value>
            </list>
        </property>
        <property name="targetName">
            <value>avmSyncService</value>
        </property>
        <property name="interceptorNames">
            <list>
                <value>avmSyncServiceWriteTxnAdvisor</value>
                <value>avmSyncServiceReadTxnAdvisor</value>
            </list>
        </property>
    </bean>

	<!--
    <bean id="AVMSyncService" class="org.springframework.aop.framework.ProxyFactoryBean">
	    <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.avmsync.AVMSyncService</value>
        </property>
        <property name="target">
            <ref bean="avmSyncService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="AVMSyncService_transaction"/>
                <idref local="AVMSyncService_descriptor"/>
            </list>
        </property>
    </bean>
    -->
    
    <!-- Workflow Service -->
    
    <bean id="WorkflowService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.workflow.WorkflowService</value>
        </property>
        <property name="target">
            <ref bean="workflowServiceImpl"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="WorkflowService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                 <idref bean="WorkflowService_security"/>
                <idref local="WorkflowService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="WorkflowService_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="WorkflowService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.workflow.WorkflowService</value>
        </property>
        <property name="description">
            <value>Workflow Service</value>
        </property>
    </bean>
    
    
    <!-- Audit Service -->
    
    <bean id="AuditService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.audit.AuditService</value>
        </property>
        <property name="target">
            <ref bean="auditService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="AuditService_transaction"/>
                <idref local="AuditMethodInterceptor"/>
                <idref local="exceptionTranslator"/>
                 <idref bean="AuditService_security"/>
                <idref local="AuditService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="AuditService_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="AuditService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.audit.AuditService</value>
        </property>
        <property name="description">
            <value>Audit Service</value>
        </property>
    </bean>
    
    
    <!-- MultilingualContentService -->
    
    <bean id="MultilingualContentService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.ml.MultilingualContentService</value>
        </property>
        <property name="target">
            <ref bean="multilingualContentService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="MultilingualContentService_transaction"/>
                <idref local="exceptionTranslator"/>
                <idref local="MultilingualContentService_descriptor"/>
            </list>
        </property>
    </bean>
    
    <bean id="MultilingualContentService_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="MultilingualContentService_descriptor" parent="AlfrescoServiceDescriptor">
        <property name="interface">
            <value>org.alfresco.service.cmr.ml.MultilingualContentService</value>
        </property>
        <property name="description">
            <value>Multilingual Content Service</value>
        </property>
    </bean>
    
    <!-- ConfigurableService -->
    
    <bean id="ConfigurableService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.repo.configuration.ConfigurableService</value>
        </property>
        <property name="target">
            <ref bean="configurableService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ConfigurableService_transaction"/>
            </list>
        </property>
    </bean>
    
    <bean id="ConfigurableService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="is*">${server.transaction.mode.readOnly}</prop>
                <prop key="get*">${server.transaction.mode.readOnly}</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <!-- RegistryService -->
    
    <bean id="RegistryService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.repo.admin.registry.RegistryService</value>
        </property>
        <property name="target">
            <ref bean="registryService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="RegistryService_transaction"/>
            </list>
        </property>
    </bean>
    
    <bean id="RegistryService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="get*">${server.transaction.mode.readOnly}</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <!-- ModuleService -->
    
    <bean id="ModuleService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.service.cmr.module.ModuleService</value>
        </property>
        <property name="target">
            <ref bean="moduleService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <idref local="ModuleService_transaction"/>
            </list>
        </property>
    </bean>
    
    <bean id="ModuleService_transaction" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="get*">${server.transaction.mode.readOnly}</prop>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
</beans>
