You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2019/03/10 15:52:34 UTC
[juneau] 09/09: Strip trailing slashes from RestMethod.path.
This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
commit 2244c05dbbd4ecf75bd8e69a7b442b8a3db186f3
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun Mar 10 11:52:00 2019 -0400
Strip trailing slashes from RestMethod.path.
---
.../juneau/microservice/jetty/JettyMicroservice.java | 3 +++
.../org/apache/juneau/rest/BasicRestInfoProvider.java | 3 ++-
.../src/main/java/org/apache/juneau/rest/RestContext.java | 3 ++-
.../main/java/org/apache/juneau/rest/RestJavaMethod.java | 3 ++-
.../main/java/org/apache/juneau/rest/util/RestUtils.java | 15 +++++++++++++++
5 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
index 6c16139..c6ac6c6 100644
--- a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
+++ b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
@@ -13,6 +13,7 @@
package org.apache.juneau.microservice.jetty;
import static org.apache.juneau.internal.SystemUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
import java.io.*;
import java.net.*;
@@ -389,6 +390,8 @@ public class JettyMicroservice extends Microservice {
*/
public JettyMicroservice addServlet(Servlet servlet, String pathSpec) {
ServletHolder sh = new ServletHolder(servlet);
+ if (pathSpec != null && ! pathSpec.endsWith("/*"))
+ pathSpec = trimTrailingSlashes(pathSpec) + "/*";
getServletContextHandler().addServlet(sh, pathSpec);
return this;
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
index 58221e3..e7ec31f 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
@@ -14,6 +14,7 @@ package org.apache.juneau.rest;
import static org.apache.juneau.internal.ClassUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.rest.util.RestUtils.*;
import java.lang.reflect.Method;
import java.util.*;
@@ -397,7 +398,7 @@ public class BasicRestInfoProvider implements RestInfoProvider {
if (s != null) {
Map<String,OperationMap> sp = s.getPaths();
if (sp != null) {
- Map<String,Operation> spp = sp.get(getAnnotation(RestMethod.class, method).path());
+ Map<String,Operation> spp = sp.get(fixMethodPath(getAnnotation(RestMethod.class, method).path()));
if (spp != null)
return spp.get(req.getMethod());
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index b758b76..66703de 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.internal.ClassUtils.*;
import static org.apache.juneau.internal.CollectionUtils.*;
import static org.apache.juneau.internal.IOUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.rest.util.RestUtils.*;
import java.io.*;
import java.lang.reflect.*;
@@ -3229,7 +3230,7 @@ public final class RestContext extends BeanContext {
for (java.lang.reflect.Method method : resourceClass.getMethods()) {
RestMethod a = ClassUtils.getAnnotation(RestMethod.class, method);
if (a != null) {
- methodsFound.add(method.getName() + "," + emptyIfNull(firstNonEmpty(a.name(), a.method())) + "," + a.path());
+ methodsFound.add(method.getName() + "," + emptyIfNull(firstNonEmpty(a.name(), a.method())) + "," + fixMethodPath(a.path()));
try {
if (! isPublic(method))
throw new RestServletException("@RestMethod method {0}.{1} must be defined as public.", resourceClass.getName(), method.getName());
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
index 1643f01..a31ca75 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
@@ -202,7 +202,8 @@ public class RestJavaMethod implements Comparable<RestJavaMethod> {
pgb.append(mParsers);
}
- String p = m.path();
+ //String p = trimTrailingSlashes(m.path());
+ String p = fixMethodPath(m.path());
if (isEmpty(p))
p = HttpUtils.detectHttpPath(method, true);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
index fc6d358..8a57fae 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
@@ -25,6 +25,7 @@ import org.apache.juneau.internal.*;
import org.apache.juneau.json.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.rest.*;
+import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.uon.*;
import org.apache.juneau.utils.*;
@@ -439,4 +440,18 @@ public final class RestUtils {
}
return op;
}
+
+ /**
+ * Normalizes the {@link RestMethod#path()} value.
+ *
+ * @param path
+ * @return The normalized path.
+ */
+ public static String fixMethodPath(String path) {
+ if (path == null)
+ return null;
+ if (path.equals("/"))
+ return path;
+ return trimTrailingSlashes(path);
+ }
}