You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bv...@apache.org on 2012/08/06 21:25:57 UTC

svn commit: r1369934 - /camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java

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);
         }
     }