You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by tl...@apache.org on 2006/10/24 07:43:21 UTC

svn commit: r467247 - in /incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml: XMLBindingFactory.java interceptor/XMLFaultInInterceptor.java interceptor/XMLFaultOutInterceptor.java

Author: tli
Date: Mon Oct 23 22:43:20 2006
New Revision: 467247

URL: http://svn.apache.org/viewvc?view=rev&rev=467247
Log:
add handling for xml fault not raised by SEI Impl

Modified:
    incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
    incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultInInterceptor.java
    incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultOutInterceptor.java

Modified: incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java?view=diff&rev=467247&r1=467246&r2=467247
==============================================================================
--- incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java Mon Oct 23 22:43:20 2006
@@ -78,7 +78,6 @@
         xb.getInInterceptors().add(new StaxInInterceptor());
         xb.getInInterceptors().add(new XMLMessageInInterceptor());
         
-        xb.getInFaultInterceptors().add(new StaxInInterceptor());
         xb.getInFaultInterceptors().add(new XMLFaultInInterceptor());
         
         xb.getOutInterceptors().add(new StaxOutInterceptor());

Modified: incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultInInterceptor.java?view=diff&rev=467247&r1=467246&r2=467247
==============================================================================
--- incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultInInterceptor.java Mon Oct 23 22:43:20 2006
@@ -52,16 +52,14 @@
         XMLStreamReader xsr = message.getContent(XMLStreamReader.class);
         DepthXMLStreamReader reader = new DepthXMLStreamReader(xsr);
 
-        try {
+        try {            
             reader.nextTag();
             if (!StaxUtils.toNextElement(reader)) {
                 throw new Fault(new org.apache.cxf.common.i18n.Message("ILLEAGAL_XMLFAULT_FORMAT", BUNDLE));
             }
             String exMessage = reader.getElementText();
             Fault fault = new XMLFault(exMessage);
-            while (!StaxUtils.toNextElement(reader)) {
-                StaxUtils.nextEvent(reader);
-            }
+            reader.nextTag();
             if (StaxUtils.toNextElement(reader)) {
                 // handling detail
                 Element detail = StaxUtils.read(new FragmentStreamReader(reader)).getDocumentElement();

Modified: incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultOutInterceptor.java?view=diff&rev=467247&r1=467246&r2=467247
==============================================================================
--- incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/interceptor/XMLFaultOutInterceptor.java Mon Oct 23 22:43:20 2006
@@ -49,7 +49,7 @@
         setPhase(Phase.MARSHAL);
     }
 
-    public void handleMessage(Message message) throws Fault {        
+    public void handleMessage(Message message) throws Fault {
         message.put(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
         NSStack nsStack = new NSStack();
         nsStack.push();
@@ -63,63 +63,52 @@
 
             StaxUtils.writeStartElement(writer, prefix, XMLFault.XML_FAULT_ROOT, XMLConstants.NS_XML_FORMAT);
 
-            StaxUtils.writeStartElement(writer, prefix, XMLFault.XML_FAULT_STRING, 
-                    XMLConstants.NS_XML_FORMAT);
-            Throwable t = xmlFault.getCause();
-            StringBuffer str = new StringBuffer(t.toString());
-            QName elName = null;
+            StaxUtils
+                    .writeStartElement(writer, prefix, XMLFault.XML_FAULT_STRING, XMLConstants.NS_XML_FORMAT);
+            Throwable t = xmlFault.getCause();            
+            writer.writeCharacters(t == null ? xmlFault.getMessage() : t.toString());
+            // fault string
+            writer.writeEndElement();
+
+            // call data writer to marshal exception
             BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class);
-            if (!bop.isUnwrappedCapable()) {
-                bop = bop.getUnwrappedOperation();
-            }
-            Iterator<FaultInfo> it = bop.getOperationInfo().getFaults().iterator();
-            // Boolean isWebFault = null;
-            while (it.hasNext()) {
-                FaultInfo fi = it.next();
-                for (MessagePartInfo mpi : fi.getMessageParts()) {
-                    Class cls = mpi.getProperty(Class.class.getName(), Class.class);
-                    Method method = t.getClass().getMethod("getFaultInfo", new Class[0]);
-                    Class sub = method.getReturnType();
-                    if (cls != null && cls.equals(sub)) {
-                        if (mpi.isElement()) {
-                            elName = mpi.getElementQName();
-                        } else {
-                            elName = mpi.getTypeQName();
+            if (bop != null) {
+                QName elName = null;
+                if (!bop.isUnwrappedCapable()) {
+                    bop = bop.getUnwrappedOperation();
+                }
+                Iterator<FaultInfo> it = bop.getOperationInfo().getFaults().iterator();
+                while (it.hasNext()) {
+                    FaultInfo fi = it.next();
+                    for (MessagePartInfo mpi : fi.getMessageParts()) {
+                        Class cls = mpi.getProperty(Class.class.getName(), Class.class);
+                        Method method = t.getClass().getMethod("getFaultInfo", new Class[0]);
+                        Class sub = method.getReturnType();
+                        if (cls != null && cls.equals(sub)) {
+                            if (mpi.isElement()) {
+                                elName = mpi.getElementQName();
+                            } else {
+                                elName = mpi.getTypeQName();
+                            }
+                            break;
                         }
-                        // isWebFault = mpi.getProperty("javax.xml.ws.WebFault", Boolean.class);
-                        break;
                     }
                 }
-            }
-            /*
-             * do not send stack trace information to client
-            if (!(isWebFault != null && isWebFault.booleanValue())) {
-                str.append("\n");
-                for (StackTraceElement s : t.getStackTrace()) {
-                    str.append(s.toString());
-                    str.append("\n");
+                if (elName != null) {
+                    StaxUtils.writeStartElement(writer, prefix, XMLFault.XML_FAULT_DETAIL,
+                            XMLConstants.NS_XML_FORMAT);
+                    DataWriter<Message> dataWriter = getMessageDataWriter(message);
+                    dataWriter.write(getFaultInfo(t), elName, message);
+                    writer.writeEndElement();
                 }
             }
-             */
-            writer.writeCharacters(str.toString());
-            // fault string
-            writer.writeEndElement();
-            
-            // call data writer to marshal exception
-            if (elName != null) {
-                StaxUtils.writeStartElement(writer, prefix, XMLFault.XML_FAULT_DETAIL,
-                        XMLConstants.NS_XML_FORMAT);
-                DataWriter<Message> dataWriter = getMessageDataWriter(message);
-                dataWriter.write(getFaultInfo(t), elName, message);
-                writer.writeEndElement();
-            }
             // fault root
             writer.writeEndElement();
-            
+
             writer.flush();
 
         } catch (NoSuchMethodException ne) {
-            throw new Fault(new org.apache.cxf.common.i18n.Message("UNKNOWN_EXCEPTION", BUNDLE), ne);        
+            throw new Fault(new org.apache.cxf.common.i18n.Message("UNKNOWN_EXCEPTION", BUNDLE), ne);
         } catch (XMLStreamException xe) {
             throw new Fault(new org.apache.cxf.common.i18n.Message("XML_WRITE_EXC", BUNDLE), xe);
         }