You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/06/27 16:42:51 UTC

svn commit: r672285 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: SynapseException.java SynapseLog.java mediators/AbstractMediator.java mediators/MediatorLog.java

Author: veithen
Date: Fri Jun 27 07:42:51 2008
New Revision: 672285

URL: http://svn.apache.org/viewvc?rev=672285&view=rev
Log:
SYNAPSE-374:
* Modified SynapseLog, MediatorLog and AbstractMediator so that logging SynapseExceptions can be done through the SynapseLog interface.
* Added two convenience constructors to SynapseException that allow to log and throw the exception in a single instruction. This is better than handleException because it allows the compiler to see that an exception is thrown. The compiler can then do proper flow analysis, avoiding complaints about uninitialized variables and missing return statements.

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseException.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseLog.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorLog.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseException.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseException.java?rev=672285&r1=672284&r2=672285&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseException.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseException.java Fri Jun 27 07:42:51 2008
@@ -38,4 +38,30 @@
         super(t);
     }
 
+    /**
+     * Convenience constructor that allows to log and throw the exception in a single
+     * instruction. It will call {@link SynapseLog#logSynapseException(String, Throwable)}
+     * to log the error.
+     * 
+     * @param msg
+     * @param synLog
+     */
+    public SynapseException(String msg, SynapseLog synLog) {
+        super(msg);
+        synLog.logSynapseException(msg, null);
+    }
+
+    /**
+     * Convenience constructor that allows to log and throw the exception in a single
+     * instruction. It will call {@link SynapseLog#logSynapseException(String, Throwable)}
+     * to log the error.
+     * 
+     * @param msg
+     * @param cause
+     * @param synLog
+     */
+    public SynapseException(String msg, Throwable cause, SynapseLog synLog) {
+        super(msg, cause);
+        synLog.logSynapseException(msg, cause);
+    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseLog.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseLog.java?rev=672285&r1=672284&r2=672285&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseLog.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseLog.java Fri Jun 27 07:42:51 2008
@@ -86,4 +86,13 @@
      * @param msg the message to be logged
      */
     void error(Object msg);
+    
+    /**
+     * Log a fatal exception. This method should only be called when a
+     * {@link SynapseException} is being thrown.
+     * 
+     * @param msg the message of the exception
+     * @param cause the cause of the exception
+     */
+    void logSynapseException(String msg, Throwable cause);
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java?rev=672285&r1=672284&r2=672285&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java Fri Jun 27 07:42:51 2008
@@ -99,7 +99,7 @@
      * @return
      */
     protected SynapseLog getLog(MessageContext synCtx) {
-        return new MediatorLog(log, isTraceOn(synCtx));
+        return new MediatorLog(log, isTraceOn(synCtx), synCtx);
     }
 
     /**

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorLog.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorLog.java?rev=672285&r1=672284&r2=672285&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorLog.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorLog.java Fri Jun 27 07:42:51 2008
@@ -21,6 +21,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseLog;
 
@@ -39,11 +40,13 @@
     
     private final Log defaultLog;
     private final boolean traceOn;
+    private final MessageContext synCtx;
     
     // The definition of this constructor might change...
-    public MediatorLog(Log defaultLog, boolean traceOn) {
+    public MediatorLog(Log defaultLog, boolean traceOn, MessageContext synCtx) {
         this.defaultLog = defaultLog;
         this.traceOn = traceOn;
+        this.synCtx = synCtx;
     }
 
     public boolean isTraceOrDebugEnabled() {
@@ -88,7 +91,7 @@
     }
 
     /**
-     * Log a message with level ERROR to the default log and to the trace, if trace is enabled.
+     * Log a message at level ERROR to the default log and to the trace, if trace is enabled.
      */
     public void error(Object msg) {
         defaultLog.error(msg);
@@ -96,4 +99,18 @@
             traceLog.error(msg);
         }
     }
+
+    /**
+     * Log a message at level ERROR to the default log, the service log and the trace, if trace
+     * is enabled.
+     */
+    public void logSynapseException(String msg, Throwable cause) {
+        defaultLog.error(msg, cause);
+        if (synCtx.getServiceLog() != null) {
+            synCtx.getServiceLog().error(msg, cause);
+        }
+        if (traceOn) {
+            traceLog.error(msg, cause);
+        }
+    }
 }