Example usage for org.springframework.integration.jdbc StoredProcExecutor executeStoredProcedure

List of usage examples for org.springframework.integration.jdbc StoredProcExecutor executeStoredProcedure

Introduction

In this page you can find the example usage for org.springframework.integration.jdbc StoredProcExecutor executeStoredProcedure.

Prototype

public Map<String, Object> executeStoredProcedure(Message<?> message) 

Source Link

Document

Execute a Stored Procedure or Function - Use with Message is available to extract ProcedureParameter values from it.

Usage

From source file:org.springframework.integration.jdbc.StoredProcExecutorTests.java

@Test
public void testStoredProcExecutorWithNonResolvingExpression() throws Exception {

    final DataSource datasource = mock(DataSource.class);

    final StoredProcExecutor storedProcExecutor = new StoredProcExecutor(datasource);

    final ExpressionFactoryBean efb = new ExpressionFactoryBean("headers['stored_procedure_name']");
    efb.afterPropertiesSet();/*w w w. ja  v  a2  s  .  c om*/
    final Expression expression = efb.getObject();

    storedProcExecutor.setStoredProcedureNameExpression(expression);
    storedProcExecutor.setBeanFactory(mock(BeanFactory.class));

    storedProcExecutor.afterPropertiesSet();

    this.mockTheOperationsCache(storedProcExecutor);

    //This should work

    storedProcExecutor.executeStoredProcedure(
            MessageBuilder.withPayload("test").setHeader("stored_procedure_name", "123").build());

    //This should cause an exception

    try {
        storedProcExecutor.executeStoredProcedure(
                MessageBuilder.withPayload("test").setHeader("some_other_header", "123").build());
    } catch (IllegalArgumentException e) {
        assertEquals(
                "Unable to resolve Stored Procedure/Function name for the provided Expression 'headers['stored_procedure_name']'.",
                e.getMessage());
        return;
    }

    fail("IllegalArgumentException expected.");

}

From source file:org.springframework.integration.jdbc.StoredProcExecutorTests.java

@Test
public void testStoredProcExecutorJdbcCallOperationsCache() throws Exception {

    final DataSource datasource = mock(DataSource.class);

    final StoredProcExecutor storedProcExecutor = new StoredProcExecutor(datasource);

    final ExpressionFactoryBean efb = new ExpressionFactoryBean("headers['stored_procedure_name']");
    efb.afterPropertiesSet();/*  w  w  w. ja v  a2 s .co  m*/
    final Expression expression = efb.getObject();

    storedProcExecutor.setStoredProcedureNameExpression(expression);
    storedProcExecutor.setBeanFactory(mock(BeanFactory.class));

    storedProcExecutor.afterPropertiesSet();

    this.mockTheOperationsCache(storedProcExecutor);

    for (int i = 1; i <= 3; i++) {
        storedProcExecutor.executeStoredProcedure(
                MessageBuilder.withPayload("test").setHeader("stored_procedure_name", "123").build());
    }

    final CacheStats stats = (CacheStats) storedProcExecutor.getJdbcCallOperationsCacheStatistics();
    LOGGER.info(stats);
    LOGGER.info(stats.totalLoadTime() / 1000 / 1000);

    assertEquals(stats.hitCount(), 2);
    assertEquals(stats.missCount(), 1);
    assertEquals(stats.loadCount(), 1);

}

From source file:org.springframework.integration.jdbc.StoredProcExecutorTests.java

@Test
public void testSetJdbcCallOperationsCacheSize() throws Exception {

    final DataSource datasource = mock(DataSource.class);

    final StoredProcExecutor storedProcExecutor = new StoredProcExecutor(datasource);

    storedProcExecutor.setJdbcCallOperationsCacheSize(0);

    final ExpressionFactoryBean efb = new ExpressionFactoryBean("headers['stored_procedure_name']");
    efb.afterPropertiesSet();/* w w w  .j  a v  a 2s. co m*/
    final Expression expression = efb.getObject();

    storedProcExecutor.setStoredProcedureNameExpression(expression);
    storedProcExecutor.setBeanFactory(mock(BeanFactory.class));

    storedProcExecutor.afterPropertiesSet();

    this.mockTheOperationsCache(storedProcExecutor);

    for (int i = 1; i <= 10; i++) {
        storedProcExecutor.executeStoredProcedure(
                MessageBuilder.withPayload("test").setHeader("stored_procedure_name", "123").build());
    }

    final CacheStats stats = (CacheStats) storedProcExecutor.getJdbcCallOperationsCacheStatistics();
    LOGGER.info(stats);
    assertEquals("Expected a cache misscount of 10", 10, stats.missCount());

}