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

<!-- This file must be split up once the number and spread of beans increases qweqwe -->
<beans>

    <import resource="classpath:alfresco/public-services-context.xml" />
    <import resource="classpath:alfresco/model-specific-services-context.xml" />
    <import resource="classpath:alfresco/action-services-context.xml" />
    <import resource="classpath:alfresco/rule-services-context.xml" />
    <import resource="classpath:alfresco/node-services-context.xml" />
    <import resource="classpath:alfresco/scheduled-jobs-context.xml" />
    <import resource="classpath:alfresco/network-protocol-context.xml" />
    <import resource="classpath:alfresco/content-services-context.xml" />
    <import resource="classpath:alfresco/hibernate-context.xml" />
    <import resource="classpath:alfresco/ownable-services-context.xml" />
    <import resource="classpath:alfresco/template-services-context.xml" />
    <import resource="classpath:alfresco/index-recovery-context.xml" />
    <import resource="classpath:alfresco/extension/extension-context.xml" />
    <import resource="classpath:alfresco/authority-services-context.xml" />
    <import resource="classpath:alfresco/authentication-services-context.xml" />


	 <!-- Descriptor Service -->

    <bean id="descriptorComponent" class="org.alfresco.repo.descriptor.DescriptorServiceImpl" init-method="init">
       <property name="serverDescriptor">
	       <value>classpath:alfresco/version.properties</value>
       </property>
       <property name="systemBootstrap">
           <ref local="systemBootstrap"/>
       </property>
       <property name="transactionService">
           <ref bean="transactionComponent"/>
       </property>
       <property name="namespaceService">
           <ref bean="namespaceService"/>
       </property>
       <property name="nodeService">
           <ref bean="nodeService"/>
       </property>
       <property name="searchService">
           <ref bean="searchService"/>
       </property>
    </bean>

    <!--                    -->
    <!--  PERSISTENCE       -->
    <!--                    -->

    <!-- load common properties -->
    <bean id="repository-properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders">
            <value>true</value>
        </property>
        <property name="locations">
            <list>
                <value>classpath:alfresco/repository.properties</value>
                <value>classpath:alfresco/version.properties</value>
                <value>classpath:alfresco/domain/transaction.properties</value>
            </list>
        </property>
    </bean>

    <!-- Datasource bean -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
            <value>${db.driver}</value>
        </property>
        <property name="url">
            <value>${db.url}</value>
        </property>
        <property name="username">
            <value>${db.username}</value>
        </property>
        <property name="password">
            <value>${db.password}</value>
        </property>
        <property name="initialSize" >
            <value>20</value>
        </property>
        <property name="maxActive" >
            <value>20</value>
        </property>
    </bean>

    <!-- transaction service -->
    <bean id="transactionComponent" class="org.alfresco.repo.transaction.TransactionComponent">
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="allowWrite">
            <value>${server.transaction.allow-writes}</value>
        </property>
    </bean>

    <!-- use around method calls to debug - see class comments for details -->
    <bean id="methodCallLogAdvice" class="org.alfresco.util.debug.MethodCallLogAdvice" />

    <!--                        -->
    <!-- I18N                   -->
    <!--                        -->

    <bean id="resourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
    	<property name="resourceBundles">
    		<list>
    			<value>alfresco.messages.version-service</value>
    			<value>alfresco.messages.permissions-service</value>
    			<value>alfresco.messages.content-service</value>
    			<value>alfresco.messages.coci-service</value>
    			<value>alfresco.messages.template-service</value>
    			<value>alfresco.messages.lock-service</value>    			
    		</list>
    	</property>
    </bean>


    <!--                        -->
    <!-- MAIL SERVICE           -->
    <!--                        -->

    <bean id="mailService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host">
            <value>${mail.host}</value>
        </property>
        <property name="port">
            <value>${mail.port}</value>
        </property>
        <property name="username">
            <value>${mail.username}</value>
        </property>
        <property name="password">
            <value>${mail.password}</value>
        </property>
    </bean>

    <!--                        -->
    <!-- CONFIGURATION SERVICES -->
    <!--                        -->

    <bean id="repoConfigService" class="org.alfresco.config.xml.XMLConfigService" init-method="init">
        <constructor-arg>
            <bean class="org.alfresco.config.source.ClassPathConfigSource">
                <constructor-arg>
                    <list>
                        <value>alfresco/mimetype-map.xml</value>
                    </list>
                </constructor-arg>
            </bean>
        </constructor-arg>
    </bean>

    <!--                         -->
    <!-- Indexing and Search API -->
    <!--                         -->

    <bean id="indexerComponent" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.repo.search.Indexer</value>
        </property>
        <property name="target">
            <bean class="org.alfresco.repo.search.IndexerComponent">
                <property name="indexerAndSearcherFactory">
                    <ref bean="indexerAndSearcherFactory" />
                </property>
            </bean>
        </property>
        <!-- use for debugging
        <property name="interceptorNames">
            <list>
                <idref bean="methodCallLogAdvice" />
                <idref local="indexerComponent_PerformanceMonitorAdvice" />
            </list>
        </property>
        -->
    </bean>

    <bean id="indexerComponent_PerformanceMonitorAdvice" class="org.alfresco.util.perf.PerformanceMonitorAdvice">
        <constructor-arg>
            <value>indexerComponent</value>
        </constructor-arg>
    </bean>

    <bean id="searchService" class="org.alfresco.repo.search.SearcherComponent">
        <property name="indexerAndSearcherFactory">
            <ref bean="indexerAndSearcherFactory" />
        </property>
    </bean>


    <!--                                                                               -->
    <!-- Generic factory for making indexers and searchers for a given protol or store -->
    <!--                                                                               -->
    <bean id="indexerAndSearcherFactory" class="org.alfresco.repo.service.StoreRedirectorProxyFactory">
        <property name="proxyInterface">
            <value>org.alfresco.repo.search.IndexerAndSearcher</value>
        </property>
        <property name="defaultBinding">
            <ref bean="luceneIndexerAndSearcherFactory"></ref>
        </property>
        <property name="redirectedProtocolBindings">
            <map>
                <entry key="workspace">
                    <ref bean="luceneIndexerAndSearcherFactory"></ref>
                </entry>
                <entry key="versionStore">
                    <ref bean="luceneIndexerAndSearcherFactory"></ref>
                </entry>
            </map>
        </property>
    </bean>

    <bean id="categoryService" class="org.alfresco.repo.service.StoreRedirectorProxyFactory">
        <property name="proxyInterface">
            <value>org.alfresco.service.cmr.search.CategoryService</value>
        </property>
        <property name="defaultBinding">
            <ref bean="luceneCategoryService"></ref>
        </property>
        <property name="redirectedProtocolBindings">
            <map>
                <entry key="workspace">
                    <ref bean="luceneCategoryService"></ref>
                </entry>
                <entry key="versionStore">
                    <ref bean="luceneCategoryService"></ref>
                </entry>
            </map>
        </property>
    </bean>


    <!-- Indexer and searchers for lucene -->
    <bean id="luceneIndexerAndSearcherFactory"
        class="org.alfresco.repo.search.impl.lucene.LuceneIndexerAndSearcherFactory">
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="nameSpaceService">
            <ref bean="namespaceService" />
        </property>
        <property name="luceneIndexLock">
            <ref bean="luceneIndexLock" />
        </property>
        <property name="luceneFullTextSearchIndexer">
            <ref bean="LuceneFullTextSearchIndexer" />
        </property>
        <property name="indexRootLocation">
            <value>${dir.indexes}</value>
        </property>
        <property name="contentService">
            <ref bean="contentService" />
        </property>
        <property name="queryRegister">
            <ref bean="queryRegisterComponent" />
        </property>
        <property name="queryMaxClauses">
            <value>${lucene.query.maxClauses}</value>
        </property>
        <property name="indexerBatchSize">
            <value>${lucene.indexer.batchSize}</value>
        </property>
        <property name="indexerMinMergeDocs">
            <value>${lucene.indexer.minMergeDocs}</value>
        </property>
        <property name="indexerMergeFactor">
            <value>${lucene.indexer.mergeFactor}</value>
        </property>
        <property name="indexerMaxMergeDocs">
            <value>${lucene.indexer.maxMergeDocs}</value>
        </property>
        <property name="lockDirectory">
            <value>${dir.indexes.lock}</value>
        </property>
        <property name="indexerMaxFieldLength">
            <value>${lucene.indexer.maxFieldLength}</value>
        </property>
    </bean>

    <!-- Indexer and searchers for lucene -->
    <bean id="luceneCategoryService" class="org.alfresco.repo.search.impl.lucene.LuceneCategoryServiceImpl">
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="namespacePrefixResolver">
            <ref bean="namespaceService" />
        </property>
        <property name="indexerAndSearcher">
            <ref bean="luceneIndexerAndSearcherFactory" />
        </property>
    </bean>

    <!-- Support for locking lucene indexes for deletion and update -->

    <bean id="luceneIndexLock" class="org.alfresco.repo.search.transaction.LuceneIndexLock"></bean>


    <!--                               -->
    <!--  Lock Service           -->
    <!--                               -->

    <bean id="lockService" class="org.alfresco.repo.lock.LockServiceImpl" init-method="initialise">
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="authenticationService">
            <ref bean="authenticationServiceImpl"></ref>
        </property>
        <property name="ownableService">
            <ref bean="ownableService"></ref>
        </property>
        <property name="searchService">
            <ref bean="searchService"></ref>
        </property>
    </bean>

    <!--                               -->
    <!--  Version Service   -->
    <!--                               -->


    <bean id="versionService" class="org.alfresco.repo.version.VersionServiceImpl" init-method="initialise">
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="dbNodeService">
            <ref bean="dbNodeService" />
        </property>
        <property name="versionCounterDaoService">
            <ref bean="versionCounterDaoService" />
        </property>
        <property name="searcher">
            <ref bean="searchService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="policyBehaviourFilter">
            <ref bean="policyBehaviourFilter" />
        </property>
    </bean>

    <bean id="versionNodeService" class="org.alfresco.repo.version.NodeServiceImpl">
        <property name="dbNodeService">
            <ref bean="dbNodeService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
    </bean>

    <bean id="versionCounterDaoService" class="org.alfresco.repo.version.common.counter.hibernate.HibernateVersionCounterDaoServiceImpl">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

    <bean id="versionBootstrap" class="org.alfresco.repo.version.VersionBootstrap" init-method="bootstrap">
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="permissionService">
            <ref bean="permissionService" />
        </property>
    </bean>

    <bean id="versionableAspect" class="org.alfresco.repo.version.VersionableAspect" init-method="init">
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="ruleService">
            <ref bean="ruleService"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="actionService">
            <ref bean="actionService"/>
        </property>
    </bean>

    <!--                 -->
    <!-- Data Dictionary -->
    <!--                 -->

    <bean id="namespaceDAO" class="org.alfresco.repo.dictionary.NamespaceDAOImpl" />

	<bean id="dictionaryModelType" class="org.alfresco.repo.dictionary.DictionaryModelType" init-method="init">
		<property name="dictionaryDAO">
            <ref bean="dictionaryDAO" />
        </property>	
        <property name="namespaceDAO">
            <ref bean="namespaceDAO" />
        </property>
        <property name="nodeService">
        	<ref bean="nodeService"/>
        </property>        
        <property name="contentService">
        	<ref bean="contentService"/>
        </property>
        <property name="policyComponent">
        	<ref bean="policyComponent"/>
        </property>
	</bean>

    <bean id="dictionaryDAO" class="org.alfresco.repo.dictionary.DictionaryDAOImpl">
        <constructor-arg index="0">
            <ref bean="namespaceDAO" />
        </constructor-arg>
    </bean>

    <bean id="dictionaryService" class="org.alfresco.repo.dictionary.DictionaryComponent" depends-on="extension.dictionaryBootstrap">
        <property name="dictionaryDAO">
            <ref bean="dictionaryDAO" />
        </property>
    </bean>

    <bean id="namespaceService" class="org.alfresco.repo.dictionary.DictionaryNamespaceComponent"
        depends-on="dictionaryDAO">
        <property name="namespaceDAO">
            <ref bean="namespaceDAO" />
        </property>
    </bean>

    <bean id="dictionaryBootstrap" class="org.alfresco.repo.dictionary.DictionaryBootstrap" init-method="bootstrap">
        <property name="dictionaryDAO"><ref local="dictionaryDAO"/></property>
        <property name="models">
            <list>
                <value>alfresco/model/dictionaryModel.xml</value>
                <value>alfresco/model/systemModel.xml</value>
                <value>alfresco/model/contentModel.xml</value>
                <value>alfresco/model/applicationModel.xml</value>
                <value>alfresco/model/forumModel.xml</value>

                <!-- Implementation models -->
                <value>org/alfresco/repo/security/authentication/userModel.xml</value>
                <value>org/alfresco/repo/action/actionModel.xml</value>
                <value>org/alfresco/repo/rule/ruleModel.xml</value>
                <value>org/alfresco/repo/version/version_model.xml</value>
            </list>
        </property>
        <property name="labels">
            <list>
                <value>alfresco/model/dataTypeAnalyzers</value>
                <value>alfresco/messages/system-model</value>
                <value>alfresco/messages/dictionary-model</value>
                <value>alfresco/messages/content-model</value>
                <value>alfresco/messages/application-model</value>
                <value>alfresco/messages/forum-model</value>
            </list>
        </property>
    </bean>

	<bean id="dictionaryRepositoryBootstrap" class="org.alfresco.repo.dictionary.DictionaryRepositoryBootstrap" init-method="bootstrap">
		<property name="dictionaryDAO">
			<ref local="dictionaryDAO"/>
		</property>
		<property name="contentService">
			<ref bean="contentService"/>
		</property>
		<property name="searchService">
			<ref bean="searchService"/>
		</property>
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
		<property name="authenticationComponent">
			<ref bean="authenticationComponent"/>
		</property>
	</bean>

    <!--                 -->
    <!-- Copy Service    -->
    <!--                 -->

    <!-- Note this uses the node service that enforces permissions so you can only copy what you can see -->

    <bean id="copyService" class="org.alfresco.repo.copy.CopyServiceImpl" init-method="init">
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="ruleService">
            <ref bean="ruleService" />
        </property>
    </bean>

    <!--                           -->
    <!-- CheckOut/CheckIn Service  -->
    <!--                           -->

    <bean id="checkOutCheckInService" class="org.alfresco.repo.coci.CheckOutCheckInServiceImpl">
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="versionService">
            <ref bean="versionService" />
        </property>
        <property name="lockService">
            <ref bean="LockService" />
        </property>
        <property name="copyService">
            <ref bean="CopyService" />
        </property>
        <property name="authenticationService">
            <ref bean="authenticationService" />
        </property>
        <property name="searchService">
            <ref bean="searchService" />
        </property>
        <property name="versionableAspect">
            <ref bean="versionableAspect" />
        </property>
    </bean>

    <bean id="workingCopyAspect" class="org.alfresco.repo.coci.WorkingCopyAspect" init-method="init">
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="lockService">
            <ref bean="LockService" />
        </property>
    </bean>

    <!-- Policy Support -->

    <bean id="policyBehaviourFilter" class="org.alfresco.repo.policy.BehaviourFilterImpl">
		<property name="dictionaryService">
			<ref bean="dictionaryService"/>
	    </property>
    </bean>

    <bean id="policyComponent" class="org.alfresco.repo.policy.PolicyComponentImpl">
        <constructor-arg index="0">
            <ref bean="dictionaryService"/>
        </constructor-arg>
        <property name="behaviourFilter">
            <ref bean="policyBehaviourFilter"/>
        </property>
    </bean>

    <!-- Bean to support full text search -->

    <bean id="LuceneFullTextSearchIndexer"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer</value>
        </property>
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="target">
            <bean class="org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl">
                <property name="luceneIndexerAndSearcherFactory">
                    <ref bean="luceneIndexerAndSearcherFactory" />
                </property>
            </bean>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>
    
    <!-- Bean to backup Lucene indexes -->
    <bean id="luceneIndexBackupComponent"
          class="org.alfresco.repo.search.impl.lucene.LuceneIndexerAndSearcherFactory$LuceneIndexBackupComponent">
        <property name="transactionService">
            <ref bean="transactionComponent" />
        </property>
        <property name="factory">
            <ref bean="luceneIndexerAndSearcherFactory" />
        </property>
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="targetLocation">
            <value>${dir.root}/backup-lucene-indexes</value>
        </property>
    </bean>

    <!--                -->
    <!-- Thread Pool    -->
    <!--                -->
    
    <bean id="threadPoolExecutor" class="org.alfresco.util.ThreadPoolExecutorFactoryBean" singleton="true" >
        <property name="corePoolSize">
            <value>5</value>
        </property>
        <property name="maximumPoolSize">
            <value>20</value>
        </property>
        <property name="keepAliveTime">
            <value>60</value>
        </property>
    </bean>

    <!-- Query Register Component -->

    <bean id="queryRegisterComponent" class="org.alfresco.repo.search.QueryRegisterComponentImpl">
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService" />
        </property>
        <!-- Query collections should be loaded on demand using this component - once loaded thay are available for use -->
    </bean>

    <!-- Security related beans -->

 

    <!-- Importer -->

    <bean id="viewParser" class="org.alfresco.repo.importer.view.ViewParser">
        <property name="namespaceService">
            <ref bean="namespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
    </bean>

    <bean id="importerComponent" class="org.alfresco.repo.importer.ImporterComponent">
        <!-- For now, hard-wire the view parser -->
        <property name="viewParser">
            <ref bean="viewParser" />
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="behaviourFilter">
            <ref bean="policyBehaviourFilter" />
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="searchService">
            <ref bean="SearchService" />
        </property>
        <property name="contentService">
            <ref bean="ContentService" />
        </property>
        <property name="ruleService">
            <ref bean="ruleService" />
        </property>
    </bean>

    <bean id="systemBootstrap" class="org.alfresco.repo.importer.ImporterBootstrap" init-method="bootstrap" depends-on="nodeIndexer, auditableAspect">
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="importerService">
            <ref bean="importerComponent"/>
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="storeUrl">
            <value>${system.store}</value>
        </property>
        <property name="allowWrite">
            <value>${server.transaction.allow-writes}</value>
        </property>
        <property name="mustNotExistStoreUrls">
            <list>
                <value>${spaces.store}</value>
            </list>
        </property>
        <property name="configuration">
            <props>
                <prop key="version.major">${version.major}</prop>
                <prop key="version.minor">${version.minor}</prop>
                <prop key="version.revision">${version.revision}</prop>
                <prop key="version.label">${version.label}</prop>
                <prop key="system.descriptor.childname">${system.descriptor.childname}</prop>
            </props>
        </property>
        <property name="bootstrapViews">
            <list>
                <props>
                    <prop key="path">/</prop>
                    <prop key="location">alfresco/bootstrap/descriptor.xml</prop>
                </props>
            </list>
        </property>
    </bean>

    <bean id="importerBootstrap" class="org.alfresco.repo.importer.ImporterBootstrap" init-method="bootstrap" depends-on="systemBootstrap">
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="importerService">
            <ref bean="importerComponent"/>
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="storeUrl">
            <value>${spaces.store}</value>
        </property>
        <property name="allowWrite">
            <value>${server.transaction.allow-writes}</value>
        </property>
        <property name="configuration">
            <props>
                <prop key="spaces.company_home.childname">${spaces.company_home.childname}</prop>
                <prop key="spaces.dictionary.childname">${spaces.dictionary.childname}</prop>
                <prop key="spaces.templates.childname">${spaces.templates.childname}</prop>
                <prop key="spaces.templates.content.childname">${spaces.templates.content.childname}</prop>
            </props>
        </property>
        <!-- To specify a locale other than the system default, uncomment the following
        <property name="locale">
            <value>en_GB</value>
        </property>
        -->
        <property name="bootstrapViews">
            <list>
                <props>
                    <prop key="path">/</prop>
                    <prop key="location">alfresco/bootstrap/categories.xml</prop>
                </props>
                <props>
                    <prop key="path">/</prop>
                    <prop key="location">alfresco/bootstrap/spaces.xml</prop>
                    <prop key="messages">alfresco/messages/bootstrap-spaces</prop>
                </props>
                <props>
                    <prop key="path">/${spaces.company_home.childname}</prop>
                    <prop key="location">alfresco/bootstrap/tutorial.xml</prop>
                    <prop key="messages">alfresco/messages/bootstrap-tutorial</prop>
                </props>
                <props>
                    <prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.childname}</prop>
                    <prop key="location">alfresco/templates/software_engineering_project.xml</prop>
                    <prop key="messages">alfresco/messages/bootstrap-templates</prop>
                </props>
                <props>
                    <prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.content.childname}</prop>
                    <prop key="location">alfresco/templates/content_template_examples.xml</prop>
                </props>
            </list>
        </property>
    </bean>

    <!-- Exporter -->
    <bean id="exporterComponent" class="org.alfresco.repo.exporter.ExporterComponent">
        <property name="namespaceService">
            <ref bean="namespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="searchService">
            <ref bean="searchService" />
        </property>
        <property name="contentService">
            <ref bean="contentService" />
        </property>
        <property name="descriptorService">
            <ref bean="DescriptorService" />
        </property>
        <property name="authenticationService">
            <ref bean="authenticationService" />
        </property>
    </bean>

    <!-- Audit -->
    <bean id="auditableAspect" class="org.alfresco.repo.audit.AuditableAspect" init-method="init">
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
        <property name="authenticationService">
            <ref bean="authenticationService" />
        </property>
    </bean>

    <!-- Referenceable -->
    <bean id="referenceableAspect" class="org.alfresco.repo.node.ReferenceableAspect" init-method="init">
        <property name="policyComponent">
            <ref bean="policyComponent" />
        </property>
    </bean>

    <!-- Configurable service -->
    <bean id="configurableService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>org.alfresco.repo.configuration.ConfigurableService</value>
        </property>
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="target">
            <bean class="org.alfresco.repo.configuration.ConfigurableServiceImpl">
                <property name="nodeService">
                    <ref bean="nodeService" />
                </property>
            </bean>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="*">${server.transaction.mode.default}</prop>
            </props>
        </property>
    </bean>

    <!-- caching -->
    <bean name="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation">
            <value>classpath:ehcache.xml</value>
        </property>
    </bean>

</beans>
