cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gma...@apache.org
Subject svn commit: r641675 - in /incubator/cxf/trunk: common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
Date Thu, 27 Mar 2008 01:09:24 GMT
Author: gmazza
Date: Wed Mar 26 18:09:23 2008
New Revision: 641675

URL: http://svn.apache.org/viewvc?rev=641675&view=rev
Log:
CXF-1490 (http://tinyurl.com/24j2y3) fixed.  HTML errors are now output on the response; no
more cryptic Woodstox errors.


Modified:
    incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java

Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java?rev=641675&r1=641674&r2=641675&view=diff
==============================================================================
--- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java (original)
+++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/helpers/IOUtils.java Wed
Mar 26 18:09:23 2008
@@ -96,18 +96,29 @@
     
     public static String toString(final InputStream input) 
         throws IOException {
-        
-        StringBuilder buf = new StringBuilder();
-        final byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
-        int n = 0;
-        n = input.read(buffer);
-        while (-1 != n) {
-            buf.append(new String(buffer, 0, n));
-            n = input.read(buffer);
+        return toString(input, DEFAULT_BUFFER_SIZE);
+    }
+    
+    public static String toString(final InputStream input, int bufferSize) 
+	    throws IOException {
+	    
+        int avail = input.available();
+        if (avail > bufferSize) {
+            bufferSize = avail;
         }
-        input.close();
-        return buf.toString();
+
+        StringBuilder buf = new StringBuilder();
+	    final byte[] buffer = new byte[bufferSize];
+	    int n = 0;
+	    n = input.read(buffer);
+	    while (-1 != n) {
+	        buf.append(new String(buffer, 0, n));
+	        n = input.read(buffer);
+	    }
+	    input.close();
+	    return buf.toString();
     }
+    
     public static String toString(final Reader input) 
         throws IOException {
         

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties?rev=641675&r1=641674&r2=641675&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties
Wed Mar 26 18:09:23 2008
@@ -18,7 +18,8 @@
 #    under the License.
 #
 #
-STREAM_CREATE_EXC = Could not create XMLStreamReader(encoding {0}).
+STREAM_CREATE_EXC = Could not create XMLStreamReader (input was of encoding {0}).
+INVALID_HTML_RESPONSETYPE = Response was of unexpected text/html ContentType.  Incoming portion
of HTML stream: {0}
 STAX_READ_EXC = Could not read from XMLStreamReader.
 STAX_WRITE_EXC = Could not write to XMLStreamWriter.
 NO_OPERATION_ELEMENT=There must be an operation element.

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java?rev=641675&r1=641674&r2=641675&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
Wed Mar 26 18:09:23 2008
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.interceptor;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
@@ -30,6 +31,7 @@
 
 import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
@@ -58,6 +60,20 @@
         InputStream is = message.getContent(InputStream.class);
         assert is != null;
 
+        String contentType = (String)message.get(Message.CONTENT_TYPE);
+        
+        if (contentType != null && contentType.contains("text/html")) {
+        	String htmlMessage = null;
+        	try {
+        		htmlMessage = IOUtils.toString(is, 500);
+        	} catch (IOException e) {
+	        	throw new Fault(new org.apache.cxf.common.i18n.Message("INVALID_HTML_RESPONSETYPE",
+	                    LOG, "(none)"));
+        	}
+        	throw new Fault(new org.apache.cxf.common.i18n.Message("INVALID_HTML_RESPONSETYPE",
+                    LOG, (htmlMessage == null || htmlMessage.length() == 0) ? "(none)" :
htmlMessage));
+        }
+        
         String encoding = (String)message.get(Message.ENCODING);
 
         XMLStreamReader reader;
@@ -66,8 +82,7 @@
         } catch (XMLStreamException e) {
             throw new Fault(new org.apache.cxf.common.i18n.Message("STREAM_CREATE_EXC",
                                                                    LOG,
-                                                                   encoding),
-                            e);
+                                                                   encoding), e);
         }
 
         message.setContent(XMLStreamReader.class, reader);



Mime
View raw message