Author: bvahdat Date: Mon Aug 6 19:25:57 2012 New Revision: 1369934 URL: http://svn.apache.org/viewvc?rev=1369934&view=rev Log: Refactored to avoid code-duplication (inside the try/catch/finally blocks) for the transaction demarcation of the doXXX methods.
Modified: camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java Modified: camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java?rev=1369934&r1=1369933&r2=1369934&view=diff ============================================================================== --- camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java (original) +++ camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java Mon Aug 6 19:25:57 2012 @@ -24,7 +24,6 @@ import org.apache.camel.impl.DefaultProd import org.apache.camel.util.ExchangeHelper; import org.apache.camel.util.ObjectHelper; import org.apache.ibatis.session.SqlSession; -import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,39 +43,32 @@ public class MyBatisProducer extends Def } public void process(Exchange exchange) throws Exception { - switch (endpoint.getStatementType()) { - case SelectOne: - doSelectOne(exchange); break; - case SelectList: - doSelectList(exchange); break; - case Insert: - doInsert(exchange); break; - case InsertList: - doInsertList(exchange); break; - case Update: - doUpdate(exchange); break; - case Delete: - doDelete(exchange); break; - default: - throw new IllegalArgumentException("Unsupported statementType: " + endpoint.getStatementType()); - } - } + SqlSession session = endpoint.getSqlSessionFactory().openSession(); - private void doSelectOne(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - LOG.trace("SelectOne: {} using statement: {}", in, statement); - result = session.selectOne(statement, in); - } else { - LOG.trace("SelectOne using statement: {}", statement); - result = session.selectOne(statement); + switch (endpoint.getStatementType()) { + case SelectOne: + doSelectOne(exchange, session); + break; + case SelectList: + doSelectList(exchange, session); + break; + case Insert: + doInsert(exchange, session); + break; + case InsertList: + doInsertList(exchange, session); + break; + case Update: + doUpdate(exchange, session); + break; + case Delete: + doDelete(exchange, session); + break; + default: + throw new IllegalArgumentException("Unsupported statementType: " + endpoint.getStatementType()); } - doProcessResult(exchange, result); session.commit(); } catch (Exception e) { session.rollback(); @@ -86,143 +78,103 @@ public class MyBatisProducer extends Def } } - private void doSelectList(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); - try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - LOG.trace("SelectList: {} using statement: {}", in, statement); - result = session.selectList(statement, in); - } else { - LOG.trace("SelectList using statement: {}", statement); - result = session.selectList(statement); - } - - doProcessResult(exchange, result); - session.commit(); - } catch (Exception e) { - session.rollback(); - throw e; - } finally { - session.close(); + private void doSelectOne(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + LOG.trace("SelectOne: {} using statement: {}", in, statement); + result = session.selectOne(statement, in); + } else { + LOG.trace("SelectOne using statement: {}", statement); + result = session.selectOne(statement); } - } - private void doInsert(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); - try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - // lets handle arrays or collections of objects - Iterator<?> iter = ObjectHelper.createIterator(in); - while (iter.hasNext()) { - Object value = iter.next(); - LOG.trace("Inserting: {} using statement: {}", value, statement); - result = session.insert(statement, value); - doProcessResult(exchange, result); - } - } else { - LOG.trace("Inserting using statement: {}", statement); - result = session.insert(statement); - doProcessResult(exchange, result); - } + doProcessResult(exchange, result); + } - session.commit(); - } catch (Exception e) { - session.rollback(); - throw e; - } finally { - session.close(); + private void doSelectList(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + LOG.trace("SelectList: {} using statement: {}", in, statement); + result = session.selectList(statement, in); + } else { + LOG.trace("SelectList using statement: {}", statement); + result = session.selectList(statement); } + + doProcessResult(exchange, result); } - private void doInsertList(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); - try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - // just pass in the body as Object and allow MyBatis to iterate using its own foreach statement - LOG.trace("Inserting: {} using statement: {}", in, statement); - result = session.insert(statement, in); - doProcessResult(exchange, result); - } else { - LOG.trace("Inserting using statement: {}", statement); - result = session.insert(statement); + private void doInsert(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + // lets handle arrays or collections of objects + Iterator<?> iter = ObjectHelper.createIterator(in); + while (iter.hasNext()) { + Object value = iter.next(); + LOG.trace("Inserting: {} using statement: {}", value, statement); + result = session.insert(statement, value); doProcessResult(exchange, result); } + } else { + LOG.trace("Inserting using statement: {}", statement); + result = session.insert(statement); + doProcessResult(exchange, result); + } + } - session.commit(); - } catch (Exception e) { - session.rollback(); - throw e; - } finally { - session.close(); + private void doInsertList(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + // just pass in the body as Object and allow MyBatis to iterate using its own foreach statement + LOG.trace("Inserting: {} using statement: {}", in, statement); + result = session.insert(statement, in); + doProcessResult(exchange, result); + } else { + LOG.trace("Inserting using statement: {}", statement); + result = session.insert(statement); + doProcessResult(exchange, result); } } - private void doUpdate(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); - try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - // lets handle arrays or collections of objects - Iterator<?> iter = ObjectHelper.createIterator(in); - while (iter.hasNext()) { - Object value = iter.next(); - LOG.trace("Updating: {} using statement: {}", value, statement); - result = session.update(statement, value); - doProcessResult(exchange, result); - } - } else { - LOG.trace("Updating using statement: {}", statement); - result = session.update(statement); + private void doUpdate(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + // lets handle arrays or collections of objects + Iterator<?> iter = ObjectHelper.createIterator(in); + while (iter.hasNext()) { + Object value = iter.next(); + LOG.trace("Updating: {} using statement: {}", value, statement); + result = session.update(statement, value); doProcessResult(exchange, result); } - - session.commit(); - } catch (Exception e) { - session.rollback(); - throw e; - } finally { - session.close(); + } else { + LOG.trace("Updating using statement: {}", statement); + result = session.update(statement); + doProcessResult(exchange, result); } } - private void doDelete(Exchange exchange) throws Exception { - SqlSessionFactory client = endpoint.getSqlSessionFactory(); - SqlSession session = client.openSession(); - try { - Object result; - Object in = exchange.getIn().getBody(); - if (in != null) { - // lets handle arrays or collections of objects - Iterator<?> iter = ObjectHelper.createIterator(in); - while (iter.hasNext()) { - Object value = iter.next(); - LOG.trace("Deleting: {} using statement: {}", value, statement); - result = session.delete(statement, value); - doProcessResult(exchange, result); - } - } else { - LOG.trace("Deleting using statement: {}", statement); - result = session.delete(statement); + private void doDelete(Exchange exchange, SqlSession session) throws Exception { + Object result; + Object in = exchange.getIn().getBody(); + if (in != null) { + // lets handle arrays or collections of objects + Iterator<?> iter = ObjectHelper.createIterator(in); + while (iter.hasNext()) { + Object value = iter.next(); + LOG.trace("Deleting: {} using statement: {}", value, statement); + result = session.delete(statement, value); doProcessResult(exchange, result); } - - session.commit(); - } catch (Exception e) { - session.rollback(); - throw e; - } finally { - session.close(); + } else { + LOG.trace("Deleting using statement: {}", statement); + result = session.delete(statement); + doProcessResult(exchange, result); } }