You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ru...@apache.org on 2010/02/25 19:49:50 UTC

svn commit: r916396 - in /synapse/trunk/java: modules/core/src/main/java/org/apache/synapse/config/xml/ modules/core/src/main/java/org/apache/synapse/mediators/db/ src/site/xdoc/

Author: ruwan
Date: Thu Feb 25 18:49:50 2010
New Revision: 916396

URL: http://svn.apache.org/viewvc?rev=916396&view=rev
Log:
Applying the patch for the issue SYNAPSE-574

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/db/DBReportMediator.java
    synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorFactory.java?rev=916396&r1=916395&r2=916396&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorFactory.java Thu Feb 25 18:49:50 2010
@@ -20,6 +20,7 @@
 package org.apache.synapse.config.xml;
 
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAttribute;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.mediators.db.DBReportMediator;
@@ -29,7 +30,7 @@
 /**
  * Factory for {@link DBReportMediator} instances.
  * <pre>
- * &lt;dbreport&gt;
+ * &lt;dbreport useTransaction="true|false"&gt;
  *   &lt;connection&gt;
  *     &lt;pool&gt;
  *      (
@@ -57,10 +58,21 @@
 public class DBReportMediatorFactory extends AbstractDBMediatorFactory {
 
     private static final QName DBREPORT_Q =
-        new QName(SynapseConstants.SYNAPSE_NAMESPACE, "dbreport");
+            new QName(SynapseConstants.SYNAPSE_NAMESPACE, "dbreport");
+    private static final QName DBREPORT_USE_TX = new QName("useTransaction");
 
     public Mediator createMediator(OMElement elem) {
         DBReportMediator mediator = new DBReportMediator();
+
+        OMAttribute useTx = elem.getAttribute(DBREPORT_USE_TX);
+        if (useTx != null && useTx.getAttributeValue() != null) {
+            String useTxValue = useTx.getAttributeValue();
+            if (useTxValue.equals("true")) {
+                mediator.setUseTransaction(true);
+            } else {
+                mediator.setUseTransaction(false);
+            }
+        }
         buildDataSource(elem, mediator);
         processStatements(elem, mediator);
         return mediator;

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorSerializer.java?rev=916396&r1=916395&r2=916396&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/DBReportMediatorSerializer.java Thu Feb 25 18:49:50 2010
@@ -25,7 +25,7 @@
 
 /**
  * Serializer for {@link DBReportMediator} instances.
- * 
+ *
  * @see DBReportMediatorFactory
  */
 public class DBReportMediatorSerializer extends AbstractDBMediatorSerializer {
@@ -38,7 +38,10 @@
 
         DBReportMediator mediator = (DBReportMediator) m;
         OMElement dbReport = fac.createOMElement("dbreport", synNS);
-        saveTracingState(dbReport,mediator);
+        if (mediator.isUseTransaction()) {
+            dbReport.addAttribute(fac.createOMAttribute("useTransaction", nullNS, "true"));
+        }
+        saveTracingState(dbReport, mediator);
         serializeDBInformation(mediator, dbReport);
 
         if (parent != null) {

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/db/DBReportMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/db/DBReportMediator.java?rev=916396&r1=916395&r2=916396&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/db/DBReportMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/db/DBReportMediator.java Thu Feb 25 18:49:50 2010
@@ -31,8 +31,21 @@
  */
 public class DBReportMediator extends AbstractDBMediator {
 
+    public boolean isUseTransaction() {
+        return useTransaction;
+    }
+
+    public void setUseTransaction(boolean useTransaction) {
+        this.useTransaction = useTransaction;
+    }
+
+    // Does the DBReport mediator participate in a distribute tx?
+    // default do not participate in a distribute tx
+    boolean useTransaction = false;
+
     protected void processStatement(Statement stmnt, MessageContext msgCtx) {
 
+
         SynapseLog synLog = getLog(msgCtx);
 
         Connection con = null;
@@ -44,27 +57,30 @@
             if (count > 0) {
                 if (synLog.isTraceOrDebugEnabled()) {
                     synLog.traceOrDebug(
-                        "Inserted " + count + " row/s using statement : " + stmnt.getRawStatement());
+                            "Inserted " + count + " row/s using statement : " + stmnt.getRawStatement());
                 }
             } else {
                 if (synLog.isTraceOrDebugEnabled()) {
                     synLog.traceOrDebug(
-                        "No rows were inserted for statement : " + stmnt.getRawStatement());
+                            "No rows were inserted for statement : " + stmnt.getRawStatement());
                 }
             }
-            
-            if (!con.getAutoCommit()) {
-                con.commit();
+
+            if (!useTransaction) {
+                if (!con.getAutoCommit()) {
+                    con.commit();
+                }
             }
 
         } catch (SQLException e) {
             handleException("Error execuring insert statement : " + stmnt.getRawStatement() +
-                " against DataSource : " + getDSName(), e, msgCtx);
+                    " against DataSource : " + getDSName(), e, msgCtx);
         } finally {
             if (con != null) {
                 try {
                     con.close();
-                } catch (SQLException ignore) {}
+                } catch (SQLException ignore) {
+                }
             }
         }
     }

Modified: synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml?rev=916396&r1=916395&r2=916396&view=diff
==============================================================================
--- synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml (original)
+++ synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml Thu Feb 25 18:49:50 2010
@@ -1764,7 +1764,7 @@
     <h4>
       <a name="dbreport" id="dbreport">DB-report</a>
     </h4>
-<pre xml:space="preserve">&lt;dbreport&gt;
+<pre xml:space="preserve">&lt;dbreport useTransaction=(true|false)&gt;
    &lt;connection&gt;
      &lt;pool&gt;
       (