This is an automated email from the ASF dual-hosted git repository.

dkulp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 365932977e4c97b34ca6de47425fd60054d91511
Author: Daniel Kulp <[email protected]>
AuthorDate: Wed Mar 15 14:21:16 2023 -0400

    Update the ServletRequest adapters to implement getContentLengthLong 
instead of throw exception
---
 .../transport/http_jaxws_spi/HttpServletRequestAdapter.java  | 12 ++++++++++--
 .../http/netty/server/servlet/NettyHttpServletRequest.java   |  2 +-
 .../apache/cxf/transport/http/AbstractHTTPDestination.java   |  4 +++-
 .../websocket/jetty/WebSocketVirtualServletRequest.java      |  4 ++--
 .../websocket/undertow/WebSocketUndertowServletRequest.java  |  4 ++--
 5 files changed, 18 insertions(+), 8 deletions(-)

diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/transport/http_jaxws_spi/HttpServletRequestAdapter.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/transport/http_jaxws_spi/HttpServletRequestAdapter.java
index ec13a3a225..74af87b416 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/transport/http_jaxws_spi/HttpServletRequestAdapter.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/transport/http_jaxws_spi/HttpServletRequestAdapter.java
@@ -89,7 +89,11 @@ class HttpServletRequestAdapter implements 
HttpServletRequest {
     }
 
     public int getContentLength() {
-        return 0;
+        String s = getHeader("Content-Length");
+        if (s != null) {
+            return Integer.parseInt(s);
+        }
+        return -1;
     }
 
     public String getContentType() {
@@ -432,7 +436,11 @@ class HttpServletRequestAdapter implements 
HttpServletRequest {
 
     @Override
     public long getContentLengthLong() {
-        throw new UnsupportedOperationException();
+        String s = getHeader("Content-Length");
+        if (s != null) {
+            return Long.parseLong(s);
+        }
+        return -1;
     }
 
     @Override
diff --git 
a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/servlet/NettyHttpServletRequest.java
 
b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/servlet/NettyHttpServletRequest.java
index 60f619214a..e4c3f4819f 100644
--- 
a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/servlet/NettyHttpServletRequest.java
+++ 
b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/servlet/NettyHttpServletRequest.java
@@ -481,7 +481,7 @@ public class NettyHttpServletRequest implements 
HttpServletRequest {
 
     @Override
     public long getContentLengthLong() {
-        throw new IllegalStateException("Method 'getContentLengthLong' not yet 
implemented!");
+        return getContentLength();
     }
 
     @Override
diff --git 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
index e51e6c4616..376131af49 100644
--- 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
+++ 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
@@ -318,7 +318,9 @@ public abstract class AbstractHTTPDestination
                     //Please note, exchange used to always get the "current" 
message
                     exchange.getInMessage().put(HTTP_REQUEST, new 
HttpServletRequestSnapshot(req));
                 }
-                super.cacheInput();
+                if (req.getContentLengthLong() != 0) {
+                    super.cacheInput();
+                }
             }
             private boolean isWSAddressingReplyToSpecified(Exchange ex) {
                 AddressingProperties map = 
ContextUtils.retrieveMAPs(ex.getInMessage(), false, false, false);
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/WebSocketVirtualServletRequest.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/WebSocketVirtualServletRequest.java
index 72014dd386..c9439375f1 100644
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/WebSocketVirtualServletRequest.java
+++ 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/WebSocketVirtualServletRequest.java
@@ -122,7 +122,7 @@ public class WebSocketVirtualServletRequest implements 
HttpServletRequest {
     @Override
     public int getContentLength() {
         LOG.log(Level.FINE, "getContentLength()");
-        return 0;
+        return -1;
     }
 
     @Override
@@ -544,7 +544,7 @@ public class WebSocketVirtualServletRequest implements 
HttpServletRequest {
 
     @Override
     public long getContentLengthLong() {
-        throw new UnsupportedOperationException();
+        return -1;
     }
 
     @Override
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/undertow/WebSocketUndertowServletRequest.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/undertow/WebSocketUndertowServletRequest.java
index 303ed180a1..7444176468 100644
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/undertow/WebSocketUndertowServletRequest.java
+++ 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/undertow/WebSocketUndertowServletRequest.java
@@ -125,7 +125,7 @@ public class WebSocketUndertowServletRequest implements 
HttpServletRequest {
     @Override
     public int getContentLength() {
         LOG.log(Level.FINE, "getContentLength()");
-        return 0;
+        return -1;
     }
 
     @Override
@@ -569,7 +569,7 @@ public class WebSocketUndertowServletRequest implements 
HttpServletRequest {
 
     @Override
     public long getContentLengthLong() {
-        throw new UnsupportedOperationException();
+        return -1;
     }
 
     @Override

Reply via email to