org.springframework.integration.jdbc
Class StoredProcPollingChannelAdapter

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.jdbc.StoredProcPollingChannelAdapter
All Implemented Interfaces:
BeanFactoryAware, BeanNameAware, InitializingBean, NamedComponent, MessageSource<java.lang.Object>

public class StoredProcPollingChannelAdapter
extends IntegrationObjectSupport
implements MessageSource<java.lang.Object>

A polling channel adapter that creates messages from the payload returned by executing a stored procedure or Sql function. Optionally an update can be executed after the execution of the Stored Procedure or Function in order to update processed rows.

Since:
2.1

Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Constructor Summary
StoredProcPollingChannelAdapter(javax.sql.DataSource dataSource, java.lang.String storedProcedureName)
          Constructor taking DataSource from which the DB Connection can be obtained and the stored procedure name to execute.
 
Method Summary
protected  java.util.Map<java.lang.String,?> doPoll()
           
 java.lang.String getComponentType()
          Subclasses may implement this method to provide component type information.
protected  void onInit()
          Subclasses may implement this for initialization logic.
 Message<java.lang.Object> receive()
          Executes the query.
 void setExpectSingleResult(boolean expectSingleResult)
          This parameter indicates that only one result object shall be returned from the Stored Procedure/Function Call.
 void setFunction(boolean isFunction)
          Indicates whether a Stored Procedure or a Function is being executed.
 void setIgnoreColumnMetaData(boolean ignoreColumnMetaData)
           
 void setProcedureParameters(java.util.List<ProcedureParameter> procedureParameters)
           
 void setReturningResultSetRowMappers(java.util.Map<java.lang.String,RowMapper<?>> returningResultSetRowMappers)
          Does your stored procedure return one or more result sets? If so, you can use the provided method for setting the respective Rowmappers.
 void setReturnValueRequired(boolean returnValueRequired)
           
 void setSqlParameters(java.util.List<SqlParameter> sqlParameters)
          Explicit declarations are necessary if the database you use is not a Spring-supported database.
 void setSqlParameterSourceFactory(SqlParameterSourceFactory sqlParameterSourceFactory)
           
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getComponentName, getConversionService, getTaskScheduler, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

StoredProcPollingChannelAdapter

public StoredProcPollingChannelAdapter(javax.sql.DataSource dataSource,
                                       java.lang.String storedProcedureName)
Constructor taking DataSource from which the DB Connection can be obtained and the stored procedure name to execute.

Parameters:
dataSource - used to create a SimpleJdbcCall
storedProcedureName - Name of the Stored Procedure or Function to execute
Method Detail

onInit

protected void onInit()
               throws java.lang.Exception
Description copied from class: IntegrationObjectSupport
Subclasses may implement this for initialization logic.

Overrides:
onInit in class IntegrationObjectSupport
Throws:
java.lang.Exception

receive

public Message<java.lang.Object> receive()
Executes the query. If a query result set contains one or more rows, the Message payload will contain either a List of Maps for each row or, if a RowMapper has been provided, the values mapped from those rows. If the query returns no rows, this method will return null.

Specified by:
receive in interface MessageSource<java.lang.Object>

doPoll

protected java.util.Map<java.lang.String,?> doPoll()

getComponentType

public java.lang.String getComponentType()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this method to provide component type information.

Specified by:
getComponentType in interface NamedComponent
Overrides:
getComponentType in class IntegrationObjectSupport

setSqlParameterSourceFactory

public void setSqlParameterSourceFactory(SqlParameterSourceFactory sqlParameterSourceFactory)
Parameters:
sqlParameterSourceFactory -

setSqlParameters

public void setSqlParameters(java.util.List<SqlParameter> sqlParameters)
Explicit declarations are necessary if the database you use is not a Spring-supported database. Currently Spring supports metadata lookup of stored procedure calls for the following databases: , , We also support metadata lookup of stored functions for the following databases: See also: http://static.springsource.org/spring/docs/3.1.0.M2/spring-framework-reference/html/jdbc.html


setReturningResultSetRowMappers

public void setReturningResultSetRowMappers(java.util.Map<java.lang.String,RowMapper<?>> returningResultSetRowMappers)
Does your stored procedure return one or more result sets? If so, you can use the provided method for setting the respective Rowmappers.


setIgnoreColumnMetaData

public void setIgnoreColumnMetaData(boolean ignoreColumnMetaData)
Parameters:
ignoreColumnMetaData -

setReturnValueRequired

public void setReturnValueRequired(boolean returnValueRequired)
Parameters:
returnValueRequired -

setProcedureParameters

public void setProcedureParameters(java.util.List<ProcedureParameter> procedureParameters)

setFunction

public void setFunction(boolean isFunction)
Indicates whether a Stored Procedure or a Function is being executed. The default value is false.

Parameters:
isFunction - If set to true an Sql Function is executed rather than a Stored Procedure.

setExpectSingleResult

public void setExpectSingleResult(boolean expectSingleResult)
This parameter indicates that only one result object shall be returned from the Stored Procedure/Function Call. If set to true, a resultMap that contains only 1 element, will have that 1 element extracted and returned as payload. If the resultMap contains more than 1 element and expectSingleResult is true, then a MessagingException is thrown. Otherwise the complete resultMap is returned as the Message payload. Important Note: Several databases such as H2 are not fully supported. The H2 database, for example, does not fully support the CallableStatement semantics and when executing function calls against H2, a result list is returned rather than a single value. Therefore, even if you set expectSingleResult = true, you may end up with a collection being returned.

Parameters:
expectSingleResult -