diff --git a/gateleen-expansion/src/main/java/org/swisspush/gateleen/expansion/ExpansionHandler.java b/gateleen-expansion/src/main/java/org/swisspush/gateleen/expansion/ExpansionHandler.java index 53546d9f..34133143 100755 --- a/gateleen-expansion/src/main/java/org/swisspush/gateleen/expansion/ExpansionHandler.java +++ b/gateleen-expansion/src/main/java/org/swisspush/gateleen/expansion/ExpansionHandler.java @@ -5,24 +5,16 @@ import io.vertx.core.MultiMap; import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; -import io.vertx.core.http.HttpClient; -import io.vertx.core.http.HttpClientRequest; -import io.vertx.core.http.HttpClientResponse; -import io.vertx.core.http.HttpMethod; -import io.vertx.core.http.HttpServerRequest; +import io.vertx.core.http.*; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.swisspush.gateleen.core.http.RequestLoggerFactory; import org.swisspush.gateleen.core.storage.ResourceStorage; -import org.swisspush.gateleen.core.util.ExpansionDeltaUtil; +import org.swisspush.gateleen.core.util.*; import org.swisspush.gateleen.core.util.ExpansionDeltaUtil.CollectionResourceContainer; import org.swisspush.gateleen.core.util.ExpansionDeltaUtil.SlashHandling; -import org.swisspush.gateleen.core.util.HttpServerRequestUtil; -import org.swisspush.gateleen.core.util.ResourceCollectionException; -import org.swisspush.gateleen.core.util.ResponseStatusCodeLogUtil; -import org.swisspush.gateleen.core.util.StatusCode; import org.swisspush.gateleen.routing.Rule; import org.swisspush.gateleen.routing.RuleFeaturesProvider; import org.swisspush.gateleen.routing.RuleProvider; @@ -502,7 +494,7 @@ private void makeStorageExpandRequest(final String targetUri, final List subReso Logger log = RequestLoggerFactory.getLogger(ExpansionHandler.class, req); HttpMethod reqMethod = HttpMethod.POST; String reqUri = targetUri + "?storageExpand=true"; - httpClient.request(reqMethod, reqUri, asyncResult -> { + httpClient.request(reqMethod, reqUri).onComplete(asyncResult -> { if (asyncResult.failed()) { log.warn("Failed request to {}: {}", targetUri + "?storageExpand=true", asyncResult.cause()); return; @@ -535,9 +527,8 @@ private void makeStorageExpandRequest(final String targetUri, final List subReso log.debug("NotFound: {}", targetUri); handler.handle(new ResourceNode(SERIOUS_EXCEPTION, new ResourceCollectionException(cRes.statusMessage(), StatusCode.NOT_FOUND))); } else if (StatusCode.INTERNAL_SERVER_ERROR.getStatusCode() == cRes.statusCode()) { - String fullResponseBody = data.toString(); - log.error("{}: {}: {}", INTERNAL_SERVER_ERROR, targetUri, fullResponseBody); - handler.handle(new ResourceNode(SERIOUS_EXCEPTION, new ResourceCollectionException(fullResponseBody, StatusCode.INTERNAL_SERVER_ERROR))); + log.error("error in request resource : {} message : {}", targetUri, data.toString()); + handler.handle(new ResourceNode(SERIOUS_EXCEPTION, new ResourceCollectionException(data.toString(), StatusCode.INTERNAL_SERVER_ERROR))); } else if (StatusCode.METHOD_NOT_ALLOWED.getStatusCode() == cRes.statusCode()) { log.error("storageExpand not allowed for: {}", targetUri); handler.handle(new ResourceNode(SERIOUS_EXCEPTION, new ResourceCollectionException(cRes.statusMessage(), StatusCode.METHOD_NOT_ALLOWED))); diff --git a/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java b/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java index 10a44d8e..d38c1c9a 100755 --- a/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java +++ b/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java @@ -47,8 +47,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import static io.vertx.core.http.HttpMethod.DELETE; -import static io.vertx.core.http.HttpMethod.PUT; import static org.swisspush.gateleen.core.util.HttpRequestHeader.CONTENT_LENGTH; /** @@ -504,28 +502,24 @@ public boolean handle(final RoutingContext ctx) { /* * 1) Un- / Register Listener / Routes */ - var requestMethod = request.method(); - if (requestMethod == PUT) { - var requestUri = request.uri(); - if (requestUri.contains(HOOKS_LISTENERS_URI_PART)) { - handleListenerRegistration(request); - return true; - } - if (requestUri.contains(HOOKS_ROUTE_URI_PART)) { - handleRouteRegistration(request); - return true; - } + if (isHookListenerRegistration(request)) { + handleListenerRegistration(request); + return true; } - if (requestMethod == DELETE) { - var requestUri = request.uri(); - if (requestUri.contains(HOOKS_LISTENERS_URI_PART)) { - handleListenerUnregistration(request); - return true; - } - if (requestUri.contains(HOOKS_ROUTE_URI_PART)) { - handleRouteUnregistration(request); - return true; - } + + if (isHookListenerUnregistration(request)) { + handleListenerUnregistration(request); + return true; + } + + if (isHookRouteRegistration(request)) { + handleRouteRegistration(request); + return true; + } + + if (isHookRouteUnregistration(request)) { + handleRouteUnregistration(request); + return true; } /* @@ -1660,6 +1654,46 @@ private String getListenerUrlSegment(String requestUrl) { return requestUrl.substring(pos + HOOKS_LISTENERS_URI_PART.length()); } + /** + * Checks if the given request is a listener unregistration instruction. + * + * @param request request + * @return boolean + */ + private boolean isHookListenerUnregistration(HttpServerRequest request) { + return request.uri().contains(HOOKS_LISTENERS_URI_PART) && HttpMethod.DELETE == request.method(); + } + + /** + * Checks if the given request is a listener registration instruction. + * + * @param request request + * @return boolean + */ + private boolean isHookListenerRegistration(HttpServerRequest request) { + return request.uri().contains(HOOKS_LISTENERS_URI_PART) && HttpMethod.PUT == request.method(); + } + + /** + * Checks if the given request is a route registration instruction. + * + * @param request request + * @return boolean + */ + private boolean isHookRouteRegistration(HttpServerRequest request) { + return request.uri().contains(HOOKS_ROUTE_URI_PART) && HttpMethod.PUT == request.method(); + } + + /** + * Checks if the given request is a route registration instruction. + * + * @param request request + * @return boolean + */ + private boolean isHookRouteUnregistration(HttpServerRequest request) { + return request.uri().contains(HOOKS_ROUTE_URI_PART) && HttpMethod.DELETE == request.method(); + } + /** * @param request Request to extract the value from. This instance gets manipulated * internally during call.