abdullah alamoudi has submitted this change and it was merged. Change subject: Fix the names of Let to Servlet ......................................................................
Fix the names of Let to Servlet Change-Id: Ib2f63f37ee9ef063930478028e3e05ca9dd4742c Reviewed-on: https://asterix-gerrit.ics.uci.edu/1486 Sonar-Qube: Jenkins <[email protected]> Reviewed-by: Michael Blow <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterControllerDetailsApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/FeedServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryWebInterfaceServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RestApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/VersionApiServlet.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java D asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/LetUtil.java A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/Servlets.java M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSFeedServlet.java M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSTestServer.java M asterixdb/asterix-server/pom.xml M asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/SampleLocalClusterIT.java M hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServlet.java M hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/GetRequest.java M hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java M hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java M hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/PostRequest.java R hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java 28 files changed, 299 insertions(+), 325 deletions(-) Approvals: Michael Blow: Looks good to me, approved Jenkins: Verified; No violations found; Verified Objections: Jenkins: Violations found diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java index 95eb6fb..395365a 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java @@ -53,11 +53,12 @@ import org.apache.hyracks.api.client.IHyracksClientConnection; import org.apache.hyracks.api.dataset.IHyracksDataset; import org.apache.hyracks.client.dataset.HyracksDataset; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; +import org.apache.hyracks.http.server.utils.HttpUtil.ContentType; +import org.apache.hyracks.http.server.utils.HttpUtil.Encoding; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpResponseStatus; @@ -111,7 +112,7 @@ String printJob = request.getParameter("print-job"); String executeQuery = request.getParameter("execute-query"); try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, ContentType.TEXT_HTML, Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure setting content type", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); @@ -162,7 +163,7 @@ if ("/".equals(requestURI)) { try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure setting content type", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); @@ -181,16 +182,16 @@ // Special handler for font files and .png resources if (resourcePath.endsWith(".png")) { BufferedImage img = ImageIO.read(is); - ServletUtils.setContentType(response, IServlet.ContentType.IMG_PNG); + HttpUtil.setContentType(response, HttpUtil.ContentType.IMG_PNG); OutputStream outputStream = response.outputStream(); String formatName = "png"; ImageIO.write(img, formatName, outputStream); outputStream.close(); return; } - String type = IServlet.ContentType.mime(QueryWebInterfaceServlet.extension(resourcePath)); - ServletUtils.setContentType(response, "".equals(type) ? IServlet.ContentType.TEXT_PLAIN : type, - IServlet.Encoding.UTF8); + String type = HttpUtil.mime(QueryWebInterfaceServlet.extension(resourcePath)); + HttpUtil.setContentType(response, "".equals(type) ? HttpUtil.ContentType.TEXT_PLAIN : type, + HttpUtil.Encoding.UTF8); writeOutput(response, is, resourcePath); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure handling request", e); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java index e93108d..71559b1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java @@ -32,11 +32,10 @@ import org.apache.asterix.common.config.ReplicationProperties; import org.apache.asterix.common.utils.JSONUtil; import org.apache.asterix.runtime.utils.ClusterStateManager; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -67,7 +66,7 @@ } protected void getUnsafe(IServletRequest request, IServletResponse response) throws IOException { - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); PrintWriter responseWriter = response.writer(); try { ObjectNode json; diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterControllerDetailsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterControllerDetailsApiServlet.java index 3d9167e..69f5db4 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterControllerDetailsApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterControllerDetailsApiServlet.java @@ -27,10 +27,9 @@ import java.util.logging.Logger; import org.apache.hyracks.api.client.IHyracksClientConnection; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -58,7 +57,7 @@ } else { json = processNode(request, hcc); } - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); responseWriter.write(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(json)); } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown response.setStatus(HttpResponseStatus.NOT_FOUND); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java index 66064aa..a6c0783 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java @@ -39,11 +39,10 @@ import org.apache.hyracks.api.client.IHyracksClientConnection; import org.apache.hyracks.api.client.NodeControllerInfo; import org.apache.hyracks.api.io.FileSplit; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -73,7 +72,7 @@ } response.setStatus(HttpResponseStatus.OK); try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure setting content type", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java index 709db4b..4d6f641 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java @@ -37,10 +37,9 @@ import org.apache.asterix.api.http.servlet.ServletConstants; import org.apache.asterix.runtime.utils.AppContextInfo; import org.apache.hyracks.api.client.IHyracksClientConnection; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; @@ -57,7 +56,7 @@ @Override protected void getUnsafe(IServletRequest request, IServletResponse response) throws IOException { - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); PrintWriter responseWriter = response.writer(); ObjectNode json; ObjectMapper om = new ObjectMapper(); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/FeedServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/FeedServlet.java index 7fe7370..7831674 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/FeedServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/FeedServlet.java @@ -31,11 +31,10 @@ import javax.imageio.ImageIO; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import io.netty.handler.codec.http.HttpResponseStatus; @@ -54,7 +53,7 @@ String requestURI = request.getHttpRequest().uri(); if ("/".equals(requestURI)) { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML); resourcePath = "/feed/home.html"; } else { resourcePath = requestURI; @@ -72,12 +71,12 @@ BufferedImage img = ImageIO.read(is); OutputStream outputStream = response.outputStream(); String formatName = "png"; - ServletUtils.setContentType(response, IServlet.ContentType.IMG_PNG); + HttpUtil.setContentType(response, HttpUtil.ContentType.IMG_PNG); ImageIO.write(img, formatName, outputStream); return; } - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML, HttpUtil.Encoding.UTF8); InputStreamReader isr = new InputStreamReader(is); StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(isr); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java index f6b80fc..30718cf 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NodeControllerDetailsApiServlet.java @@ -31,10 +31,9 @@ import org.apache.asterix.runtime.utils.ClusterStateManager; import org.apache.hyracks.api.client.IHyracksClientConnection; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -67,7 +66,7 @@ } else { json = processNode(request, hcc); } - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); responseWriter.write(om.writerWithDefaultPrettyPrinter().writeValueAsString(json)); } catch (IllegalStateException e) { // NOSONAR - exception not logged or rethrown response.setStatus(HttpResponseStatus.SERVICE_UNAVAILABLE); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java index 06ddf44..522fd29 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java @@ -39,11 +39,10 @@ import org.apache.hyracks.api.dataset.ResultSetId; import org.apache.hyracks.api.job.JobId; import org.apache.hyracks.client.dataset.HyracksDataset; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -68,7 +67,7 @@ response.setStatus(HttpResponseStatus.OK); // TODO this seems wrong ... try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure setting content type", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java index 7cb492b..3c7a1a1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java @@ -54,11 +54,10 @@ import org.apache.hyracks.api.client.IHyracksClientConnection; import org.apache.hyracks.api.dataset.IHyracksDataset; import org.apache.hyracks.client.dataset.HyracksDataset; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; @@ -284,13 +283,13 @@ private static SessionConfig.OutputFormat getFormat(String format) { if (format != null) { - if (format.startsWith(IServlet.ContentType.CSV)) { + if (format.startsWith(HttpUtil.ContentType.CSV)) { return SessionConfig.OutputFormat.CSV; } - if (format.equals(IServlet.ContentType.APPLICATION_ADM)) { + if (format.equals(HttpUtil.ContentType.APPLICATION_ADM)) { return SessionConfig.OutputFormat.ADM; } - if (format.startsWith(IServlet.ContentType.APPLICATION_JSON)) { + if (format.startsWith(HttpUtil.ContentType.APPLICATION_JSON)) { return Boolean.parseBoolean(getParameterValue(format, Attribute.LOSSLESS.str())) ? SessionConfig.OutputFormat.LOSSLESS_JSON : SessionConfig.OutputFormat.CLEAN_JSON; } @@ -374,10 +373,10 @@ private static void printType(PrintWriter pw, SessionConfig sessionConfig) { switch (sessionConfig.fmt()) { case ADM: - printField(pw, ResultFields.TYPE.str(), IServlet.ContentType.APPLICATION_ADM); + printField(pw, ResultFields.TYPE.str(), HttpUtil.ContentType.APPLICATION_ADM); break; case CSV: - String contentType = IServlet.ContentType.CSV + "; header=" + String contentType = HttpUtil.ContentType.CSV + "; header=" + (sessionConfig.is(SessionConfig.FORMAT_CSV_HEADER) ? "present" : "absent"); printField(pw, ResultFields.TYPE.str(), contentType); break; @@ -437,7 +436,7 @@ int sep = contentTypeParam.indexOf(';'); final String contentType = sep < 0 ? contentTypeParam.trim() : contentTypeParam.substring(0, sep).trim(); RequestParameters param = new RequestParameters(); - if (IServlet.ContentType.APPLICATION_JSON.equals(contentType)) { + if (HttpUtil.ContentType.APPLICATION_JSON.equals(contentType)) { try { JsonNode jsonRequest = new ObjectMapper().readTree(getRequestBody(request)); param.statement = jsonRequest.get(Parameter.STATEMENT.str()).asText(); @@ -485,7 +484,7 @@ ResultDelivery delivery = parseResultDelivery(param.mode); SessionConfig sessionConfig = createSessionConfig(param, resultWriter); - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); HttpResponseStatus status = HttpResponseStatus.OK; Stats stats = new Stats(); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java index 3d31616..075615e 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java @@ -33,11 +33,10 @@ import org.apache.hyracks.api.dataset.ResultSetId; import org.apache.hyracks.api.job.JobId; import org.apache.hyracks.client.dataset.HyracksDataset; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -61,7 +60,7 @@ } response.setStatus(HttpResponseStatus.OK); try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure setting content type", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryWebInterfaceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryWebInterfaceServlet.java index 96df30f..8a41fc1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryWebInterfaceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryWebInterfaceServlet.java @@ -29,11 +29,10 @@ import org.apache.asterix.common.config.ExternalProperties; import org.apache.asterix.runtime.utils.AppContextInfo; import org.apache.commons.io.IOUtils; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -71,7 +70,7 @@ response.setStatus(HttpResponseStatus.OK); if ("/".equals(requestURI)) { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_HTML); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_HTML); resourcePath = "/queryui/queryui.html"; } else { resourcePath = requestURI; @@ -85,10 +84,10 @@ int i = resourcePath.lastIndexOf('.'); if (i >= 0) { String extension = resourcePath.substring(i); - String mime = IServlet.ContentType.mime(extension); + String mime = HttpUtil.mime(extension); if (mime != null) { OutputStream out = response.outputStream(); - ServletUtils.setContentType(response, mime); + HttpUtil.setContentType(response, mime); try { IOUtils.copy(is, out); } catch (Exception e) { @@ -107,7 +106,7 @@ } private void doPost(IServletResponse response) throws IOException { - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); ExternalProperties externalProperties = AppContextInfo.INSTANCE.getExternalProperties(); response.setStatus(HttpResponseStatus.OK); ObjectMapper om = new ObjectMapper(); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RestApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RestApiServlet.java index b069efe..d1ae95d 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RestApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RestApiServlet.java @@ -49,11 +49,10 @@ import org.apache.hyracks.api.client.IHyracksClientConnection; import org.apache.hyracks.api.dataset.IHyracksDataset; import org.apache.hyracks.client.dataset.HyracksDataset; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -85,7 +84,7 @@ * based on the Accept: header and other servlet parameters. */ static SessionConfig initResponse(IServletRequest request, IServletResponse response) throws IOException { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_PLAIN, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_PLAIN, HttpUtil.Encoding.UTF8); // CLEAN_JSON output is the default; most generally useful for a // programmatic HTTP API OutputFormat format = OutputFormat.CLEAN_JSON; @@ -135,20 +134,20 @@ // Now that format is set, output the content-type switch (format) { case ADM: - ServletUtils.setContentType(response, "application/x-adm"); + HttpUtil.setContentType(response, "application/x-adm"); break; case CLEAN_JSON: // No need to reflect "clean-ness" in output type; fall through case LOSSLESS_JSON: - ServletUtils.setContentType(response, "application/json"); + HttpUtil.setContentType(response, "application/json"); break; case CSV: // Check for header parameter or in Accept:. if ("present".equals(request.getParameter("header")) || accept.contains("header=present")) { - ServletUtils.setContentType(response, "text/csv; header=present"); + HttpUtil.setContentType(response, "text/csv; header=present"); sessionConfig.set(SessionConfig.FORMAT_CSV_HEADER, true); } else { - ServletUtils.setContentType(response, "text/csv; header=absent"); + HttpUtil.setContentType(response, "text/csv; header=absent"); } break; default: diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java index 5c569ed..d9dc424 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ShutdownApiServlet.java @@ -30,11 +30,10 @@ import org.apache.asterix.common.config.GlobalConfig; import org.apache.asterix.runtime.utils.ClusterStateManager; import org.apache.hyracks.api.client.IHyracksClientConnection; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -71,7 +70,7 @@ }, "Shutdown Servlet Worker"); try { - ServletUtils.setContentType(response, IServlet.ContentType.APPLICATION_JSON, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.APPLICATION_JSON, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure handling request", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/VersionApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/VersionApiServlet.java index 1b2c2e6..62b85cd 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/VersionApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/VersionApiServlet.java @@ -28,11 +28,10 @@ import java.util.logging.Logger; import org.apache.asterix.runtime.utils.AppContextInfo; -import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -62,7 +61,7 @@ responseObject.put(e.getKey(), e.getValue()); } try { - ServletUtils.setContentType(response, IServlet.ContentType.TEXT_PLAIN, IServlet.Encoding.UTF8); + HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_PLAIN, HttpUtil.Encoding.UTF8); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failure handling request", e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java index 8ea4193..62eb250 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java @@ -53,7 +53,7 @@ import org.apache.asterix.common.config.MetadataProperties; import org.apache.asterix.common.context.IStorageComponentProvider; import org.apache.asterix.common.library.ILibraryManager; -import org.apache.asterix.common.utils.LetUtil.Lets; +import org.apache.asterix.common.utils.Servlets; import org.apache.asterix.external.library.ExternalLibraryManager; import org.apache.asterix.file.StorageComponentProvider; import org.apache.asterix.messaging.CCMessageBroker; @@ -163,7 +163,7 @@ externalProperties.getWebInterfacePort()); IHyracksClientConnection hcc = getNewHyracksClientConnection(); webServer.setAttribute(HYRACKS_CONNECTION_ATTR, hcc); - webServer.addLet(new ApiServlet(webServer.ctx(), new String[] { "/*" }, + webServer.addServlet(new ApiServlet(webServer.ctx(), new String[] { "/*" }, ccExtensionManager.getAqlCompilationProvider(), ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider)); return webServer; @@ -179,33 +179,33 @@ ((ClusterControllerService) appCtx.getControllerService()).getExecutor()); // AQL rest APIs. - addLet(jsonAPIServer, Lets.AQL_QUERY); - addLet(jsonAPIServer, Lets.AQL_UPDATE); - addLet(jsonAPIServer, Lets.AQL_DDL); - addLet(jsonAPIServer, Lets.AQL); + addServlet(jsonAPIServer, Servlets.AQL_QUERY); + addServlet(jsonAPIServer, Servlets.AQL_UPDATE); + addServlet(jsonAPIServer, Servlets.AQL_DDL); + addServlet(jsonAPIServer, Servlets.AQL); // SQL+x+ rest APIs. - addLet(jsonAPIServer, Lets.SQLPP_QUERY); - addLet(jsonAPIServer, Lets.SQLPP_UPDATE); - addLet(jsonAPIServer, Lets.SQLPP_DDL); - addLet(jsonAPIServer, Lets.SQLPP); + addServlet(jsonAPIServer, Servlets.SQLPP_QUERY); + addServlet(jsonAPIServer, Servlets.SQLPP_UPDATE); + addServlet(jsonAPIServer, Servlets.SQLPP_DDL); + addServlet(jsonAPIServer, Servlets.SQLPP); // Other APIs. - addLet(jsonAPIServer, Lets.QUERY_STATUS); - addLet(jsonAPIServer, Lets.QUERY_RESULT); - addLet(jsonAPIServer, Lets.QUERY_SERVICE); - addLet(jsonAPIServer, Lets.CONNECTOR); - addLet(jsonAPIServer, Lets.SHUTDOWN); - addLet(jsonAPIServer, Lets.VERSION); - addLet(jsonAPIServer, Lets.CLUSTER_STATE); - addLet(jsonAPIServer, Lets.CLUSTER_STATE_NODE_DETAIL); // this must not precede add of CLUSTER_STATE - addLet(jsonAPIServer, Lets.CLUSTER_STATE_CC_DETAIL); // this must not precede add of CLUSTER_STATE - addLet(jsonAPIServer, Lets.DIAGNOSTICS); + addServlet(jsonAPIServer, Servlets.QUERY_STATUS); + addServlet(jsonAPIServer, Servlets.QUERY_RESULT); + addServlet(jsonAPIServer, Servlets.QUERY_SERVICE); + addServlet(jsonAPIServer, Servlets.CONNECTOR); + addServlet(jsonAPIServer, Servlets.SHUTDOWN); + addServlet(jsonAPIServer, Servlets.VERSION); + addServlet(jsonAPIServer, Servlets.CLUSTER_STATE); + addServlet(jsonAPIServer, Servlets.CLUSTER_STATE_NODE_DETAIL); // must not precede add of CLUSTER_STATE + addServlet(jsonAPIServer, Servlets.CLUSTER_STATE_CC_DETAIL); // must not precede add of CLUSTER_STATE + addServlet(jsonAPIServer, Servlets.DIAGNOSTICS); return jsonAPIServer; } - protected void addLet(HttpServer server, Lets let) { - server.addLet(createServlet(server, let, let.getPath())); + protected void addServlet(HttpServer server, String path) { + server.addServlet(createServlet(server, path, path)); } protected HttpServer setupQueryWebServer(ExternalProperties externalProperties) throws Exception { @@ -213,7 +213,7 @@ externalProperties.getQueryWebInterfacePort()); IHyracksClientConnection hcc = getNewHyracksClientConnection(); queryWebServer.setAttribute(HYRACKS_CONNECTION_ATTR, hcc); - queryWebServer.addLet(new QueryWebInterfaceServlet(queryWebServer.ctx(), new String[] { "/*" })); + queryWebServer.addServlet(new QueryWebInterfaceServlet(queryWebServer.ctx(), new String[] { "/*" })); return queryWebServer; } @@ -221,56 +221,56 @@ HttpServer feedServer = new HttpServer(webManager.getBosses(), webManager.getWorkers(), externalProperties.getFeedServerPort()); feedServer.setAttribute(HYRACKS_CONNECTION_ATTR, getNewHyracksClientConnection()); - feedServer.addLet(new FeedServlet(feedServer.ctx(), new String[] { "/" })); + feedServer.addServlet(new FeedServlet(feedServer.ctx(), new String[] { "/" })); return feedServer; } - protected IServlet createServlet(HttpServer server, Lets key, String... paths) { + protected IServlet createServlet(HttpServer server, String key, String... paths) { switch (key) { - case AQL: + case Servlets.AQL: return new FullApiServlet(server.ctx(), paths, ccExtensionManager.getAqlCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case AQL_QUERY: + case Servlets.AQL_QUERY: return new QueryApiServlet(server.ctx(), paths, ccExtensionManager.getAqlCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case AQL_UPDATE: + case Servlets.AQL_UPDATE: return new UpdateApiServlet(server.ctx(), paths, ccExtensionManager.getAqlCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case AQL_DDL: + case Servlets.AQL_DDL: return new DdlApiServlet(server.ctx(), paths, ccExtensionManager.getAqlCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case SQLPP: + case Servlets.SQLPP: return new FullApiServlet(server.ctx(), paths, ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case SQLPP_QUERY: + case Servlets.SQLPP_QUERY: return new QueryApiServlet(server.ctx(), paths, ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case SQLPP_UPDATE: + case Servlets.SQLPP_UPDATE: return new UpdateApiServlet(server.ctx(), paths, ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case SQLPP_DDL: + case Servlets.SQLPP_DDL: return new DdlApiServlet(server.ctx(), paths, ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case QUERY_STATUS: + case Servlets.QUERY_STATUS: return new QueryStatusApiServlet(server.ctx(), paths); - case QUERY_RESULT: + case Servlets.QUERY_RESULT: return new QueryResultApiServlet(server.ctx(), paths); - case QUERY_SERVICE: + case Servlets.QUERY_SERVICE: return new QueryServiceServlet(server.ctx(), paths, ccExtensionManager.getSqlppCompilationProvider(), getStatementExecutorFactory(), componentProvider); - case CONNECTOR: + case Servlets.CONNECTOR: return new ConnectorApiServlet(server.ctx(), paths); - case SHUTDOWN: + case Servlets.SHUTDOWN: return new ShutdownApiServlet(server.ctx(), paths); - case VERSION: + case Servlets.VERSION: return new VersionApiServlet(server.ctx(), paths); - case CLUSTER_STATE: + case Servlets.CLUSTER_STATE: return new ClusterApiServlet(server.ctx(), paths); - case CLUSTER_STATE_NODE_DETAIL: + case Servlets.CLUSTER_STATE_NODE_DETAIL: return new NodeControllerDetailsApiServlet(server.ctx(), paths); - case CLUSTER_STATE_CC_DETAIL: + case Servlets.CLUSTER_STATE_CC_DETAIL: return new ClusterControllerDetailsApiServlet(server.ctx(), paths); - case DIAGNOSTICS: + case Servlets.DIAGNOSTICS: return new DiagnosticsApiServlet(server.ctx(), paths); default: throw new IllegalStateException(String.valueOf(key)); diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/LetUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/LetUtil.java deleted file mode 100644 index 2fe9380..0000000 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/LetUtil.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.asterix.common.utils; - -public class LetUtil { - - public enum Lets { - AQL("/aql"), - AQL_QUERY("/query"), - AQL_UPDATE("/update"), - AQL_DDL("/ddl"), - SQLPP("/sqlpp"), - SQLPP_QUERY("/query/sqlpp"), - SQLPP_UPDATE("/update/sqlpp"), - SQLPP_DDL("/ddl/sqlpp"), - QUERY_STATUS("/query/status"), - QUERY_RESULT("/query/result"), - QUERY_SERVICE("/query/service"), - CONNECTOR("/connector"), - SHUTDOWN("/admin/shutdown"), - VERSION("/admin/version"), - CLUSTER_STATE("/admin/cluster/*"), - CLUSTER_STATE_NODE_DETAIL("/admin/cluster/node/*"), - CLUSTER_STATE_CC_DETAIL("/admin/cluster/cc/*"), - DIAGNOSTICS("/admin/diagnostics"); - - private final String path; - - Lets(String path) { - this.path = path; - } - - public String getPath() { - return path; - } - - } - - private LetUtil() { - throw new AssertionError("No objects of this class should be created."); - } -} diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/Servlets.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/Servlets.java new file mode 100644 index 0000000..5ffb334 --- /dev/null +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/Servlets.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.asterix.common.utils; + +public class Servlets { + + public static final String AQL = "/aql"; + public static final String AQL_QUERY = "/query"; + public static final String AQL_UPDATE = "/update"; + public static final String AQL_DDL = "/ddl"; + public static final String SQLPP = "/sqlpp"; + public static final String SQLPP_QUERY = "/query/sqlpp"; + public static final String SQLPP_UPDATE = "/update/sqlpp"; + public static final String SQLPP_DDL = "/ddl/sqlpp"; + public static final String QUERY_STATUS = "/query/status"; + public static final String QUERY_RESULT = "/query/result"; + public static final String QUERY_SERVICE = "/query/service"; + public static final String CONNECTOR = "/connector"; + public static final String SHUTDOWN = "/admin/shutdown"; + public static final String VERSION = "/admin/version"; + public static final String CLUSTER_STATE = "/admin/cluster/*"; + public static final String CLUSTER_STATE_NODE_DETAIL = "/admin/cluster/node/*"; + public static final String CLUSTER_STATE_CC_DETAIL = "/admin/cluster/cc/*"; + public static final String DIAGNOSTICS = "/admin/diagnostics"; + + private Servlets() { + } +} diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java index b5fbcf5..288a739 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java @@ -51,7 +51,7 @@ import java.util.regex.Pattern; import org.apache.asterix.common.config.GlobalConfig; -import org.apache.asterix.common.utils.LetUtil.Lets; +import org.apache.asterix.common.utils.Servlets; import org.apache.asterix.test.base.ComparisonException; import org.apache.asterix.test.server.ITestServer; import org.apache.asterix.test.server.TestServerProvider; @@ -93,14 +93,15 @@ // see // https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers/417184 private static final long MAX_URL_LENGTH = 2000l; - private static final Pattern JAVA_BLOCK_COMMENT_PATTERN = Pattern.compile("/\\*.*\\*/", - Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern JAVA_BLOCK_COMMENT_PATTERN = + Pattern.compile("/\\*.*\\*/", Pattern.MULTILINE | Pattern.DOTALL); private static final Pattern JAVA_LINE_COMMENT_PATTERN = Pattern.compile("//.*$", Pattern.MULTILINE); private static final Pattern SHELL_LINE_COMMENT_PATTERN = Pattern.compile("#.*$", Pattern.MULTILINE); private static final Pattern REGEX_LINES_PATTERN = Pattern.compile("^(-)?/(.*)/([im]*)$"); - private static final Pattern POLL_TIMEOUT_PATTERN = Pattern.compile("polltimeoutsecs=(\\d+)(\\D|$)", - Pattern.MULTILINE); - private static final Pattern POLL_DELAY_PATTERN = Pattern.compile("polldelaysecs=(\\d+)(\\D|$)", Pattern.MULTILINE); + private static final Pattern POLL_TIMEOUT_PATTERN = + Pattern.compile("polltimeoutsecs=(\\d+)(\\D|$)", Pattern.MULTILINE); + private static final Pattern POLL_DELAY_PATTERN = + Pattern.compile("polldelaysecs=(\\d+)(\\D|$)", Pattern.MULTILINE); private static final Pattern HANDLE_VARIABLE_PATTERN = Pattern.compile("handlevariable=(\\w+)"); private static final Pattern VARIABLE_REF_PATTERN = Pattern.compile("\\$(\\w+)"); @@ -150,10 +151,10 @@ public void runScriptAndCompareWithResult(File scriptFile, PrintWriter print, File expectedFile, File actualFile) throws Exception { System.err.println("Expected results file: " + expectedFile.toString()); - BufferedReader readerExpected = new BufferedReader( - new InputStreamReader(new FileInputStream(expectedFile), "UTF-8")); - BufferedReader readerActual = new BufferedReader( - new InputStreamReader(new FileInputStream(actualFile), "UTF-8")); + BufferedReader readerExpected = + new BufferedReader(new InputStreamReader(new FileInputStream(expectedFile), "UTF-8")); + BufferedReader readerActual = + new BufferedReader(new InputStreamReader(new FileInputStream(actualFile), "UTF-8")); boolean regex = false; try { if (actualFile.toString().endsWith(".regex")) { @@ -332,10 +333,10 @@ throws Exception { System.err.println("Expected results file: " + expectedFile.toString()); String lineExpected, lineActual; - try (BufferedReader readerExpected = new BufferedReader( - new InputStreamReader(new FileInputStream(expectedFile), "UTF-8")); - BufferedReader readerActual = new BufferedReader( - new InputStreamReader(new FileInputStream(actualFile), "UTF-8"))) { + try (BufferedReader readerExpected = + new BufferedReader(new InputStreamReader(new FileInputStream(expectedFile), "UTF-8")); + BufferedReader readerActual = + new BufferedReader(new InputStreamReader(new FileInputStream(actualFile), "UTF-8"))) { StringBuilder actual = new StringBuilder(); while ((lineActual = readerActual.readLine()) != null) { actual.append(lineActual).append('\n'); @@ -489,8 +490,8 @@ return params; } - private HttpUriRequest constructHttpMethod(String statement, URI uri, String stmtParam, - boolean postStmtAsParam, List<CompilationUnit.Parameter> otherParams) throws URISyntaxException { + private HttpUriRequest constructHttpMethod(String statement, URI uri, String stmtParam, boolean postStmtAsParam, + List<CompilationUnit.Parameter> otherParams) throws URISyntaxException { if (statement.length() + uri.toString().length() < MAX_URL_LENGTH) { // Use GET for small-ish queries return constructGetMethod(uri, injectStatement(statement, stmtParam, otherParams)); @@ -510,8 +511,7 @@ return builder.build(); } - private HttpUriRequest constructGetMethod(URI endpoint, OutputFormat fmt, - List<CompilationUnit.Parameter> params) { + private HttpUriRequest constructGetMethod(URI endpoint, OutputFormat fmt, List<CompilationUnit.Parameter> params) { HttpUriRequest method = constructGetMethod(endpoint, params); // Set accepted output response type method.setHeader("Accept", fmt.mimeType()); @@ -527,8 +527,7 @@ return builder.build(); } - private HttpUriRequest constructPostMethod(URI uri, OutputFormat fmt, - List<CompilationUnit.Parameter> params) { + private HttpUriRequest constructPostMethod(URI uri, OutputFormat fmt, List<CompilationUnit.Parameter> params) { HttpUriRequest method = constructPostMethod(uri, params); // Set accepted output response type method.setHeader("Accept", fmt.mimeType()); @@ -587,8 +586,8 @@ // Insert and Delete statements are executed here public void executeUpdate(String str, URI uri) throws Exception { // Create a method instance. - HttpUriRequest request = RequestBuilder.post(uri).setEntity(new StringEntity(str, StandardCharsets.UTF_8)) - .build(); + HttpUriRequest request = + RequestBuilder.post(uri).setEntity(new StringEntity(str, StandardCharsets.UTF_8)).build(); // Execute the method. executeAndCheckHttpRequest(request); @@ -598,10 +597,10 @@ public InputStream executeAnyAQLAsync(String statement, boolean defer, OutputFormat fmt, URI uri, Map<String, Object> variableCtx) throws Exception { // Create a method instance. - HttpUriRequest request = RequestBuilder.post(uri) - .addParameter("mode", defer ? "asynchronous-deferred" : "asynchronous") - .setEntity(new StringEntity(statement, StandardCharsets.UTF_8)).setHeader("Accept", fmt.mimeType()) - .build(); + HttpUriRequest request = + RequestBuilder.post(uri).addParameter("mode", defer ? "asynchronous-deferred" : "asynchronous") + .setEntity(new StringEntity(statement, StandardCharsets.UTF_8)) + .setHeader("Accept", fmt.mimeType()).build(); String handleVar = getHandleVariable(statement); @@ -624,8 +623,8 @@ // create function statement public void executeDDL(String str, URI uri) throws Exception { // Create a method instance. - HttpUriRequest request = RequestBuilder.post(uri).setEntity(new StringEntity(str, StandardCharsets.UTF_8)) - .build(); + HttpUriRequest request = + RequestBuilder.post(uri).setEntity(new StringEntity(str, StandardCharsets.UTF_8)).build(); // Execute the method. executeAndCheckHttpRequest(request); @@ -635,8 +634,8 @@ // and returns the contents as a string // This string is later passed to REST API for execution. public String readTestFile(File testFile) throws Exception { - BufferedReader reader = new BufferedReader( - new InputStreamReader(new FileInputStream(testFile), StandardCharsets.UTF_8)); + BufferedReader reader = + new BufferedReader(new InputStreamReader(new FileInputStream(testFile), StandardCharsets.UTF_8)); String line; StringBuilder stringBuilder = new StringBuilder(); String ls = System.getProperty("line.separator"); @@ -691,26 +690,26 @@ private static String getProcessOutput(Process p) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); - Future<Integer> future = Executors.newSingleThreadExecutor().submit(() -> IOUtils.copy(p.getInputStream(), - new OutputStream() { - @Override - public void write(int b) throws IOException { - baos.write(b); - System.out.write(b); - } + Future<Integer> future = + Executors.newSingleThreadExecutor().submit(() -> IOUtils.copy(p.getInputStream(), new OutputStream() { + @Override + public void write(int b) throws IOException { + baos.write(b); + System.out.write(b); + } - @Override - public void flush() throws IOException { - baos.flush(); - System.out.flush(); - } + @Override + public void flush() throws IOException { + baos.flush(); + System.out.flush(); + } - @Override - public void close() throws IOException { - baos.close(); - System.out.close(); - } - })); + @Override + public void close() throws IOException { + baos.close(); + System.out.close(); + } + })); p.waitFor(); future.get(); ByteArrayInputStream bisIn = new ByteArrayInputStream(baos.toByteArray()); @@ -722,10 +721,8 @@ StringBuffer stdOut = writerIn.getBuffer(); if (writerErr.getBuffer().length() > 0) { StringBuilder sbErr = new StringBuilder(); - sbErr.append("script execution failed - error message:\n" + - "-------------------------------------------\n" + - "stdout: ").append(stdOut) - .append("\nstderr: ").append(writerErr.getBuffer()) + sbErr.append("script execution failed - error message:\n" + "-------------------------------------------\n" + + "stdout: ").append(stdOut).append("\nstderr: ").append(writerErr.getBuffer()) .append("-------------------------------------------"); LOGGER.info(sbErr.toString()); throw new Exception(sbErr.toString()); @@ -748,9 +745,10 @@ switch (ctx.getType()) { case "ddl": if (ctx.getFile().getName().endsWith("aql")) { - executeDDL(statement, getEndpoint(Lets.AQL_DDL)); + executeDDL(statement, getEndpoint(Servlets.AQL_DDL)); } else { - InputStream resultStream = executeQueryService(statement, getEndpoint(Lets.QUERY_SERVICE)); + InputStream resultStream = + executeQueryService(statement, getEndpoint(Servlets.QUERY_SERVICE)); ResultExtractor.extract(resultStream); } break; @@ -760,9 +758,10 @@ statement = statement.replaceAll("nc1://", "127.0.0.1://../../../../../../asterix-app/"); } if (ctx.getFile().getName().endsWith("aql")) { - executeUpdate(statement, getEndpoint(Lets.AQL_UPDATE)); + executeUpdate(statement, getEndpoint(Servlets.AQL_UPDATE)); } else { - InputStream resultStream = executeQueryService(statement, getEndpoint(Lets.QUERY_SERVICE)); + InputStream resultStream = + executeQueryService(statement, getEndpoint(Servlets.QUERY_SERVICE)); ResultExtractor.extract(resultStream); } break; @@ -778,8 +777,8 @@ LOGGER.fine("polling for up to " + timeoutSecs + " seconds w/ " + retryDelaySecs + " second(s) delay"); while (true) { try { - executeTestFile(testCaseCtx, ctx, variableCtx, statement, isDmlRecoveryTest, pb, cUnit, queryCount, - expectedResultFileCtxs, testFile, actualPath); + executeTestFile(testCaseCtx, ctx, variableCtx, statement, isDmlRecoveryTest, pb, cUnit, + queryCount, expectedResultFileCtxs, testFile, actualPath); finalException = null; break; } catch (Exception e) { @@ -812,15 +811,16 @@ final List<CompilationUnit.Parameter> params = cUnit.getParameter(); if (ctx.getFile().getName().endsWith("aql")) { if (reqType.equalsIgnoreCase("query")) { - resultStream = executeQuery(statement, fmt, getEndpoint(Lets.AQL_QUERY), params); + resultStream = executeQuery(statement, fmt, getEndpoint(Servlets.AQL_QUERY), params); } else { - final URI endpoint = getEndpoint(Lets.AQL); + final URI endpoint = getEndpoint(Servlets.AQL); if (reqType.equalsIgnoreCase("async")) { resultStream = executeAnyAQLAsync(statement, false, fmt, endpoint, variableCtx); } else if (reqType.equalsIgnoreCase("deferred")) { resultStream = executeAnyAQLAsync(statement, true, fmt, endpoint, variableCtx); } - Assert.assertNotNull("no handle for " + reqType + " test " + testFile.toString(), resultStream); + Assert.assertNotNull("no handle for " + reqType + " test " + testFile.toString(), + resultStream); } } else { String delivery = DELIVERY_IMMEDIATE; @@ -829,7 +829,7 @@ } else if (reqType.equalsIgnoreCase("deferred")) { delivery = DELIVERY_DEFERRED; } - final URI uri = getEndpoint(Lets.QUERY_SERVICE); + final URI uri = getEndpoint(Servlets.QUERY_SERVICE); if (DELIVERY_IMMEDIATE.equals(delivery)) { resultStream = executeQueryService(statement, fmt, uri, params, true); resultStream = ResultExtractor.extract(resultStream); @@ -848,8 +848,8 @@ } expectedResultFile = expectedResultFileCtxs.get(queryCount.intValue()).getFile(); - File actualResultFile = testCaseCtx.getActualResultFile(cUnit, expectedResultFile, - new File(actualPath)); + File actualResultFile = + testCaseCtx.getActualResultFile(cUnit, expectedResultFile, new File(actualPath)); writeOutputToFile(actualResultFile, resultStream); runScriptAndCompareWithResult(testFile, new PrintWriter(System.err), expectedResultFile, @@ -864,13 +864,13 @@ break; case "txnqbc": // qbc represents query before crash resultStream = executeQuery(statement, OutputFormat.forCompilationUnit(cUnit), - getEndpoint(Lets.AQL_QUERY), cUnit.getParameter()); + getEndpoint(Servlets.AQL_QUERY), cUnit.getParameter()); qbcFile = getTestCaseQueryBeforeCrashFile(actualPath, testCaseCtx, cUnit); writeOutputToFile(qbcFile, resultStream); break; case "txnqar": // qar represents query after recovery resultStream = executeQuery(statement, OutputFormat.forCompilationUnit(cUnit), - getEndpoint(Lets.AQL_QUERY), cUnit.getParameter()); + getEndpoint(Servlets.AQL_QUERY), cUnit.getParameter()); File qarFile = new File(actualPath + File.separator + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_") + "_" + cUnit.getName() + "_qar.adm"); @@ -880,7 +880,7 @@ break; case "txneu": // eu represents erroneous update try { - executeUpdate(statement, getEndpoint(Lets.AQL_UPDATE)); + executeUpdate(statement, getEndpoint(Servlets.AQL_UPDATE)); } catch (Exception e) { // An exception is expected. failed = true; @@ -908,7 +908,7 @@ break; case "errddl": // a ddlquery that expects error try { - executeDDL(statement, getEndpoint(Lets.AQL_DDL)); + executeDDL(statement, getEndpoint(Servlets.AQL_DDL)); } catch (Exception e) { // expected error happens failed = true; @@ -1007,7 +1007,7 @@ } break; case "lib": // expected format <dataverse-name> <library-name> - // <library-directory> + // <library-directory> // TODO: make this case work well with entity names containing spaces by // looking for \" lines = statement.split("\n"); @@ -1176,15 +1176,11 @@ private static File getTestCaseQueryBeforeCrashFile(String actualPath, TestCaseContext testCaseCtx, CompilationUnit cUnit) { return new File( - actualPath + File.separator + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_") + "_" - + cUnit.getName() + "_qbc.adm"); + actualPath + File.separator + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_") + + "_" + cUnit.getName() + "_qbc.adm"); } - protected String getPath(Lets servlet) { - return servlet.getPath(); - } - - protected URI getEndpoint(Lets servlet) throws URISyntaxException { + protected URI getEndpoint(String servlet) throws URISyntaxException { return new URI("http", null, host, port, getPath(servlet).replaceAll("/\\*$", ""), null, null); } @@ -1201,10 +1197,11 @@ try { ArrayList<String> toBeDropped = new ArrayList<>(); InputStream resultStream = executeQueryService("select dv.DataverseName from Metadata.`Dataverse` as dv;", - getEndpoint(Lets.QUERY_SERVICE)); + getEndpoint(Servlets.QUERY_SERVICE)); String out = IOUtils.toString(resultStream); ObjectMapper om = new ObjectMapper(); - om.setConfig(om.getDeserializationConfig().with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)); + om.setConfig( + om.getDeserializationConfig().with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)); JsonNode result; try { result = om.readValue(out, ObjectNode.class).get("results"); @@ -1230,7 +1227,8 @@ dropStatement.append(dv); dropStatement.append(";\n"); } - resultStream = executeQueryService(dropStatement.toString(), getEndpoint(Lets.QUERY_SERVICE)); + resultStream = + executeQueryService(dropStatement.toString(), getEndpoint(Servlets.QUERY_SERVICE)); ResultExtractor.extract(resultStream); } } catch (Throwable th) { @@ -1239,4 +1237,9 @@ } } + //This method is here to enable extension + protected String getPath(String servlet) { + return servlet; + } + } diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSFeedServlet.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSFeedServlet.java index 6d8e2f2..2cf47f9 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSFeedServlet.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSFeedServlet.java @@ -31,7 +31,7 @@ import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; import org.apache.hyracks.http.server.AbstractServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import com.rometools.rome.feed.synd.SyndContent; import com.rometools.rome.feed.synd.SyndContentImpl; @@ -67,7 +67,7 @@ String feedType = req.getParameter(FEED_TYPE); feedType = (feedType != null) ? feedType : defaultFeedType; feed.setFeedType(feedType); - ServletUtils.setContentType(res, MIME_TYPE); + HttpUtil.setContentType(res, MIME_TYPE); SyndFeedOutput output = new SyndFeedOutput(); output.output(feed, res.writer()); } catch (FeedException | ParseException ex) { @@ -99,7 +99,7 @@ feed.setLink("http://rome.dev.java.net"); feed.setDescription("This feed has been created using ROME (Java syndication utilities"); - List<SyndEntry> entries = new ArrayList<SyndEntry>(); + List<SyndEntry> entries = new ArrayList<>(); SyndEntry entry; SyndContent description; diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSTestServer.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSTestServer.java index f40999b..6db7d6e 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSTestServer.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/server/RSSTestServer.java @@ -28,7 +28,7 @@ public RSSTestServer(int port) { webManager = new WebManager(); HttpServer rssServer = new HttpServer(webManager.getBosses(), webManager.getWorkers(), port); - rssServer.addLet(new RSSFeedServlet(null, new String[] { "/" })); + rssServer.addServlet(new RSSFeedServlet(null, new String[] { "/" })); webManager.add(rssServer); } diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml index 7d74903..1e1e47b 100644 --- a/asterixdb/asterix-server/pom.xml +++ b/asterixdb/asterix-server/pom.xml @@ -535,11 +535,6 @@ <artifactId>commons-io</artifactId> </dependency> <dependency> - <groupId>org.apache.asterix</groupId> - <artifactId>asterix-common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> diff --git a/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/SampleLocalClusterIT.java b/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/SampleLocalClusterIT.java index 175ecc4..7ac4669 100644 --- a/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/SampleLocalClusterIT.java +++ b/asterixdb/asterix-server/src/test/java/org/apache/asterix/server/test/SampleLocalClusterIT.java @@ -28,7 +28,7 @@ import java.net.URL; import java.util.Collections; -import org.apache.asterix.common.utils.LetUtil.Lets; +import org.apache.asterix.common.utils.Servlets; import org.apache.asterix.test.aql.TestExecutor; import org.apache.asterix.test.base.TestMethodTracer; import org.apache.asterix.test.common.TestHelper; @@ -90,7 +90,7 @@ public void test1_sanityQuery() throws Exception { TestExecutor testExecutor = new TestExecutor(); InputStream resultStream = testExecutor.executeQuery("1+1", OutputFormat.ADM, - new URI("http", null, "127.0.0.1", 19002, Lets.AQL_QUERY.getPath(), null, null), + new URI("http", null, "127.0.0.1", 19002, Servlets.AQL_QUERY, null, null), Collections.emptyList()); StringWriter sw = new StringWriter(); IOUtils.copy(resultStream, sw); @@ -99,8 +99,8 @@ @Test public void test2_stopCluster() throws Exception { - Process process = new ProcessBuilder(joinPath(LOCAL_SAMPLES_DIR, "bin/stop-sample-cluster.sh")) - .inheritIO().start(); + Process process = + new ProcessBuilder(joinPath(LOCAL_SAMPLES_DIR, "bin/stop-sample-cluster.sh")).inheritIO().start(); Assert.assertEquals(0, process.waitFor()); try { new URL("http://127.0.0.1:19002").openConnection().connect(); diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServlet.java index b079d36..157eef5 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServlet.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServlet.java @@ -21,60 +21,12 @@ import java.util.concurrent.ConcurrentMap; /** - * Represents a component that handles IServLet requests + * Represents a component that handles IServlet requests */ public interface IServlet { - public class Encoding { - public static final String UTF8 = "utf-8"; - - private Encoding() { - } - } - - public class ContentType { - public static final String APPLICATION_ADM = "application/x-adm"; - public static final String APPLICATION_JSON = "application/json"; - public static final String CSV = "text/csv"; - public static final String IMG_PNG = "image/png"; - public static final String TEXT_HTML = "text/html"; - public static final String TEXT_PLAIN = "text/plain"; - - private ContentType() { - } - - /** - * Get the mime string representation from the extension - * @param extension - * @return - */ - public static String mime(String extension) { - switch (extension) { - case ".png": - return "image/png"; - case ".eot": - return "application/vnd.ms-fontobject"; - case ".svg": - return "image/svg+xml\t"; - case ".ttf": - return "application/x-font-ttf"; - case ".woff": - case ".woff2": - return "application/x-font-woff"; - case ".html": - return "text/html"; - case ".css": - return "text/css"; - case ".js": - return "application/javascript"; - default: - return null; - } - } - } - /** - * @return an array of paths associated with this IServLet + * @return an array of paths associated with this IServlet */ String[] getPaths(); @@ -84,7 +36,8 @@ ConcurrentMap<String, Object> ctx(); /** - * handle the IServLetRequest writing the response in the passed IServLetResponse + * handle the IServletRequest writing the response in the passed IServletResponse + * * @param request * @param response */ diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/GetRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/GetRequest.java index 8d308d3..e666c0a 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/GetRequest.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/GetRequest.java @@ -22,7 +22,7 @@ import java.util.Map; import org.apache.hyracks.http.api.IServletRequest; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import io.netty.handler.codec.http.FullHttpRequest; @@ -42,7 +42,7 @@ @Override public String getParameter(CharSequence name) { - return ServletUtils.getParameter(parameters, name); + return HttpUtil.getParameter(parameters, name); } @Override diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java index 302e5f3..ad8ff41 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServer.java @@ -55,7 +55,7 @@ private final Object lock = new Object(); private final AtomicInteger threadId = new AtomicInteger(); private final ConcurrentMap<String, Object> ctx; - private final List<IServlet> lets; + private final List<IServlet> servlets; private final EventLoopGroup bossGroup; private final EventLoopGroup workerGroup; private final int port; @@ -70,7 +70,7 @@ this.workerGroup = workerGroup; this.port = port; ctx = new ConcurrentHashMap<>(); - lets = new ArrayList<>(); + servlets = new ArrayList<>(); executor = Executors.newFixedThreadPool(16, runnable -> new Thread(runnable, "HttpExecutor(port:" + port + ")-" + threadId.getAndIncrement())); } @@ -166,22 +166,22 @@ return ctx; } - public void addLet(IServlet let) { - lets.add(let); + public void addServlet(IServlet let) { + servlets.add(let); } protected void doStart() throws InterruptedException { /* - * This is a hacky way to ensure that ILets with more specific paths are checked first. + * This is a hacky way to ensure that IServlets with more specific paths are checked first. * For example: * "/path/to/resource/" * is checked before * "/path/to/" * which in turn is checked before * "/path/" - * Note that it doesn't work for the case where multiple paths map to a single ILet + * Note that it doesn't work for the case where multiple paths map to a single IServlet */ - Collections.sort(lets, (l1, l2) -> l2.getPaths()[0].length() - l1.getPaths()[0].length()); + Collections.sort(servlets, (l1, l2) -> l2.getPaths()[0].length() - l1.getPaths()[0].length()); ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) .childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, @@ -201,7 +201,7 @@ if (i >= 0) { uri = uri.substring(0, i); } - for (IServlet let : lets) { + for (IServlet let : servlets) { for (String path : let.getPaths()) { if (match(path, uri)) { return let; diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java index 2268c2c..e23ede4 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/HttpServerHandler.java @@ -22,7 +22,7 @@ import java.util.logging.Logger; import org.apache.hyracks.http.api.IServlet; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; @@ -71,7 +71,7 @@ new DefaultHttpResponse(request.protocolVersion(), HttpResponseStatus.METHOD_NOT_ALLOWED); ctx.write(notAllowed).addListener(ChannelFutureListener.CLOSE); } else { - handler = new HttpRequestHandler(ctx, servlet, ServletUtils.toServletRequest(request), chunkSize); + handler = new HttpRequestHandler(ctx, servlet, HttpUtil.toServletRequest(request), chunkSize); server.getExecutor().submit(handler); } } catch (Exception e) { diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/PostRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/PostRequest.java index 338ef40..29cfd89 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/PostRequest.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/PostRequest.java @@ -22,7 +22,7 @@ import java.util.Map; import org.apache.hyracks.http.api.IServletRequest; -import org.apache.hyracks.http.server.util.ServletUtils; +import org.apache.hyracks.http.server.utils.HttpUtil; import io.netty.handler.codec.http.FullHttpRequest; @@ -52,7 +52,7 @@ return values.get(i); } } - return ServletUtils.getParameter(parameters, name); + return HttpUtil.getParameter(parameters, name); } @Override diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/util/ServletUtils.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java similarity index 70% rename from hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/util/ServletUtils.java rename to hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java index 1ffab6d..aa9ebc5 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/util/ServletUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.hyracks.http.server.util; +package org.apache.hyracks.http.server.utils; import java.io.IOException; import java.util.ArrayList; @@ -40,10 +40,29 @@ import io.netty.handler.codec.http.multipart.InterfaceHttpData.HttpDataType; import io.netty.handler.codec.http.multipart.MixedAttribute; -public class ServletUtils { - private static final Logger LOGGER = Logger.getLogger(ServletUtils.class.getName()); +public class HttpUtil { + private static final Logger LOGGER = Logger.getLogger(HttpUtil.class.getName()); - private ServletUtils() { + private HttpUtil() { + } + + public static class Encoding { + public static final String UTF8 = "utf-8"; + + private Encoding() { + } + } + + public static class ContentType { + public static final String APPLICATION_ADM = "application/x-adm"; + public static final String APPLICATION_JSON = "application/json"; + public static final String CSV = "text/csv"; + public static final String IMG_PNG = "image/png"; + public static final String TEXT_HTML = "text/html"; + public static final String TEXT_PLAIN = "text/plain"; + + private ContentType() { + } } public static String getParameter(Map<String, List<String>> parameters, CharSequence name) { @@ -94,7 +113,7 @@ } public static IServletRequest toServletRequest(FullHttpRequest request) throws IOException { - return request.method() == HttpMethod.GET ? ServletUtils.get(request) : ServletUtils.post(request); + return request.method() == HttpMethod.GET ? HttpUtil.get(request) : HttpUtil.post(request); } public static void setContentType(IServletResponse response, String type, String charset) throws IOException { @@ -104,4 +123,34 @@ public static void setContentType(IServletResponse response, String type) throws IOException { response.setHeader(HttpHeaderNames.CONTENT_TYPE, type); } + + /** + * Get the mime string representation from the extension + * + * @param extension + * @return + */ + public static String mime(String extension) { + switch (extension) { + case ".png": + return "image/png"; + case ".eot": + return "application/vnd.ms-fontobject"; + case ".svg": + return "image/svg+xml\t"; + case ".ttf": + return "application/x-font-ttf"; + case ".woff": + case ".woff2": + return "application/x-font-woff"; + case ".html": + return "text/html"; + case ".css": + return "text/css"; + case ".js": + return "application/javascript"; + default: + return null; + } + } } -- To view, visit https://asterix-gerrit.ics.uci.edu/1486 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib2f63f37ee9ef063930478028e3e05ca9dd4742c Gerrit-PatchSet: 8 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: abdullah alamoudi <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: abdullah alamoudi <[email protected]>
