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 2010/01/12 22:35:19 UTC

svn commit: r898526 - in /cxf/trunk: rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java systests/uncategorized/pom.xml

Author: dkulp
Date: Tue Jan 12 21:35:18 2010
New Revision: 898526

URL: http://svn.apache.org/viewvc?rev=898526&view=rev
Log:
[CXF-685] Add proper fault generation to RM Servant

Modified:
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java
    cxf/trunk/systests/uncategorized/pom.xml

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java?rev=898526&r1=898525&r2=898526&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java Tue Jan 12 21:35:18 2010
@@ -27,7 +27,11 @@
 
 import javax.xml.datatype.Duration;
 
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.Binding;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.jaxb.DatatypeFactory;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
@@ -52,6 +56,25 @@
         reliableEndpoint = rme;
     }
     
+    private void throwSequenceFault(SequenceFault sf, Exchange exchange) {
+        Endpoint e = exchange.get(Endpoint.class);
+        Binding b = null;
+        if (null != e) {
+            b = e.getBinding();
+        }
+        Bus bus = exchange.get(Bus.class);
+        if (null != b && bus != null) {
+            RMManager m = bus.getExtension(RMManager.class);
+            LOG.fine("Manager: " + m);
+            BindingFaultFactory bff = m.getBindingFaultFactory(b);
+            Fault f = bff.createFault(sf);
+            LogUtils.log(LOG, Level.SEVERE, "SEQ_FAULT_MSG", bff.toString(f));
+            throw f;
+        }
+        throw new Fault(sf);
+    }
+    
+    
     public Object invoke(Exchange exchange, Object o) {
         LOG.fine("Invoking on RM Endpoint");
         OperationInfo oi = exchange.get(OperationInfo.class);
@@ -60,16 +83,14 @@
             return null;
         }
         
-        // TODO: throw Fault, see AbstractRMInterceptor
-        
         if (RMConstants.getCreateSequenceOperationName().equals(oi.getName())
             || RMConstants.getCreateSequenceOnewayOperationName().equals(oi.getName())) {
             try {
                 return Collections.singletonList(createSequence(exchange.getInMessage()));
             } catch (SequenceFault ex) {
-                ex.printStackTrace();
+                throwSequenceFault(ex, exchange);
             } catch (Exception ex) {
-                ex.printStackTrace();
+                throw new Fault(ex);
             }
         } else if (RMConstants.getCreateSequenceResponseOnewayOperationName().equals(oi.getName())) {
             CreateSequenceResponseType createResponse = 
@@ -77,15 +98,15 @@
             try {
                 createSequenceResponse(createResponse);
             } catch (SequenceFault ex) {
-                ex.printStackTrace();
+                throwSequenceFault(ex, exchange);
             }
         } else if (RMConstants.getTerminateSequenceOperationName().equals(oi.getName())) {            
             try {
                 terminateSequence(exchange.getInMessage());
             } catch (SequenceFault ex) {
-                ex.printStackTrace();
+                throwSequenceFault(ex, exchange);
             } catch (RMException ex) {
-                ex.printStackTrace();
+                throw new Fault(ex);
             }
         }
         

Modified: cxf/trunk/systests/uncategorized/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/uncategorized/pom.xml?rev=898526&r1=898525&r2=898526&view=diff
==============================================================================
--- cxf/trunk/systests/uncategorized/pom.xml (original)
+++ cxf/trunk/systests/uncategorized/pom.xml Tue Jan 12 21:35:18 2010
@@ -228,19 +228,9 @@
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-ws-rm</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-ws-policy</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!--dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-ws-security</artifactId>
-            <version>${project.version}</version>
-        </dependency-->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-frontend-jaxrs</artifactId>