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/05/12 18:59:02 UTC
[juneau] branch master updated: JUNEAU-102 Expanded REST annotations
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
The following commit(s) were added to refs/heads/master by this push:
new 5ac48a1 JUNEAU-102 Expanded REST annotations
5ac48a1 is described below
commit 5ac48a18b0e326c35b536aecc6c63b819c936639
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun May 12 14:58:26 2019 -0400
JUNEAU-102 Expanded REST annotations
---
.../org/apache/juneau/testutils/TestUtils.java | 7 ++++-
.../java/org/apache/juneau/html/HtmlWidgetVar.java | 2 +-
.../org/apache/juneau/svl/VarResolverSession.java | 15 +++++++++++
.../juneau/examples/rest/ContentComboTestBase.java | 8 +++---
.../org/apache/juneau/examples/rest/TestUtils.java | 25 +++++++++++++++++
.../apache/juneau/rest/BasicRestCallHandler.java | 6 ++---
.../java/org/apache/juneau/rest/RestRequest.java | 11 +++++++-
.../java/org/apache/juneau/rest/vars/FileVar.java | 7 ++++-
.../apache/juneau/rest/vars/LocalizationVar.java | 11 ++++++--
.../juneau/rest/vars/RequestAttributeVar.java | 12 +++++----
.../juneau/rest/vars/RequestFormDataVar.java | 13 ++++-----
.../apache/juneau/rest/vars/RequestHeaderVar.java | 13 ++++-----
.../apache/juneau/rest/vars/RequestPathVar.java | 13 ++++-----
.../apache/juneau/rest/vars/RequestQueryVar.java | 13 ++++-----
.../org/apache/juneau/rest/vars/RequestVar.java | 18 ++++++-------
.../org/apache/juneau/rest/vars/RestInfoVar.java | 13 ++++-----
.../juneau/rest/vars/SerializedRequestAttrVar.java | 11 ++++++--
.../juneau/rest/vars/ServletInitParamVar.java | 11 ++++++--
.../org/apache/juneau/rest/vars/SwaggerVar.java | 13 ++++-----
.../org/apache/juneau/rest/vars/UrlEncodeVar.java | 2 +-
.../java/org/apache/juneau/rest/vars/UrlVar.java | 7 ++++-
.../org/apache/juneau/rest/vars/WidgetVar.java | 11 +++++---
.../java/org/apache/juneau/rest/widget/Widget.java | 31 +++++++++++++++++++++-
23 files changed, 197 insertions(+), 76 deletions(-)
diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/testutils/TestUtils.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/testutils/TestUtils.java
index 6455cd4..cd9aec1 100644
--- a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/testutils/TestUtils.java
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/testutils/TestUtils.java
@@ -484,8 +484,13 @@ public class TestUtils {
public static final void assertContains(Object value, String...substrings) {
for (String substring : substrings)
- if (! contains(toString(value), substring))
+ if (! contains(toString(value), substring)) {
+ System.err.println("Text did not contain expected substring: '" + toString(substring) + "'");
+ System.err.println("=== TEXT ===");
+ System.err.println(toString(value));
+ System.err.println("============");
throw new ComparisonFailure("Text did not contain expected substring.", toString(substring), toString(value));
+ }
}
public static final void assertContains(Exception e, String...substrings) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWidgetVar.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWidgetVar.java
index 12c7383..eb83946 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWidgetVar.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWidgetVar.java
@@ -70,6 +70,6 @@ public class HtmlWidgetVar extends SimpleVar {
@Override
public boolean canResolve(VarResolverSession session) {
- return session.getSessionObject(Object.class, SESSION_htmlWidgets, false) != null;
+ return session.hasSessionObject(SESSION_htmlWidgets);
}
}
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
index 0a716bf..828ed8e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
@@ -414,6 +414,16 @@ public class VarResolverSession {
}
/**
+ * Returns <jk>true</jk> if this session has the specified session object.
+ *
+ * @param name Session object name.
+ * @return <jk>true</jk> if this session has the specified session object
+ */
+ public boolean hasSessionObject(String name) {
+ return getSessionObject(Object.class, name, false) != null;
+ }
+
+ /**
* Returns the {@link Var} with the specified name.
*
* @param name The var name (e.g. <js>"S"</js>).
@@ -423,4 +433,9 @@ public class VarResolverSession {
Var v = this.context.getVarMap().get(name);
return v != null && v.canResolve(this) ? v : null;
}
+
+ @Override /* Object */
+ public String toString() {
+ return "var=" + this.context.getVarMap().keySet() + ", contextObjects=" + this.context.getContextObjects().keySet() + ", sessionObjects=" + this.sessionObjects.keySet();
+ }
}
diff --git a/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/ContentComboTestBase.java b/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/ContentComboTestBase.java
index e376d8c..4203744 100644
--- a/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/ContentComboTestBase.java
+++ b/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/ContentComboTestBase.java
@@ -12,6 +12,8 @@
// ***************************************************************************************************************************
package org.apache.juneau.examples.rest;
+import static org.apache.juneau.examples.rest.TestUtils.*;
+
import java.io.*;
import java.util.*;
@@ -98,10 +100,6 @@ public class ContentComboTestBase extends RestTestcase {
public void doTest() throws Exception {
RestClient rc = getClient(comboInput.mediaType);
String s = rc.doGet(comboInput.url).getResponseAsString();
- for (String s2 : comboInput.expectedResults) {
- if (! s.contains(s2)) {
- throw new FormattedRuntimeException("String ''{0}'' not found at URL ''{1}'' for media type ''{2}''", s2, comboInput.url, comboInput.mediaType);
- }
- }
+ assertContains(s, comboInput.expectedResults);
}
}
diff --git a/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/TestUtils.java b/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
index 5961649..4642866 100644
--- a/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
+++ b/juneau-examples/juneau-examples-rest-jetty/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
@@ -365,4 +365,29 @@ public class TestUtils {
String s2 = o.toString().replaceAll("\\r?\\n", "|");
Assert.assertEquals(s, s2);
}
+
+ /**
+ * Tries to turn the serialized output to a String.
+ * If it's a byte[], convert it to a UTF-8 encoded String.
+ */
+ public static final String toString(Object o) {
+ if (o == null)
+ return null;
+ if (o instanceof String)
+ return (String)o;
+ if (o instanceof byte[])
+ return new String((byte[])o, UTF8);
+ return o.toString();
+ }
+
+ public static final void assertContains(Object value, String...substrings) {
+ for (String substring : substrings)
+ if (! contains(toString(value), substring)) {
+ System.err.println("Text did not contain expected substring: '" + toString(substring) + "'");
+ System.err.println("=== TEXT ===");
+ System.err.println(toString(value));
+ System.err.println("============");
+ throw new ComparisonFailure("Text did not contain expected substring.", toString(substring), toString(value));
+ }
+ }
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallHandler.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallHandler.java
index 2c524f9..9d23a0d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallHandler.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallHandler.java
@@ -28,7 +28,6 @@ import org.apache.juneau.http.StreamResource;
import org.apache.juneau.rest.RestContext.*;
import org.apache.juneau.rest.exception.*;
import org.apache.juneau.rest.util.RestUtils;
-import org.apache.juneau.rest.vars.*;
/**
* Default implementation of {@link RestCallHandler}.
@@ -141,6 +140,7 @@ public class BasicRestCallHandler implements RestCallHandler {
req = createRequest(r1);
RestResponse res = createResponse(req, r2);
+ req.setResponse(res);
context.setRequest(req);
context.setResponse(res);
String method = req.getMethod();
@@ -334,8 +334,8 @@ public class BasicRestCallHandler implements RestCallHandler {
@Override /* RestCallHandler */
public Map<String,Object> getSessionObjects(RestRequest req, RestResponse res) {
Map<String,Object> m = new HashMap<>();
- m.put(RequestVar.SESSION_req, req);
- m.put(RequestVar.SESSION_res, res);
+ m.put("req", req);
+ m.put("res", res);
return m;
}
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 4d1742d..20bec98 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -212,6 +212,11 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
}
+ RestRequest setResponse(RestResponse res) {
+ this.res = res;
+ return this;
+ }
+
/**
* Returns a string of the form <js>"HTTP method-name full-url"</js>
*
@@ -1317,7 +1322,11 @@ public final class RestRequest extends HttpServletRequestWrapper {
*/
public VarResolverSession getVarResolverSession() {
if (varSession == null)
- varSession = context.getVarResolver().createSession(context.getCallHandler().getSessionObjects(this, context.getResponse()));
+ varSession = context
+ .getVarResolver()
+ .createSession(context.getCallHandler().getSessionObjects(this, context.getResponse()))
+ .sessionObject("req", this)
+ .sessionObject("res", res);
return varSession;
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
index 6fb42eb..d882823 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/FileVar.java
@@ -82,7 +82,7 @@ public class FileVar extends DefaultingVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) throws Exception {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, false);
@@ -97,4 +97,9 @@ public class FileVar extends DefaultingVar {
return null;
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req) || session.hasSessionObject(SESSION_crm);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/LocalizationVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/LocalizationVar.java
index 7ad5d53..0bc9f90 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/LocalizationVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/LocalizationVar.java
@@ -42,6 +42,8 @@ import org.apache.juneau.svl.*;
*/
public class LocalizationVar extends MultipartVar {
+ private static final String SESSION_req = "req";
+
/** The name of this variable. */
public static final String NAME = "L";
@@ -52,13 +54,18 @@ public class LocalizationVar extends MultipartVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String[] args) {
if (args.length > 0) {
String key = args[0];
String[] a = (args.length > 1) ? Arrays.copyOfRange(args, 1, args.length) : new String[0];
- return session.getSessionObject(RestRequest.class, RequestVar.SESSION_req, true).getMessage(key, (Object[])a);
+ return session.getSessionObject(RestRequest.class, SESSION_req, true).getMessage(key, (Object[])a);
}
return "";
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
index 86c77ac..6f5d00c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
@@ -51,10 +51,7 @@ import org.apache.juneau.svl.*;
*/
public class RequestAttributeVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
+ private static final String SESSION_req = "req";
/** The name of this variable. */
@@ -77,9 +74,14 @@ public class RequestAttributeVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return stringify(req.getAttribute(key));
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestFormDataVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestFormDataVar.java
index 54107f9..de8e085 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestFormDataVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestFormDataVar.java
@@ -47,11 +47,7 @@ import org.apache.juneau.svl.*;
*/
public class RequestFormDataVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "RF";
@@ -73,9 +69,14 @@ public class RequestFormDataVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return req.getFormData(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestHeaderVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestHeaderVar.java
index b61c1b0..a6ce8b4 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestHeaderVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestHeaderVar.java
@@ -47,11 +47,7 @@ import org.apache.juneau.svl.*;
*/
public class RequestHeaderVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "RH";
@@ -73,9 +69,14 @@ public class RequestHeaderVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return req.getHeader(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestPathVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestPathVar.java
index a910e1d..d231f35 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestPathVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestPathVar.java
@@ -48,11 +48,7 @@ import org.apache.juneau.svl.*;
*/
public class RequestPathVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "RP";
@@ -74,11 +70,16 @@ public class RequestPathVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
if ("REMAINDER".equals(key))
return req.getPathRemainder();
return req.getPath(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestQueryVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestQueryVar.java
index 68d9e44..0990929 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestQueryVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestQueryVar.java
@@ -48,11 +48,7 @@ import org.apache.juneau.svl.*;
*/
public class RequestQueryVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "RQ";
@@ -74,9 +70,14 @@ public class RequestQueryVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return req.getQuery(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestVar.java
index b6cf13d..af51584 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestVar.java
@@ -64,15 +64,8 @@ import org.apache.juneau.svl.*;
*/
public class RequestVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
- /**
- * The name of the session or context object that identifies the {@link RestResponse} object.
- */
- public static final String SESSION_res = "res";
+ private static final String SESSION_req = "req";
+ private static final String SESSION_res = "res";
/** The name of this variable. */
@@ -95,7 +88,7 @@ public class RequestVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
char c = StringUtils.charAt(key, 0);
@@ -140,4 +133,9 @@ public class RequestVar extends MultipartResolvingVar {
}
return req.getProperties().getString(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req) && session.hasSessionObject(SESSION_res);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RestInfoVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RestInfoVar.java
index 7c5c0c1..6091f32 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RestInfoVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RestInfoVar.java
@@ -71,11 +71,7 @@ import org.apache.juneau.svl.*;
*/
public class RestInfoVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "RI";
@@ -97,7 +93,7 @@ public class RestInfoVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) throws RestException, InternalServerError {
try {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
@@ -151,4 +147,9 @@ public class RestInfoVar extends MultipartResolvingVar {
throw new InternalServerError(e);
}
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java
index f922a94..62fb3da 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java
@@ -41,6 +41,8 @@ import org.apache.juneau.svl.*;
*/
public class SerializedRequestAttrVar extends StreamedVar {
+ private static final String SESSION_req = "req";
+
/** The name of this variable. */
public static final String NAME = "SA";
@@ -51,13 +53,13 @@ public class SerializedRequestAttrVar extends StreamedVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public void resolveTo(VarResolverSession session, Writer w, String key) throws Exception {
int i = key.indexOf(',');
if (i == -1)
throw new RuntimeException("Invalid format for $SA var. Must be of the format $SA{contentType,key[,defaultValue]}");
String[] s2 = split(key);
- RestRequest req = session.getSessionObject(RestRequest.class, RequestVar.SESSION_req, true);
+ RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
if (req != null) {
Object o = req.getAttribute(key);
if (o == null)
@@ -77,4 +79,9 @@ public class SerializedRequestAttrVar extends StreamedVar {
protected boolean allowRecurse() {
return false;
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/ServletInitParamVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/ServletInitParamVar.java
index 388065d..95c74b5 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/ServletInitParamVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/ServletInitParamVar.java
@@ -39,6 +39,8 @@ import org.apache.juneau.svl.*;
*/
public class ServletInitParamVar extends DefaultingVar {
+ private static final String SESSION_req = "req";
+
/** The name of this variable. */
public static final String NAME = "I";
@@ -49,8 +51,13 @@ public class ServletInitParamVar extends DefaultingVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
- return session.getSessionObject(RestRequest.class, RequestVar.SESSION_req, true).getContext().getServletInitParameter(key);
+ return session.getSessionObject(RestRequest.class, SESSION_req, true).getContext().getServletInitParameter(key);
+ }
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
}
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SwaggerVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SwaggerVar.java
index 0fb9dba..2ef272d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SwaggerVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SwaggerVar.java
@@ -46,11 +46,7 @@ import org.apache.juneau.svl.*;
*/
public class SwaggerVar extends MultipartResolvingVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
- public static final String SESSION_req = "req";
-
+ private static final String SESSION_req = "req";
/** The name of this variable. */
public static final String NAME = "SS";
@@ -72,9 +68,14 @@ public class SwaggerVar extends MultipartResolvingVar {
return false;
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return req.getProperties().getString(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlEncodeVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlEncodeVar.java
index 20ff8e2..aa47b43 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlEncodeVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlEncodeVar.java
@@ -48,7 +48,7 @@ public class UrlEncodeVar extends SimpleVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
return urlEncode(key);
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlVar.java
index 113cf9c..a1b5581 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/UrlVar.java
@@ -55,9 +55,14 @@ public class UrlVar extends SimpleVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
return req.getUriResolver().resolve(key);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
index f0d1288..b404677 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
@@ -39,9 +39,6 @@ import org.apache.juneau.svl.*;
*/
public class WidgetVar extends SimpleVar {
- /**
- * The name of the session or context object that identifies the {@link RestRequest} object.
- */
private static final String SESSION_req = "req";
private static final String SESSION_res = "res";
@@ -57,12 +54,13 @@ public class WidgetVar extends SimpleVar {
super(NAME);
}
- @Override /* Parameter */
+ @Override /* Var */
public String resolve(VarResolverSession session, String key) throws Exception {
RestRequest req = session.getSessionObject(RestRequest.class, SESSION_req, true);
RestResponse res = session.getSessionObject(RestResponse.class, SESSION_res, true);
boolean isScript = false, isStyle = false;
+ // TODO - The following lines are deprecated.
if (key.endsWith(".script")) {
key = key.substring(0, key.length() - 7);
isScript = true;
@@ -83,4 +81,9 @@ public class WidgetVar extends SimpleVar {
return w.getStyle(req, res);
return w.getHtml(req, res);
}
+
+ @Override /* Var */
+ public boolean canResolve(VarResolverSession session) {
+ return session.hasSessionObject(SESSION_req) && session.hasSessionObject(SESSION_res);
+ }
}
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
index 0011d06..1ee6e6d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/widget/Widget.java
@@ -16,7 +16,9 @@ import java.io.*;
import java.util.*;
import org.apache.juneau.rest.*;
+import org.apache.juneau.svl.*;
import org.apache.juneau.utils.*;
+import org.apache.juneau.html.*;
/**
* Defines an interface for resolvers of <js>"$W{...}"</js> string variables.
@@ -36,10 +38,13 @@ import org.apache.juneau.utils.*;
* <li class='link'>{@doc juneau-rest-server.HtmlDocAnnotation.Widgets}
* </ul>
*/
-public abstract class Widget {
+public abstract class Widget implements HtmlWidget {
private final ClasspathResourceManager rm = new ClasspathResourceManager(getClass(), ClasspathResourceFinderRecursive.INSTANCE, false);
+ private static final String SESSION_req = "req";
+ private static final String SESSION_res = "res";
+
/**
* The widget key.
*
@@ -54,10 +59,34 @@ public abstract class Widget {
*
* @return The widget key.
*/
+ @Override
public String getName() {
return getClass().getSimpleName();
}
+ private RestRequest req(VarResolverSession session) {
+ return session.getSessionObject(RestRequest.class, SESSION_req, true);
+ }
+
+ private RestResponse res(VarResolverSession session) {
+ return session.getSessionObject(RestResponse.class, SESSION_res, true);
+ }
+
+ @Override /* HtmlWidget */
+ public String getHtml(VarResolverSession session) throws Exception {
+ return getHtml(req(session), res(session));
+ }
+
+ @Override /* HtmlWidget */
+ public String getScript(VarResolverSession session) throws Exception {
+ return getScript(req(session), res(session));
+ }
+
+ @Override /* HtmlWidget */
+ public String getStyle(VarResolverSession session) throws Exception {
+ return getStyle(req(session), res(session));
+ }
+
/**
* Resolves the HTML content for this widget.
*