You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/07/08 04:08:13 UTC

svn commit: r792018 - in /cxf/branches/2.1.x-fixes: ./ api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java

Author: dkulp
Date: Wed Jul  8 02:08:13 2009
New Revision: 792018

URL: http://svn.apache.org/viewvc?rev=792018&view=rev
Log:
Merged revisions 791955 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.2.x-fixes

................
  r791955 | dkulp | 2009-07-07 15:45:33 -0400 (Tue, 07 Jul 2009) | 9 lines
  
  Merged revisions 791947 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r791947 | dkulp | 2009-07-07 15:26:39 -0400 (Tue, 07 Jul 2009) | 1 line
    
    [CXF-2307] Update logging levels for exceptions
  ........
................

Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jul  8 02:08:13 2009
@@ -1,2 +1,2 @@
-/cxf/branches/2.2.x-fixes:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963,767159,767191,767927,771416,772143,772402,772658,772714,773009-773010,773027,773049,773146,773581,773691,773693,774446-774496,774558,774760,774851,774979,775423,776024-776025,776218,776429,776459,777189,777224,777243,777481,777505,777572,777580,780033,780184,780213,780421,780664,780800,780902,780911,781497,781841,782733,782735-782736,783099,783407,784064,784197,785293,785296,785298-785299,785301,785656,786158,786587,786589,786591-786592,786640,787272,787276,787282-787283,787285,787295,787307,787324,7873
 67,788824-788825,788827-788828,788830,789423,789429,789707,789709-789710,789712,789721,789905,789908,789910,789912,790295,790646-790647,790651,790654-790655,790659,791948,791950,791952
-/cxf/trunk:782181,782728-782730,783097,783396,784059,784181,784895,785279-785282,785468,786142,786271,786395,786582-786583,786638,786647,787269,787277-787279,787290,787305,787323,787366,788060,788187,788703,788774,788820,789371,789420,789527-789529,789704-789705,789896,789898-789900,790294,790637-790644,791354,791538,791753
+/cxf/branches/2.2.x-fixes:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963,767159,767191,767927,771416,772143,772402,772658,772714,773009-773010,773027,773049,773146,773581,773691,773693,774446-774496,774558,774760,774851,774979,775423,776024-776025,776218,776429,776459,777189,777224,777243,777481,777505,777572,777580,780033,780184,780213,780421,780664,780800,780902,780911,781497,781841,782733,782735-782736,783099,783407,784064,784197,785293,785296,785298-785299,785301,785656,786158,786587,786589,786591-786592,786640,787272,787276,787282-787283,787285,787295,787307,787324,7873
 67,788824-788825,788827-788828,788830,789423,789429,789707,789709-789710,789712,789721,789905,789908,789910,789912,790295,790646-790647,790651,790654-790655,790659,791948,791950,791952,791955
+/cxf/trunk:782181,782728-782730,783097,783396,784059,784181,784895,785279-785282,785468,786142,786271,786395,786582-786583,786638,786647,787269,787277-787279,787290,787305,787323,787366,788060,788187,788703,788774,788820,789371,789420,789527-789529,789704-789705,789896,789898-789900,790294,790637-790644,791354,791538,791753,791947

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java?rev=792018&r1=792017&r2=792018&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java (original)
+++ cxf/branches/2.1.x-fixes/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java Wed Jul  8 02:08:13 2009
@@ -57,6 +57,7 @@
 
     private static final Logger LOG = LogUtils.getL7dLogger(PhaseInterceptorChain.class); 
 
+    private static final ThreadLocal<Message> CURRENT_MESSAGE = new ThreadLocal<Message>();
     
     private final Map<String, Integer> nameMap;
     private final Phase phases[];
@@ -85,6 +86,7 @@
     private boolean faultOccurred;
     
     
+    
     private PhaseInterceptorChain(PhaseInterceptorChain src) {
         //only used for clone
         state = State.EXECUTING;
@@ -139,6 +141,10 @@
         }
     }
     
+    public static Message getCurrentMessage() {
+        return CURRENT_MESSAGE.get();
+    }
+    
     // this method should really be on the InterceptorChain interface
     public State getState() {
         return state;
@@ -216,71 +222,79 @@
         updateIterator();
         boolean isFineLogging = LOG.isLoggable(Level.FINE);
         pausedMessage = message;
-        while (state == State.EXECUTING && iterator.hasNext()) {
-            try {
-                Interceptor currentInterceptor = iterator.next();
-                if (isFineLogging) {
-                    LOG.fine("Invoking handleMessage on interceptor " + currentInterceptor);
-                }
-                //System.out.println("-----------" + currentInterceptor);
-                currentInterceptor.handleMessage(message);
-            } catch (SuspendedInvocationException ex) {
-                // we need to resume from the same interceptor the exception got originated from
-                if (iterator.hasPrevious()) {
-                    iterator.previous();
-                }
-                pause();
-                throw ex;
-            } catch (RuntimeException ex) {
-                if (!faultOccurred) {
- 
-                    faultOccurred = true;
-                                        
-                    FaultMode mode = message.get(FaultMode.class);
-                    if (mode == FaultMode.CHECKED_APPLICATION_FAULT) {
-                        if (LOG.isLoggable(Level.FINE)) { 
-                            LogUtils.log(LOG, Level.FINE,
-                                         "Application has thrown exception, unwinding now", ex);
-                        } else if (LOG.isLoggable(Level.INFO)) {
-                            Throwable t = ex;
-                            if (ex instanceof Fault
-                                && ex.getCause() != null) {
-                                t = ex.getCause();
-                            }                            
-                            
-                            LogUtils.log(LOG, Level.INFO,
-                                         "Application has thrown exception, unwinding now: "
-                                         + t.getClass().getName() 
-                                         + ": " + ex.getMessage());
-                        }
-                    } else if (LOG.isLoggable(Level.INFO)) {
-                        if (mode == FaultMode.UNCHECKED_APPLICATION_FAULT) {
-                            LogUtils.log(LOG, Level.INFO,
-                                         "Application has thrown exception, unwinding now", ex);
-                        } else {
-                            LogUtils.log(LOG, Level.INFO,
-                                         "Interceptor has thrown exception, unwinding now", ex);
-                        }
-                    }
 
-                    message.setContent(Exception.class, ex);
-                    if (message.getExchange() != null) {
-                        message.getExchange().put(Exception.class, ex);
-                    }                    
-                    unwind(message);
+        Message oldMessage = CURRENT_MESSAGE.get();
+        try {
+            CURRENT_MESSAGE.set(message);
+            while (state == State.EXECUTING && iterator.hasNext()) {
+                try {
+                    Interceptor currentInterceptor = iterator.next();
+                    if (isFineLogging) {
+                        LOG.fine("Invoking handleMessage on interceptor " + currentInterceptor);
+                    }
+                    //System.out.println("-----------" + currentInterceptor);
+                    currentInterceptor.handleMessage(message);
+                } catch (SuspendedInvocationException ex) {
+                    // we need to resume from the same interceptor the exception got originated from
+                    if (iterator.hasPrevious()) {
+                        iterator.previous();
+                    }
+                    pause();
+                    throw ex;
+                } catch (RuntimeException ex) {
                     
-                    if (faultObserver != null) {
-                        faultObserver.onMessage(message);
+                    if (!faultOccurred) {
+     
+                        faultOccurred = true;
+                                            
+                        FaultMode mode = message.get(FaultMode.class);
+                        if (mode == FaultMode.CHECKED_APPLICATION_FAULT) {
+                            if (LOG.isLoggable(Level.FINE)) { 
+                                LogUtils.log(LOG, Level.FINE,
+                                             "Application has thrown exception, unwinding now", ex);
+                            } else if (LOG.isLoggable(Level.INFO)) {
+                                Throwable t = ex;
+                                if (ex instanceof Fault
+                                    && ex.getCause() != null) {
+                                    t = ex.getCause();
+                                }                            
+                                
+                                LogUtils.log(LOG, Level.INFO,
+                                             "Application has thrown exception, unwinding now: "
+                                             + t.getClass().getName() 
+                                             + ": " + ex.getMessage());
+                            }
+                        } else if (LOG.isLoggable(Level.WARNING)) {
+                            if (mode == FaultMode.UNCHECKED_APPLICATION_FAULT) {
+                                LogUtils.log(LOG, Level.WARNING,
+                                             "Application has thrown exception, unwinding now", ex);
+                            } else {
+                                LogUtils.log(LOG, Level.WARNING,
+                                             "Interceptor has thrown exception, unwinding now", ex);
+                            }
+                        }
+    
+                        message.setContent(Exception.class, ex);
+                        if (message.getExchange() != null) {
+                            message.getExchange().put(Exception.class, ex);
+                        }                    
+                        unwind(message);
+                        
+                        if (faultObserver != null) {
+                            faultObserver.onMessage(message);
+                        }
                     }
-                }
-                state = State.ABORTED;
-            } 
-        }
-        if (state == State.EXECUTING) {
-            state = State.COMPLETE;
-            pausedMessage = null;
+                    state = State.ABORTED;
+                } 
+            }
+            if (state == State.EXECUTING) {
+                state = State.COMPLETE;
+                pausedMessage = null;
+            }
+            return state == State.COMPLETE;
+        } finally {
+            CURRENT_MESSAGE.set(oldMessage);
         }
-        return state == State.COMPLETE;
     }
     
     /**
@@ -344,8 +358,12 @@
             }
             try {
                 currentInterceptor.handleFault(message);
+            } catch (RuntimeException e) {
+                LOG.log(Level.WARNING, "Exception in handleFault on interceptor " + currentInterceptor, e);
+                throw e;
             } catch (Exception e) {
-                LOG.log(Level.WARNING, "Exception in handleFault on interceptor " + currentInterceptor, e); 
+                LOG.log(Level.WARNING, "Exception in handleFault on interceptor " + currentInterceptor, e);
+                throw new RuntimeException(e);
             }
         }
     }