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 1525ea6 REST refactoring.
1525ea6 is described below
commit 1525ea64c10c77b6d05d6eb563bb8372b9f1a1e6
Author: JamesBognar <[email protected]>
AuthorDate: Tue Feb 9 12:35:23 2021 -0500
REST refactoring.
---
.../java/org/apache/juneau/rest/RequestHeader.java | 4 +-
.../apache/juneau/rest/RestOperationContext.java | 24 ++-
.../java/org/apache/juneau/rest/RestRequest.java | 179 ++++++++-------------
.../juneau/rest/params/ResponseBeanParam.java | 2 +-
.../juneau/rest/params/ResponseHeaderParam.java | 2 +-
.../juneau/rest/reshandlers/DefaultHandler.java | 2 +-
6 files changed, 95 insertions(+), 118 deletions(-)
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
index 6f76f60..f1b393f 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
@@ -178,7 +178,7 @@ public class RequestHeader implements Header {
* @throws ParseException If value could not be parsed.
*/
public <T> T as(Type type, Type...args) throws ParseException {
- return as(request.getClassMeta(type, args));
+ return as(request.getBeanSession().getClassMeta(type, args));
}
/**
@@ -205,7 +205,7 @@ public class RequestHeader implements Header {
* @throws ParseException If value could not be parsed.
*/
public <T> T as(Class<T> type) throws ParseException {
- return as(request.getClassMeta(type));
+ return as(request.getBeanSession().getClassMeta(type));
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 7957f58..855bcb1 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1547,7 +1547,13 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
return x;
}
- ResponseBeanMeta getResponseBeanMeta(Object o) {
+ /**
+ * Returns metadata about the specified response object if it's
annotated with {@link Response @Response}.
+ *
+ * @param o The response POJO.
+ * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link Response @Response}.
+ */
+ public ResponseBeanMeta getResponseBeanMeta(Object o) {
if (o == null)
return null;
Class<?> c = o.getClass();
@@ -1563,7 +1569,13 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
return rbm;
}
- ResponsePartMeta getResponseHeaderMeta(Object o) {
+ /**
+ * Returns metadata about the specified response object if it's
annotated with {@link ResponseHeader @ResponseHeader}.
+ *
+ * @param o The response POJO.
+ * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link ResponseHeader @ResponseHeader}.
+ */
+ public ResponsePartMeta getResponseHeaderMeta(Object o) {
if (o == null)
return null;
Class<?> c = o.getClass();
@@ -1584,7 +1596,13 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
return pm;
}
- ResponsePartMeta getResponseBodyMeta(Object o) {
+ /**
+ * Returns metadata about the specified response object if it's
annotated with {@link ResponseBody @ResponseBody}.
+ *
+ * @param o The response POJO.
+ * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link ResponseBody @ResponseBody}.
+ */
+ public ResponsePartMeta getResponseBodyMeta(Object o) {
if (o == null)
return null;
Class<?> c = o.getClass();
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 a9f65c8..1c0906e 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
@@ -110,6 +110,8 @@ public final class RestRequest extends
HttpServletRequestWrapper {
private final HttpPartSerializerSession partSerializerSession;
private final HttpPartParserSession partParserSession;
private final RestCall call;
+ private final SerializerSessionArgs serializerSessionArgs;
+ private final ParserSessionArgs parserSessionArgs;
// Lazy initialized.
private VarResolverSession varSession;
@@ -118,21 +120,18 @@ public final class RestRequest extends
HttpServletRequestWrapper {
private String charset, authorityPath;
private Config config;
private Swagger swagger;
- private SerializerSessionArgs serializerSessionArgs;
- private ParserSessionArgs parserSessionArgs;
/**
* Constructor.
*/
RestRequest(RestCall call, RestOperationContext opContext) throws
Exception {
super(call.getRequest());
+ call.restRequest(this);
this.call = call;
this.opContext = opContext;
inner = call.getRequest();
- call.restRequest(this);
-
context = call.getContext();
queryParams = new RequestQuery(this);
@@ -158,25 +157,49 @@ public final class RestRequest extends
HttpServletRequestWrapper {
if (! s.isEmpty())
headers.queryParams(queryParams, s);
- this.pathParams = new RequestPath(call);
+ pathParams = new RequestPath(call);
- this.beanSession = opContext.createSession();
- this.partParserSession =
opContext.getPartParser().createPartSession(getParserSessionArgs());
- this.partSerializerSession =
opContext.getPartSerializer().createPartSession(getSerializerSessionArgs());
- this.pathParams
- .parser(partParserSession);
- this.queryParams
+ beanSession = opContext.createSession();
+
+ parserSessionArgs =
+ ParserSessionArgs
+ .create()
+ .javaMethod(opContext.getJavaMethod())
+ .locale(getLocale())
+ .timeZone(getHeaders().getTimeZone())
+ .debug(isDebug() ? true : null);
+
+ partParserSession =
opContext.getPartParser().createPartSession(parserSessionArgs);
+
+ serializerSessionArgs = SerializerSessionArgs
+ .create()
+ .javaMethod(opContext.getJavaMethod())
+ .locale(getLocale())
+ .timeZone(getHeaders().getTimeZone())
+ .debug(isDebug() ? true : null)
+ .uriContext(getUriContext())
+ .resolver(getVarResolverSession())
+ .useWhitespace(isPlainText() ? true : null);
+
+ partSerializerSession =
opContext.getPartSerializer().createPartSession(serializerSessionArgs);
+
+ pathParams.parser(partParserSession);
+
+ queryParams
.addDefault(opContext.getDefaultRequestQuery())
.parser(partParserSession);
- this.headers
+
+ headers
.addDefault(opContext.getDefaultRequestHeaders())
.addDefault(context.getDefaultRequestHeaders())
.parser(partParserSession);
- this.attrs = new RequestAttributes(this);
- this.attrs
+
+ attrs = new RequestAttributes(this);
+ attrs
.addDefault(opContext.getDefaultRequestAttributes())
.addDefault(context.getDefaultRequestAttributes());
- this.body
+
+ body
.encoders(opContext.getEncoders())
.parsers(opContext.getParsers())
.headers(headers)
@@ -872,7 +895,7 @@ public final class RestRequest extends
HttpServletRequestWrapper {
* @return <jk>true</jk> if {@code &plainText=true} was specified
as a URL parameter
*/
public boolean isPlainText() {
- return "true".equals(getQuery().getString("plainText",
"false"));
+ return "true".equals(queryParams.getString("plainText",
"false"));
}
/**
@@ -932,6 +955,15 @@ public final class RestRequest extends
HttpServletRequestWrapper {
}
/**
+ * Returns access to the inner {@link RestOperationContext} of this
method.
+ *
+ * @return The {@link RestOperationContext} of this method. May be
<jk>null</jk> if method has not yet been found.
+ */
+ public RestOperationContext getOpContext() {
+ return opContext;
+ }
+
+ /**
* Returns the {@link BeanSession} associated with this request.
*
* @return The request bean session.
@@ -1224,44 +1256,12 @@ public final class RestRequest extends
HttpServletRequestWrapper {
}
}
- @Override /* Object */
- public String toString() {
- StringBuilder sb = new
StringBuilder("\n").append(getDescription()).append("\n");
- sb.append("---Headers---\n");
- for (Enumeration<String> e = getHeaderNames();
e.hasMoreElements();) {
- String h = e.nextElement();
- sb.append("\t").append(h).append(":
").append(getHeader(h)).append("\n");
- }
- String m = getMethod();
- if (m.equals("PUT") || m.equals("POST")) {
- try {
- sb.append("---Body UTF-8---\n");
- sb.append(body.asString()).append("\n");
- sb.append("---Body Hex---\n");
- sb.append(body.asSpacedHex()).append("\n");
- } catch (Exception e1) {
- sb.append(e1.getLocalizedMessage());
- }
- }
- return sb.toString();
- }
-
/**
* Returns the session arguments to pass to serializers.
*
* @return The session arguments to pass to serializers.
*/
public SerializerSessionArgs getSerializerSessionArgs() {
- if (serializerSessionArgs == null)
- serializerSessionArgs = SerializerSessionArgs
- .create()
- .javaMethod(opContext.getJavaMethod())
- .locale(getLocale())
- .timeZone(getHeaders().getTimeZone())
- .debug(isDebug() ? true : null)
- .uriContext(getUriContext())
- .resolver(getVarResolverSession())
- .useWhitespace(isPlainText() ? true : null);
return serializerSessionArgs;
}
@@ -1271,17 +1271,10 @@ public final class RestRequest extends
HttpServletRequestWrapper {
* @return The session arguments to pass to parsers.
*/
public ParserSessionArgs getParserSessionArgs() {
- if (parserSessionArgs == null)
- parserSessionArgs =
- ParserSessionArgs
- .create()
- .javaMethod(opContext.getJavaMethod())
- .locale(getLocale())
- .timeZone(getHeaders().getTimeZone())
- .debug(isDebug() ? true : null);
return parserSessionArgs;
}
+ /* Called by RestCall.finish() */
void close() {
if (config != null) {
try {
@@ -1293,45 +1286,6 @@ public final class RestRequest extends
HttpServletRequestWrapper {
}
/**
- * Returns metadata about the specified response object if it's
annotated with {@link Response @Response}.
- *
- * @param o The response POJO.
- * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link Response @Response}.
- */
- public ResponseBeanMeta getResponseBeanMeta(Object o) {
- return opContext.getResponseBeanMeta(o);
- }
-
- /**
- * Returns metadata about the specified response object if it's
annotated with {@link ResponseHeader @ResponseHeader}.
- *
- * @param o The response POJO.
- * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link ResponseHeader @ResponseHeader}.
- */
- public ResponsePartMeta getResponseHeaderMeta(Object o) {
- return opContext.getResponseHeaderMeta(o);
- }
-
- /**
- * Returns metadata about the specified response object if it's
annotated with {@link ResponseBody @ResponseBody}.
- *
- * @param o The response POJO.
- * @return Metadata about the specified response object, or
<jk>null</jk> if it's not annotated with {@link ResponseBody @ResponseBody}.
- */
- public ResponsePartMeta getResponseBodyMeta(Object o) {
- return opContext.getResponseBodyMeta(o);
- }
-
- /**
- * Returns access to the inner {@link RestOperationContext} of this
method.
- *
- * @return The {@link RestOperationContext} of this method. May be
<jk>null</jk> if method has not yet been found.
- */
- public RestOperationContext getOpContext() {
- return opContext;
- }
-
- /**
* Returns the wrapped servlet request.
*
* @return The wrapped servlet request.
@@ -1340,21 +1294,26 @@ public final class RestRequest extends
HttpServletRequestWrapper {
return inner;
}
- /**
- * Returns the REST object of this call.
- *
- * @return The REST object of this call.
- */
- public Object getResource() {
- return call.getResource();
- }
-
- <T> ClassMeta<T> getClassMeta(Type type, Type[] args) {
- return beanSession.getClassMeta(type, args);
- }
-
- <T> ClassMeta<T> getClassMeta(Class<T> type) {
- return beanSession.getClassMeta(type);
+ @Override /* Object */
+ public String toString() {
+ StringBuilder sb = new
StringBuilder("\n").append(getDescription()).append("\n");
+ sb.append("---Headers---\n");
+ for (Enumeration<String> e = getHeaderNames();
e.hasMoreElements();) {
+ String h = e.nextElement();
+ sb.append("\t").append(h).append(":
").append(getHeader(h)).append("\n");
+ }
+ String m = getMethod();
+ if (m.equals("PUT") || m.equals("POST")) {
+ try {
+ sb.append("---Body UTF-8---\n");
+ sb.append(body.asString()).append("\n");
+ sb.append("---Body Hex---\n");
+ sb.append(body.asSpacedHex()).append("\n");
+ } catch (Exception e1) {
+ sb.append(e1.getLocalizedMessage());
+ }
+ }
+ return sb.toString();
}
//-----------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
index 036de33..dc82632 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
@@ -68,7 +68,7 @@ public class ResponseBeanParam implements RestOperationParam {
public void onSet(Object o) {
RestRequest req = call.getRestRequest();
RestResponse res = call.getRestResponse();
- ResponseBeanMeta meta =
req.getResponseBeanMeta(o);
+ ResponseBeanMeta meta =
req.getOpContext().getResponseBeanMeta(o);
if (meta == null)
meta = ResponseBeanParam.this.meta;
res.setResponseMeta(meta);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
index 822ee27..5ec9bd3 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
@@ -88,7 +88,7 @@ public class ResponseHeaderParam implements
RestOperationParam {
try {
RestRequest req = call.getRestRequest();
RestResponse res =
call.getRestResponse();
- ResponsePartMeta rpm =
req.getResponseHeaderMeta(o);
+ ResponsePartMeta rpm =
req.getOpContext().getResponseHeaderMeta(o);
if (rpm == null)
rpm =
ResponseHeaderParam.this.meta;
HttpPartSerializerSession pss =
rpm.getSerializer() == null ? req.getPartSerializerSession() :
rpm.getSerializer().createPartSession(req.getSerializerSessionArgs());
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
index a3f34c8..4c20e8f 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
@@ -63,7 +63,7 @@ public class DefaultHandler implements ResponseHandler {
ResponseBeanMeta rm = res.getResponseMeta();
if (rm == null)
- rm = req.getResponseBeanMeta(o);
+ rm = req.getOpContext().getResponseBeanMeta(o);
if (rm != null) {