<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:sec="http://cxf.apache.org/configuration/security"
       xmlns:wsa="http://cxf.apache.org/ws/addressing" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:t="http://dnetlib.eu/springbeans/t"
       xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:util="http://www.springframework.org/schema/util"
       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://cxf.apache.org/ws/addressing http://cxf.apache.org/schemas/ws-addr-conf.xsd
                                    http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
                                    http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
                            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
                            http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd">

	<bean id="actionManagerService" class="eu.dnetlib.actionmanager.ActionManagerServiceImpl"
		init-method="start" p:notificationHandler-ref="actionManagerNotificationHandler"
		destroy-method="stop" />
		
	<bean
		id="actionManagerNotificationHandler"
		class="eu.dnetlib.enabling.tools.blackboard.BlackboardServerExecutorNotificationHandler"
		p:blackboardExecutor-ref="actionManagerBlackboardExecutor" />
	
	<bean id="actionManagerBlackboardExecutor"
		class="eu.dnetlib.enabling.tools.blackboard.BlackboardServerActionExecutor"
		p:blackboardHandler-ref="blackboardHandler"
		p:actionType="eu.dnetlib.actionmanager.blackboard.ActionManagerActions"
		p:incomplete="false">
		<property name="actionMap">
			<map>
				<entry key="GARBAGE_HDFS">
					<bean class="eu.dnetlib.actionmanager.blackboard.GarbageActionManagerActionFromHDFS"/>
				</entry>
				<entry key="PROMOTE_FROM_HDFS">
					<bean class="eu.dnetlib.actionmanager.blackboard.PromoteActionManagerActionFromHDFS"/>
				</entry>

			</map>
		</property>
		
	</bean>

	<!-- M/R Job launcher -->
	<bean id="actionmanagerHbaseJobLauncher" class="eu.dnetlib.actionmanager.blackboard.JobLauncher"
		p:actionTable="${hbase.actions.table}"
		p:dataTable="${hbase.mapred.datatable}" 
		p:infomationServiceClient-ref="actionmanagerISClient"/>
		
	<!-- endpoints -->
	<jaxws:endpoint id="actionManagerServiceEndpoint"
		implementor="#actionManagerService" implementorClass="eu.dnetlib.actionmanager.rmi.ActionManagerService"
		address="/actionManager" />
	
	<template:instance name="serviceRegistrationManager"
		t:serviceRegistrationManagerClass="eu.dnetlib.enabling.tools.registration.ValidatingServiceRegistrationManagerImpl"
		t:name="actionManagerServiceRegistrationManager" t:service="actionManagerService"
		t:endpoint="actionManagerServiceEndpoint" t:jobScheduler="jobScheduler"
		t:serviceRegistrator="actionmanagerServiceRegistrator" />
		
	<bean id="actionmanagerServiceRegistrator"
		class="eu.dnetlib.enabling.tools.registration.BlackboardServiceRegistrator"
		p:serviceLocator-ref="uniqueServiceLocator"
		p:serviceNameResolver-ref="defaultServiceNameResolver"
		p:hnmLocator-ref="${services.registration.default.hnmlocator}"
		p:eprBuilder-ref="jaxwsEndpointReferenceBuilder">
		<property name="serviceProperties">
			<map>
				<entry key="garbageRetainThreshold" value="${services.actionmanager.garbage.retain.threshold}"/>
				<entry key="garbageTimeMargin" value="${services.actionmanager.garbage.time.maring}" />
				<entry key="basePath" value="${services.actionmanager.basePath}" />
			</map>
		</property>
	</bean>				

	<!-- Information Service Client -->
	<bean id="actionmanagerISClient" class="eu.dnetlib.actionmanager.is.ISClient"
		p:actionManagerSetDsTemplate-ref="actionManagerSetDsTemplate"
		p:endpoint-ref="actionManagerServiceEndpoint" p:eprBuilder-ref="jaxwsEndpointReferenceBuilder" />

	<bean id="actionManagerSetDsTemplate"
		class="eu.dnetlib.springutils.stringtemplate.StringTemplateFactory"
		p:template="classpath:/eu/dnetlib/actionmanager/tmpl/actionManagerSetDS.xml.tmpl"
		scope="prototype" />


</beans>
