<?xml version="1.0"?>

<beans
	default-destroy-method="destroy"
	default-init-method="afterPropertiesSet"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>

	<!-- Advice -->

	<aop:config>
		<aop:aspect ref="messagingProxyAdvice">
			<aop:around pointcut="bean(com.liferay.portal.scheduler.SchedulerEngineProxyBean)" method="invoke" />
		</aop:aspect>
	</aop:config>

	<!-- Proxy -->

	<bean id="com.liferay.portal.scheduler.ClusterSchedulerEngineService" class="com.liferay.portal.scheduler.ClusterSchedulerEngine" factory-method="createClusterSchedulerEngine" >
		<constructor-arg name="schedulerEngine" ref="com.liferay.portal.scheduler.SchedulerEngineProxyBean" />
	</bean>
	<bean id="com.liferay.portal.scheduler.SchedulerEngineProxyBean" class="com.liferay.portal.scheduler.SchedulerEngineProxyBean">
		<property name="singleDestinationSynchronousMessageSender">
			<bean class="com.liferay.portal.kernel.messaging.sender.DefaultSingleDestinationSynchronousMessageSender">
				<property name="destinationName" value="liferay/scheduler_engine" />
				<property name="synchronousMessageSender" ref="com.liferay.portal.kernel.messaging.sender.DirectSynchronousMessageSender" />
			</bean>
		</property>
		<property name="singleDestinationMessageSender">
			<bean class="com.liferay.portal.kernel.messaging.sender.DefaultSingleDestinationMessageSender">
				<property name="destinationName" value="liferay/scheduler_engine" />
				<property name="messageSender" ref="com.liferay.portal.kernel.messaging.sender.MessageSender" />
			</bean>
		</property>
	</bean>

	<!-- Util -->

	<bean class="com.liferay.portal.kernel.scheduler.SchedulerEngineUtil">
		<property name="schedulerEngine" ref="com.liferay.portal.scheduler.ClusterSchedulerEngineService" />
	</bean>

	<!-- Messaging -->

	<bean id="destination.scheduler_dispatch" class="com.liferay.portal.kernel.messaging.ParallelDestination">
		<property name="name" value="liferay/scheduler_dispatch" />
	</bean>
	<bean id="destination.scheduler_engine" class="com.liferay.portal.kernel.messaging.ParallelDestination">
		<property name="name" value="liferay/scheduler_engine" />
	</bean>
	<bean id="destination.scheduler_scripting" class="com.liferay.portal.kernel.messaging.ParallelDestination">
		<property name="name" value="liferay/scheduler_scripting" />
	</bean>
	<bean id="messageListener.scheduler_engine" class="com.liferay.portal.kernel.messaging.proxy.ProxyMessageListener">
		<property name="manager">
			<bean class="com.liferay.portal.scheduler.quartz.QuartzSchedulerEngine" />
		</property>
	</bean>
	<bean id="messageListener.scheduler_scripting" class="com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper">
		<property name="groupName" value="com.liferay.portal.scheduler.messaging.ScriptingMessageListener" />
		<property name="jobName" value="com.liferay.portal.scheduler.messaging.ScriptingMessageListener" />
		<property name="messageListener">
			<bean class="com.liferay.portal.scheduler.messaging.ScriptingMessageListener" />
		</property>
	</bean>
	<bean id="messagingConfigurator.scheduler" class="com.liferay.portal.kernel.messaging.config.DefaultMessagingConfigurator">
		<property name="destinations">
			<list>
				<ref bean="destination.scheduler_dispatch" />
				<ref bean="destination.scheduler_engine" />
				<ref bean="destination.scheduler_scripting" />
			</list>
		</property>
		<property name="messageBus">
			<ref bean="com.liferay.portal.kernel.messaging.MessageBus" />
		</property>
		<property name="messageListeners">
			<map key-type="java.lang.String" value-type="java.util.List">
				<entry key="liferay/scheduler_engine">
					<list value-type="com.liferay.portal.kernel.messaging.MessageListener">
						<ref bean="messageListener.scheduler_engine" />
					</list>
				</entry>
				<entry key="liferay/scheduler_scripting">
					<list value-type="com.liferay.portal.kernel.messaging.MessageListener">
						<ref bean="messageListener.scheduler_scripting" />
					</list>
				</entry>
			</map>
		</property>
	</bean>
</beans>