[NO ISSUE][API] Make the AbstractServlet look for /* wild card
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
Make the AbstractServlet look for /* wild card to determine
the servlet path length
Change-Id: I74d393ede9e3bcf91222e2aa0e4a501a48ac0cf3
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11144
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/AbstractNCUdfServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/AbstractNCUdfServlet.java
index cf287d9..5a3cde6 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/AbstractNCUdfServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/AbstractNCUdfServlet.java
@@ -134,7 +134,7 @@
}
URI createDownloadURI(Path file) throws Exception {
- String path = paths[0].substring(0, trims[0]) + GET_UDF_DIST_ENDPOINT + '/' + file.getFileName();
+ String path = paths[0].substring(0, servletPathLengths[0]) + GET_UDF_DIST_ENDPOINT + '/' + file.getFileName();
String host = getHyracksClientConnection().getHost();
return new URI(httpServerProtocol.toString(), null, host, httpServerPort, path, null, null);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
index 514a7dd..ed567f5 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
@@ -53,20 +53,20 @@
protected final String[] paths;
protected final ConcurrentMap<String, Object> ctx;
- protected final int[] trims;
+ protected final int[] servletPathLengths;
public AbstractServlet(ConcurrentMap<String, Object> ctx, String... paths) {
this.paths = paths;
this.ctx = ctx;
- trims = new int[paths.length];
+ servletPathLengths = new int[paths.length];
for (int i = 0; i < paths.length; i++) {
String path = paths[i];
if (path.endsWith("/*")) {
- trims[i] = path.indexOf("/*");
+ servletPathLengths[i] = path.indexOf("/*");
} else if (path.endsWith("/")) {
- trims[i] = path.length() - 1;
+ servletPathLengths[i] = path.length() - 1;
} else {
- trims[i] = path.length();
+ servletPathLengths[i] = path.length();
}
}
}
@@ -175,26 +175,27 @@
public String localPath(IServletRequest request) {
final String uri = request.getHttpRequest().uri();
int queryStart = uri.indexOf('?');
- return queryStart == -1 ? uri.substring(trim(uri)) : uri.substring(trim(uri), queryStart);
+ return queryStart == -1 ? uri.substring(servletLength(uri)) : uri.substring(servletLength(uri), queryStart);
}
public String servletPath(IServletRequest request) {
final String uri = request.getHttpRequest().uri();
- return uri.substring(0, trim(uri));
+ return uri.substring(0, servletLength(uri));
}
- protected int trim(final String uri) {
+ protected int servletLength(final String uri) {
int trim = -1;
if (paths.length > 1) {
for (int i = 0; i < paths.length; i++) {
- String path = paths[i].indexOf('*') >= 0 ? paths[i].substring(0, paths[i].indexOf('*')) : paths[i];
+ int wildCardIdx = paths[i].indexOf("/*");
+ String path = wildCardIdx >= 0 ? paths[i].substring(0, wildCardIdx) : paths[i];
if (uri.indexOf(path) == 0) {
- trim = trims[i];
+ trim = servletPathLengths[i];
break;
}
}
} else {
- trim = trims[0];
+ trim = servletPathLengths[0];
}
return trim;
}