<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:int="http://www.springframework.org/schema/integration"
	xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
		http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
		http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

	<import resource="classpath:META-INF/spring/integration/spring-integration-database-context.xml"/>

	<tx:annotation-driven transaction-manager="transactionManager"/>

	<int:channel id="findCoffeeProcedureRequestChannel" />
	<int:channel id="findAllProcedureRequestChannel" />

	<int:gateway id="gateway" default-request-timeout="4000"
		default-reply-timeout="4000"
		service-interface="org.springframework.integration.service.CoffeeService">
		<int:method name="findCoffeeBeverage" request-channel="findCoffeeProcedureRequestChannel" />
		<int:method name="findAllCoffeeBeverages" request-channel="findAllProcedureRequestChannel" />
	</int:gateway>

	<int-jdbc:stored-proc-outbound-gateway
		id="outbound-gateway-storedproc-find-coffee" data-source="dataSource"
		request-channel="findCoffeeProcedureRequestChannel" is-function="true"
		stored-procedure-name="FIND_COFFEE"
		expect-single-result="true">
		<int-jdbc:sql-parameter-definition name="coffee_name" type="INTEGER" direction="IN"/>
		<int-jdbc:parameter name="coffee_id" expression="payload" />
	</int-jdbc:stored-proc-outbound-gateway>

	<int-jdbc:stored-proc-outbound-gateway
		id="outbound-gateway-storedproc-find-all" data-source="dataSource"
		request-channel="findAllProcedureRequestChannel" is-function="true"
		stored-procedure-name="FIND_ALL_COFFEE_BEVERAGES"
		expect-single-result="true" >
		<int-jdbc:returning-resultset name="ref" row-mapper="coffeBeverageMapper" />
	</int-jdbc:stored-proc-outbound-gateway>

	<int-jdbc:stored-proc-inbound-channel-adapter auto-startup="true"
		id="inbound-channel-adapter-find-all" data-source="dataSource"
		channel="loggit" expect-single-result="true" is-function="true"
		stored-procedure-name="FIND_ALL_COFFEE_BEVERAGES">
		<int-jdbc:returning-resultset name="ref" row-mapper="coffeBeverageMapper"/>
	</int-jdbc:stored-proc-inbound-channel-adapter>

	<int:logging-channel-adapter id="loggit" log-full-message="true"/>

	<bean id="coffeBeverageMapper" class="org.springframework.integration.samples.storedprocedure.support.CoffeBeverageMapper"/>

	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>

	<int:poller default="true" fixed-rate="50000"><int:transactional/></int:poller>
</beans>
