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 2017/06/11 17:38:49 UTC
incubator-juneau git commit: Add name() annotation attribute to
RestServlet method annotations.
Repository: incubator-juneau
Updated Branches:
refs/heads/master d9e2e24d9 -> 0a00ed8a0
Add name() annotation attribute to RestServlet method annotations.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/0a00ed8a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/0a00ed8a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/0a00ed8a
Branch: refs/heads/master
Commit: 0a00ed8a02049480fa5f74a19d354543955936ab
Parents: d9e2e24
Author: JamesBognar <ja...@apache.org>
Authored: Sun Jun 11 13:38:46 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Sun Jun 11 13:38:46 2017 -0400
----------------------------------------------------------------------
.../java/org/apache/juneau/internal/StringUtils.java | 13 +++++++++++++
juneau-core/src/main/javadoc/overview.html | 9 +++++++++
.../main/java/org/apache/juneau/rest/CallMethod.java | 7 ++++---
.../main/java/org/apache/juneau/rest/RestContext.java | 6 +++---
.../java/org/apache/juneau/rest/RestParamDefaults.java | 11 ++++++-----
.../org/apache/juneau/rest/RestServletDefault.java | 2 +-
.../org/apache/juneau/rest/annotation/FormData.java | 11 +++++++++--
.../org/apache/juneau/rest/annotation/HasFormData.java | 11 +++++++++--
.../org/apache/juneau/rest/annotation/HasQuery.java | 11 +++++++++--
.../java/org/apache/juneau/rest/annotation/Header.java | 9 ++++++++-
.../java/org/apache/juneau/rest/annotation/Path.java | 9 ++++++++-
.../java/org/apache/juneau/rest/annotation/Query.java | 11 +++++++++--
12 files changed, 88 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
index 61bacb0..22b444b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -1512,4 +1512,17 @@ public final class StringUtils {
throw new RuntimeException(e);
}
}
+
+ /**
+ * Returns the first non-null, non-empty string in the list.
+ *
+ * @param s The strings to test.
+ * @return The first non-empty string in the list, or <jk>null</jk> if they were all <jk>null</jk> or empty.
+ */
+ public static String firstNonEmpty(String...s) {
+ for (String ss : s)
+ if (! isEmpty(ss))
+ return ss;
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-core/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/overview.html b/juneau-core/src/main/javadoc/overview.html
index 68386e1..458a70f 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -6498,6 +6498,15 @@
<li><code>devops.css</code> cleaned up.
<li>Removed a bunch of URL-related methods from {@link org.apache.juneau.rest.RestRequest}.
These all have equivalents in {@link org.apache.juneau.rest.RestRequest#getUriContext()}.
+ <li>New annotation attributes:
+ <ul>
+ <li>{@link org.apache.juneau.rest.annotation.Query#name() @Query.name()}
+ <li>{@link org.apache.juneau.rest.annotation.FormData#name() @FormData.name()}
+ <li>{@link org.apache.juneau.rest.annotation.Header#name() @Header.name()}
+ <li>{@link org.apache.juneau.rest.annotation.Path#name() @Path.name()}
+ <li>{@link org.apache.juneau.rest.annotation.HasQuery#name() @HasQuery.name()}
+ <li>{@link org.apache.juneau.rest.annotation.HasFormData#name() @HasFormData.name()}
+ </ul>
</ul>
<h6 class='topic'>org.apache.juneau.rest.client</h6>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java b/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java
index 0a9ad22..aae0586 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/CallMethod.java
@@ -16,6 +16,7 @@ import static javax.servlet.http.HttpServletResponse.*;
import static org.apache.juneau.dto.swagger.SwaggerBuilder.*;
import static org.apache.juneau.html.HtmlDocSerializerContext.*;
import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
import static org.apache.juneau.internal.Utils.*;
import static org.apache.juneau.rest.RestContext.*;
import static org.apache.juneau.rest.annotation.Inherit.*;
@@ -331,15 +332,15 @@ class CallMethod implements Comparable<CallMethod> {
if (a instanceof Header) {
Header h = (Header)a;
if (! h.def().isEmpty())
- defaultRequestHeaders.put(h.value(), h.def());
+ defaultRequestHeaders.put(firstNonEmpty(h.name(), h.value()), h.def());
} else if (a instanceof Query) {
Query q = (Query)a;
if (! q.def().isEmpty())
- defaultQuery.put(q.value(), q.def());
+ defaultQuery.put(firstNonEmpty(q.name(), q.value()), q.def());
} else if (a instanceof FormData) {
FormData f = (FormData)a;
if (! f.def().isEmpty())
- defaultFormData.put(f.value(), f.def());
+ defaultFormData.put(firstNonEmpty(f.name(), f.value()), f.def());
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
index 2422599..feadcdc 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1493,9 +1493,9 @@ public final class RestContext extends Context {
if (a instanceof Path)
p = (Path)a;
- String name = (p == null ? "" : p.value());
+ String name = (p == null ? "" : firstNonEmpty(p.name(), p.value()));
- if (name.isEmpty()) {
+ if (isEmpty(name)) {
int idx = attrIndex++;
String[] vars = pathPattern.getVars();
if (vars.length <= idx)
@@ -1507,7 +1507,7 @@ public final class RestContext extends Context {
if (isNumeric(vars[j]) && vars[j].equals(idxs))
name = vars[j];
- if (name.isEmpty())
+ if (isEmpty(name))
name = pathPattern.getVars()[idx];
}
rp[i] = new RestParamDefaults.PathParameterObject(name, t);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestParamDefaults.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
index dafc17e..03f4239 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
@@ -12,6 +12,7 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest;
+import static org.apache.juneau.internal.StringUtils.*;
import static org.apache.juneau.rest.RestParamType.*;
import java.io.*;
@@ -559,7 +560,7 @@ class RestParamDefaults {
static final class HeaderObject extends RestParam {
protected HeaderObject(Header a, Type type) {
- super(HEADER, a.value(), type);
+ super(HEADER, firstNonEmpty(a.name(), a.value()), type);
}
@Override /* RestParam */
@@ -586,7 +587,7 @@ class RestParamDefaults {
private final boolean multiPart, plainParams;
protected FormDataObject(Method method, FormData a, Type type, boolean methodPlainParams) throws ServletException {
- super(FORMDATA, a.value(), type);
+ super(FORMDATA, firstNonEmpty(a.name(), a.value()), type);
if (a.multipart() && ! isCollection(type))
throw new RestServletException("Use of multipart flag on @FormData parameter that's not an array or Collection on method ''{0}''", method);
this.multiPart = a.multipart();
@@ -608,7 +609,7 @@ class RestParamDefaults {
private final boolean multiPart, plainParams;
protected QueryObject(Method method, Query a, Type type, boolean methodPlainParams) throws ServletException {
- super(QUERY, a.value(), type);
+ super(QUERY, firstNonEmpty(a.name(), a.value()), type);
if (a.multipart() && ! isCollection(type))
throw new RestServletException("Use of multipart flag on @Query parameter that's not an array or Collection on method ''{0}''", method);
this.multiPart = a.multipart();
@@ -629,7 +630,7 @@ class RestParamDefaults {
static final class HasFormDataObject extends RestParam {
protected HasFormDataObject(Method method, HasFormData a, Type type) throws ServletException {
- super(FORMDATA, a.value(), type);
+ super(FORMDATA, firstNonEmpty(a.name(), a.value()), type);
if (type != Boolean.class && type != boolean.class)
throw new RestServletException("Use of @HasForm annotation on parameter that is not a boolean on method ''{0}''", method);
}
@@ -644,7 +645,7 @@ class RestParamDefaults {
static final class HasQueryObject extends RestParam {
protected HasQueryObject(Method method, HasQuery a, Type type) throws ServletException {
- super(QUERY, a.value(), type);
+ super(QUERY, firstNonEmpty(a.name(), a.value()), type);
if (type != Boolean.class && type != boolean.class)
throw new RestServletException("Use of @HasQuery annotation on parameter that is not a boolean on method ''{0}''", method);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletDefault.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletDefault.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletDefault.java
index c2c0d29..fe3450c 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletDefault.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletDefault.java
@@ -184,7 +184,7 @@ import org.apache.juneau.xml.*;
},
stylesheet="styles/juneau.css",
htmldoc=@HtmlDoc(
- branding="<img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'>"
+ branding="<a href='http://juneau.apache.org'><img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'></a>"
),
favicon="htdocs/juneau.png",
staticFiles="{htdocs:'htdocs'}"
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
index bc453aa..56187b0 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
@@ -60,9 +60,16 @@ import org.apache.juneau.rest.*;
public @interface FormData {
/**
- * URL parameter name.
+ * FORM parameter name.
*/
- String value();
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
+ String value() default "";
/**
* Specify <jk>true</jk> if using multi-part parameters to represent collections and arrays.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
index 085d7e9..a68030a 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
@@ -88,7 +88,14 @@ import org.apache.juneau.rest.*;
public @interface HasFormData {
/**
- * URL parameter name.
+ * FORM parameter name.
*/
- String value();
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
+ String value() default "";
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
index 19f4469..f1bf5ee 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
@@ -53,7 +53,14 @@ import org.apache.juneau.rest.*;
public @interface HasQuery {
/**
- * URL parameter name.
+ * URL query parameter name.
*/
- String value();
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
+ String value() default "";
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
index 876fbf3..8f98d50 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
@@ -48,7 +48,14 @@ public @interface Header {
/**
* HTTP header name.
*/
- String value();
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
+ String value() default "";
/**
* The default value for this header if it's not present in the request.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
index d3c5c89..5385109 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
@@ -73,9 +73,16 @@ import java.lang.annotation.*;
public @interface Path {
/**
- * URL variable name.
+ * URL path variable name.
* <p>
* Optional if the attributes are specified in the same order as in the URL path pattern.
*/
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
String value() default "";
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0a00ed8a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
index d8e3414..cf952a6 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
@@ -56,9 +56,16 @@ import org.apache.juneau.rest.*;
public @interface Query {
/**
- * URL parameter name.
+ * URL query parameter name.
*/
- String value();
+ String name() default "";
+
+ /**
+ * A synonym for {@link #name()}.
+ * <p>
+ * Allows you to use shortened notation if you're only specifying the name.
+ */
+ String value() default "";
/**
* Specify <jk>true</jk> if using multi-part parameters to represent collections and arrays.