You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2019/05/22 18:51:28 UTC

[knox] branch master updated: KNOX-1864 - Knox returns HTTP 405 Method Not Allowed error with HTTP PATCH method (#91)

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

krisden pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new c80ad98  KNOX-1864 - Knox returns HTTP 405 Method Not Allowed error with HTTP PATCH method (#91)
c80ad98 is described below

commit c80ad98e324b63a0aa4f88f77b7c310e54a9ff21
Author: bvanhaute2 <50...@users.noreply.github.com>
AuthorDate: Wed May 22 19:15:05 2019 +0200

    KNOX-1864 - Knox returns HTTP 405 Method Not Allowed error with HTTP PATCH method (#91)
---
 .../apache/knox/gateway/dispatch/AbstractGatewayDispatch.java |  6 ++++++
 .../org/apache/knox/gateway/dispatch/DefaultDispatch.java     | 11 +++++++++++
 .../main/java/org/apache/knox/gateway/dispatch/Dispatch.java  |  3 +++
 .../apache/knox/gateway/dispatch/GatewayDispatchFilter.java   |  9 +++++++++
 4 files changed, 29 insertions(+)

diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
index 0214255..3c63f2b 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
@@ -95,6 +95,12 @@ public abstract class AbstractGatewayDispatch implements Dispatch {
   }
 
   @Override
+  public void doPatch(URI url, HttpServletRequest request, HttpServletResponse response )
+      throws IOException, URISyntaxException {
+    response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
+  }
+
+  @Override
   public void doDelete(URI url, HttpServletRequest request, HttpServletResponse response )
       throws IOException, URISyntaxException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java
index 5f0b3e4..77d38a1 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java
@@ -26,6 +26,7 @@ import org.apache.http.client.methods.HttpHead;
 import org.apache.http.client.methods.HttpOptions;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpPatch;
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.entity.ContentType;
 import org.apache.knox.gateway.SpiGatewayMessages;
@@ -273,6 +274,16 @@ public class DefaultDispatch extends AbstractGatewayDispatch {
    }
 
    @Override
+   public void doPatch(URI url, HttpServletRequest request, HttpServletResponse response)
+         throws IOException, URISyntaxException {
+      HttpPatch method = new HttpPatch(url);
+      HttpEntity entity = createRequestEntity(request);
+      method.setEntity(entity);
+      copyRequestHeaderFields(method, request);
+      executeRequest(method, request, response);
+   }
+
+   @Override
    public void doPost(URI url, HttpServletRequest request, HttpServletResponse response)
          throws IOException, URISyntaxException {
       HttpPost method = new HttpPost(url);
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/Dispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/Dispatch.java
index 32f985d..cca8064 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/Dispatch.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/Dispatch.java
@@ -47,6 +47,9 @@ public interface Dispatch {
   void doPut( URI url, HttpServletRequest request, HttpServletResponse response )
       throws IOException, ServletException, URISyntaxException;
 
+  void doPatch( URI url, HttpServletRequest request, HttpServletResponse response )
+      throws IOException, ServletException, URISyntaxException;
+
   void doDelete( URI url, HttpServletRequest request, HttpServletResponse response )
       throws IOException, ServletException, URISyntaxException;
 
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/GatewayDispatchFilter.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/GatewayDispatchFilter.java
index 79442db..044c32c 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/GatewayDispatchFilter.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/GatewayDispatchFilter.java
@@ -60,6 +60,7 @@ public class GatewayDispatchFilter extends AbstractGatewayFilter {
     map.put("GET", new GetAdapter());
     map.put("POST", new PostAdapter());
     map.put("PUT", new PutAdapter());
+    map.put("PATCH", new PatchAdapter());
     map.put("DELETE", new DeleteAdapter());
     map.put("OPTIONS", new OptionsAdapter());
     map.put("HEAD", new HeadAdapter());
@@ -190,6 +191,14 @@ public class GatewayDispatchFilter extends AbstractGatewayFilter {
     }
   }
 
+  private static class PatchAdapter implements Adapter {
+    @Override
+    public void doMethod(Dispatch dispatch, HttpServletRequest request, HttpServletResponse response)
+        throws IOException, ServletException, URISyntaxException {
+      dispatch.doPatch( dispatch.getDispatchUrl(request), request, response);
+    }
+  }
+
   private static class DeleteAdapter implements Adapter {
     @Override
     public void doMethod(Dispatch dispatch, HttpServletRequest request, HttpServletResponse response)