Repository: olingo-odata4 Updated Branches: refs/heads/master 1ce51fd4e -> 5e21bb2ba
[OLINGO-1201] Enhancements to run better with Netty Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/5e21bb2b Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/5e21bb2b Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/5e21bb2b Branch: refs/heads/master Commit: 5e21bb2ba5d677893b6f87fcd04e2fcd7034654e Parents: 1ce51fd Author: ramya vasanth <[email protected]> Authored: Tue Nov 14 09:39:31 2017 +0530 Committer: ramya vasanth <[email protected]> Committed: Tue Nov 14 09:39:31 2017 +0530 ---------------------------------------------------------------------- lib/server-api/pom.xml | 5 + .../olingo/server/api/ODataHttpHandler.java | 2 +- lib/server-core/pom.xml | 5 + .../server/core/ODataHttpHandlerImpl.java | 101 ++++++++++--------- .../server/core/debug/ServerCoreDebugger.java | 2 +- 5 files changed, 64 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5e21bb2b/lib/server-api/pom.xml ---------------------------------------------------------------------- diff --git a/lib/server-api/pom.xml b/lib/server-api/pom.xml index 6d3987e..f651116 100644 --- a/lib/server-api/pom.xml +++ b/lib/server-api/pom.xml @@ -50,6 +50,11 @@ <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>4.1.16.Final</version> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5e21bb2b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHttpHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHttpHandler.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHttpHandler.java index 4c18e2e..61e0f0f 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHttpHandler.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataHttpHandler.java @@ -39,7 +39,7 @@ public interface ODataHttpHandler extends ODataHandler { * @param response - HTTP OData response */ void process(HttpServletRequest request, HttpServletResponse response); - + /** * Sets the split parameter which is used for service resolution. * @param split the number of path segments reserved for service resolution; default is 0 http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5e21bb2b/lib/server-core/pom.xml ---------------------------------------------------------------------- diff --git a/lib/server-core/pom.xml b/lib/server-core/pom.xml index 7f88e08..2e7ed61 100644 --- a/lib/server-core/pom.xml +++ b/lib/server-core/pom.xml @@ -79,6 +79,11 @@ <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>4.1.16.Final</version> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5e21bb2b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java index 6c4b1b3..bbd94e5 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java @@ -125,7 +125,7 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { environment.put("servletPath", request.getServletPath()); return environment; } - + private String getIntAsString(final int number) { return number == 0 ? "unknown" : Integer.toString(number); } @@ -164,7 +164,7 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { writeContent(odResponse, response); } } - + static void writeContent(final ODataResponse odataResponse, final HttpServletResponse servletResponse) { try { ODataContent res = odataResponse.getODataContent(); @@ -195,7 +195,7 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { closeStream(output); } } - + private static void closeStream(final Channel closeable) { if (closeable != null) { try { @@ -205,7 +205,7 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { } } } - + private ODataRequest fillODataRequest(final ODataRequest odRequest, final HttpServletRequest httpRequest, final int split) throws ODataLibraryException { final int requestHandle = debugger.startRuntimeMeasurement("ODataHttpHandlerImpl", "fillODataRequest"); @@ -228,43 +228,44 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { debugger.stopRuntimeMeasurement(requestHandle); } } - + static HttpMethod extractMethod(final HttpServletRequest httpRequest) throws ODataLibraryException { - final HttpMethod httpRequestMethod; - try { - httpRequestMethod = HttpMethod.valueOf(httpRequest.getMethod()); - } catch (IllegalArgumentException e) { - throw new ODataHandlerException("HTTP method not allowed" + httpRequest.getMethod(), e, - ODataHandlerException.MessageKeys.HTTP_METHOD_NOT_ALLOWED, httpRequest.getMethod()); - } - try { - if (httpRequestMethod == HttpMethod.POST) { - String xHttpMethod = httpRequest.getHeader(HttpHeader.X_HTTP_METHOD); - String xHttpMethodOverride = httpRequest.getHeader(HttpHeader.X_HTTP_METHOD_OVERRIDE); - - if (xHttpMethod == null && xHttpMethodOverride == null) { - return httpRequestMethod; - } else if (xHttpMethod == null) { - return HttpMethod.valueOf(xHttpMethodOverride); - } else if (xHttpMethodOverride == null) { - return HttpMethod.valueOf(xHttpMethod); - } else { - if (!xHttpMethod.equalsIgnoreCase(xHttpMethodOverride)) { - throw new ODataHandlerException("Ambiguous X-HTTP-Methods", - ODataHandlerException.MessageKeys.AMBIGUOUS_XHTTP_METHOD, xHttpMethod, xHttpMethodOverride); - } - return HttpMethod.valueOf(xHttpMethod); - } - } else { - return httpRequestMethod; - } - } catch (IllegalArgumentException e) { - throw new ODataHandlerException("Invalid HTTP method" + httpRequest.getMethod(), e, - ODataHandlerException.MessageKeys.INVALID_HTTP_METHOD, httpRequest.getMethod()); - } - } - - static void fillUriInformation(final ODataRequest odRequest, final HttpServletRequest httpRequest, final int split) { + final HttpMethod httpRequestMethod; + try { + httpRequestMethod = HttpMethod.valueOf(httpRequest.getMethod()); + } catch (IllegalArgumentException e) { + throw new ODataHandlerException("HTTP method not allowed" + httpRequest.getMethod(), e, + ODataHandlerException.MessageKeys.HTTP_METHOD_NOT_ALLOWED, httpRequest.getMethod()); + } + try { + if (httpRequestMethod == HttpMethod.POST) { + String xHttpMethod = httpRequest.getHeader(HttpHeader.X_HTTP_METHOD); + String xHttpMethodOverride = httpRequest.getHeader(HttpHeader.X_HTTP_METHOD_OVERRIDE); + + if (xHttpMethod == null && xHttpMethodOverride == null) { + return httpRequestMethod; + } else if (xHttpMethod == null) { + return HttpMethod.valueOf(xHttpMethodOverride); + } else if (xHttpMethodOverride == null) { + return HttpMethod.valueOf(xHttpMethod); + } else { + if (!xHttpMethod.equalsIgnoreCase(xHttpMethodOverride)) { + throw new ODataHandlerException("Ambiguous X-HTTP-Methods", + ODataHandlerException.MessageKeys.AMBIGUOUS_XHTTP_METHOD, xHttpMethod, xHttpMethodOverride); + } + return HttpMethod.valueOf(xHttpMethod); + } + } else { + return httpRequestMethod; + } + } catch (IllegalArgumentException e) { + throw new ODataHandlerException("Invalid HTTP method" + httpRequest.getMethod(), e, + ODataHandlerException.MessageKeys.INVALID_HTTP_METHOD, httpRequest.getMethod()); + } + } + + static void fillUriInformation(final ODataRequest odRequest, + final HttpServletRequest httpRequest, final int split) { String rawRequestUri = httpRequest.getRequestURL().toString(); String rawODataPath; @@ -274,10 +275,12 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { int beginIndex = rawRequestUri.indexOf(requestMapping) + requestMapping.length(); rawODataPath = rawRequestUri.substring(beginIndex); }else if(!"".equals(httpRequest.getServletPath())) { - int beginIndex = rawRequestUri.indexOf(httpRequest.getServletPath()) + httpRequest.getServletPath().length(); + int beginIndex = rawRequestUri.indexOf(httpRequest.getServletPath()) + + httpRequest.getServletPath().length(); rawODataPath = rawRequestUri.substring(beginIndex); } else if (!"".equals(httpRequest.getContextPath())) { - int beginIndex = rawRequestUri.indexOf(httpRequest.getContextPath()) + httpRequest.getContextPath().length(); + int beginIndex = rawRequestUri.indexOf(httpRequest.getContextPath()) + + httpRequest.getContextPath().length(); rawODataPath = rawRequestUri.substring(beginIndex); } else { rawODataPath = httpRequest.getRequestURI(); @@ -310,13 +313,13 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { } static void copyHeaders(ODataRequest odRequest, final HttpServletRequest req) { - for (final Enumeration<?> headerNames = req.getHeaderNames(); headerNames.hasMoreElements();) { - final String headerName = (String) headerNames.nextElement(); - @SuppressWarnings("unchecked") - // getHeaders() says it returns an Enumeration of String. - final List<String> headerValues = Collections.list(req.getHeaders(headerName)); - odRequest.addHeader(headerName, headerValues); - } + for (final Enumeration<?> headerNames = req.getHeaderNames(); headerNames.hasMoreElements();) { + final String headerName = (String) headerNames.nextElement(); + @SuppressWarnings("unchecked") + // getHeaders() says it returns an Enumeration of String. + final List<String> headerValues = Collections.list(req.getHeaders(headerName)); + odRequest.addHeader(headerName, headerValues); + } } @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5e21bb2b/lib/server-core/src/main/java/org/apache/olingo/server/core/debug/ServerCoreDebugger.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/debug/ServerCoreDebugger.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/debug/ServerCoreDebugger.java index cf80073..1fd85b7 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/debug/ServerCoreDebugger.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/debug/ServerCoreDebugger.java @@ -62,7 +62,7 @@ public class ServerCoreDebugger { } } } - + public ODataResponse createDebugResponse(final ODataRequest request, final ODataResponse response, final Exception exception, final UriInfo uriInfo, final Map<String, String> serverEnvironmentVariables) { // Failsafe so we do not generate unauthorized debug messages
