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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0ddef8d51c0 Fix code scanning low warning: Exceptions should not be 
thrown from servlet methods
0ddef8d51c0 is described below

commit 0ddef8d51c0e5c4ea7027a0a5c61e92b1e09a28b
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Tue Dec 27 15:14:08 2022 +0100

    Fix code scanning low warning: Exceptions should not be thrown from servlet 
methods
---
 .../org/apache/camel/http/common/CamelServlet.java | 24 +++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
index e9fdb717a83..e248de19457 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
@@ -89,8 +89,24 @@ public class CamelServlet extends HttpServlet implements 
HttpRegistryProvider {
         log.trace("servlet '{}' initialized with: async={}", servletName, 
async);
     }
 
-    @Override
-    protected void service(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
+    protected void service(HttpServletRequest request, HttpServletResponse 
response) {
+        log.trace("Service: {}", request);
+        try {
+            handleService(request, response);
+        } catch (Exception e) {
+            // do not leak exception back to caller
+            log.warn("Error handling request due to: " + e.getMessage(), e);
+            try {
+                if (!response.isCommitted()) {
+                    
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                }
+            } catch (Exception e1) {
+                // ignore
+            }
+        }
+    }
+
+    protected void handleService(HttpServletRequest req, HttpServletResponse 
resp) throws ServletException, IOException {
         if (isAsync()) {
             if (executorRef != null) {
                 HttpConsumer consumer = doResolve(req, resp); // can be done 
sync
@@ -132,7 +148,7 @@ public class CamelServlet extends HttpServlet implements 
HttpRegistryProvider {
     }
 
     private void onError(HttpServletResponse resp, Exception e) {
-        //An error shouldn't occur as we should handle most of error in 
doService
+        //An error shouldn't occur as we should handle most error in doService
         log.error("Error processing request", e);
         try {
             resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -204,8 +220,6 @@ public class CamelServlet extends HttpServlet implements 
HttpRegistryProvider {
      *
      * @param  request          the {@link HttpServletRequest}
      * @param  response         the {@link HttpServletResponse}
-     * @throws ServletException
-     * @throws IOException
      */
     protected void doService(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
         log.trace("Service: {}", request);

Reply via email to