You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by dm...@apache.org on 2007/03/27 12:09:43 UTC

svn commit: r522881 - /incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java

Author: dmiddlem
Date: Tue Mar 27 05:09:42 2007
New Revision: 522881

URL: http://svn.apache.org/viewvc?view=rev&rev=522881
Log:
Commit for YOKO-267:
* Update to handle throwing CORBA system exceptions from CXF -> ORB -> CXF 

Modified:
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java?view=diff&rev=522881&r1=522880&r2=522881
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java Tue Mar 27 05:09:42 2007
@@ -64,6 +64,12 @@
 import org.apache.yoko.bindings.corba.utils.CorbaUtils;
 import org.apache.yoko.wsdl.CorbaConstants;
 
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ServerRequest;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.SystemExceptionHelper;
+
 public class CorbaFaultOutInterceptor extends AbstractPhaseInterceptor<Message> {
 
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaFaultOutInterceptor.class);
@@ -108,6 +114,11 @@
                 ex = ex.getCause();
             }
 
+            if (ex instanceof SystemException) {
+                setSystemException(message, ex, orb);
+                return;
+            }
+
             //REVISIT, we should not have to depend on WebFault annotation
             //Try changing the fault name to the proper mangled java exception classname.
             WebFault fault = ex.getClass().getAnnotation(WebFault.class);
@@ -163,6 +174,17 @@
 
     }
 
+    protected void setSystemException(CorbaMessage message,
+                                      Throwable ex,
+                                      ORB orb) {
+        SystemException sysEx = (SystemException)ex;
+        message.setSystemException(sysEx);
+        ServerRequest request  = message.getExchange().get(ServerRequest.class);
+        Any exAny = orb.create_any();
+        SystemExceptionHelper.insert(exAny, sysEx);
+        request.set_exception(exAny);
+    }
+    
     protected void setUserException(CorbaMessage message,
                                     Throwable ex,
                                     QName exIdlType,