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/16 14:26:11 UTC
[juneau] branch master updated: Add OPTIONS page to BasicRestConfig.
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 7e58556 Add OPTIONS page to BasicRestConfig.
7e58556 is described below
commit 7e58556ff8dbad09b4d1c5bc0c96b9bebbd224df
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sat Mar 16 10:25:39 2019 -0400
Add OPTIONS page to BasicRestConfig.
---
.../org/apache/juneau/internal/ClassUtils.java | 17 +++---
.../juneau/examples/rest/HelloWorldResource.java | 6 +++
.../java/org/apache/juneau/rest/BasicRest.java | 48 +----------------
.../org/apache/juneau/rest/BasicRestConfig.java | 62 +++++++++++++++++++++-
.../org/apache/juneau/rest/BasicRestServlet.java | 48 +----------------
5 files changed, 75 insertions(+), 106 deletions(-)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
index 43a8369..dbda0b7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
@@ -1359,21 +1359,18 @@ public final class ClassUtils {
* Methods are ordered from child-to-parent order.
*/
public static List<Method> findMatchingMethods(Method m) {
- return findMatchingMethods(new ArrayList<Method>(), m);
+ return findMatchingMethods(new ArrayList<Method>(), m, m.getDeclaringClass());
}
- private static List<Method> findMatchingMethods(List<Method> l, Method m) {
- l.add(m);
- Class<?> c = m.getDeclaringClass();
+ private static List<Method> findMatchingMethods(List<Method> l, Method m, Class<?> c) {
+ for (Method m2 : c.getDeclaredMethods())
+ if (isSameMethod(m, m2))
+ l.add(m2);
Class<?> pc = c.getSuperclass();
if (pc != null)
- for (Method m2 : pc.getDeclaredMethods())
- if (isSameMethod(m, m2))
- findMatchingMethods(l, m2);
+ findMatchingMethods(l, m, pc);
for (Class<?> ic : c.getInterfaces())
- for (Method m2 : ic.getDeclaredMethods())
- if (isSameMethod(m, m2))
- findMatchingMethods(l, m2);
+ findMatchingMethods(l, m, ic);
return l;
}
diff --git a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
index 6be4b23..fc424b1 100644
--- a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
+++ b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
@@ -14,6 +14,7 @@ package org.apache.juneau.examples.rest;
import static org.apache.juneau.http.HttpMethodName.*;
+import org.apache.juneau.dto.swagger.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
@@ -45,4 +46,9 @@ public class HelloWorldResource implements BasicRestConfig {
public String sayHello() {
return "Hello world!";
}
+
+ @Override
+ public Swagger getOptions(RestRequest req) {
+ return req.getSwagger();
+ }
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
index 18130b4..7b28d07 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRest.java
@@ -12,13 +12,9 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest;
-import static org.apache.juneau.http.HttpMethodName.*;
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
import javax.servlet.http.*;
import org.apache.juneau.dto.swagger.*;
-import org.apache.juneau.dto.swagger.ui.*;
import org.apache.juneau.rest.annotation.*;
/**
@@ -51,49 +47,7 @@ public abstract class BasicRest implements BasicRestConfig {
* @param req The HTTP request.
* @return A bean containing the contents for the OPTIONS page.
*/
- @RestMethod(name=OPTIONS, path="/*",
-
- summary="Swagger documentation",
- description="Swagger documentation for this resource.",
-
- htmldoc=@HtmlDoc(
- // Override the nav links for the swagger page.
- navlinks={
- "back: servlet:/",
- "json: servlet:/?method=OPTIONS&Accept=text/json&plainText=true"
- },
- // Never show aside contents of page inherited from class.
- aside="NONE"
- ),
-
- // POJO swaps to apply to all serializers/parsers on this method.
- pojoSwaps={
- // Use the SwaggerUI swap when rendering Swagger beans.
- // This is a per-media-type swap that only applies to text/html requests.
- SwaggerUI.class
- },
-
- // Properties to apply to all serializers/parsers and REST-specific API objects on this method.
- properties={
- // Add descriptions to the following types when not specified:
- @Property(name=JSONSCHEMA_addDescriptionsTo, value="bean,collection,array,map,enum"),
-
- // Add x-example to the following types:
- @Property(name=JSONSCHEMA_addExamplesTo, value="bean,collection,array,map"),
-
- // Don't generate schema information on the Swagger bean itself or HTML beans.
- @Property(name=JSONSCHEMA_ignoreTypes, value="Swagger,org.apache.juneau.dto.html5.*")
- },
-
- // Shortcut for boolean properties.
- flags={
- // Use $ref references for bean definitions to reduce duplication in Swagger.
- JSONSCHEMA_useBeanDefs,
-
- // When parsing generated beans, ignore unknown properties that may only exist as getters and not setters.
- BEAN_ignoreUnknownBeanProperties
- }
- )
+ @Override /* BasicRestConfig */
public Swagger getOptions(RestRequest req) {
// Localized Swagger for this resource is available through the RestRequest object.
return req.getSwagger();
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestConfig.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestConfig.java
index 45863cd..934db0b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestConfig.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestConfig.java
@@ -12,8 +12,13 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest;
+import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.http.HttpMethodName.*;
+import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
import static org.apache.juneau.serializer.Serializer.*;
+import org.apache.juneau.dto.swagger.*;
+import org.apache.juneau.dto.swagger.ui.*;
import org.apache.juneau.html.*;
import org.apache.juneau.json.*;
import org.apache.juneau.msgpack.*;
@@ -84,7 +89,8 @@ import org.apache.juneau.xmlschema.XmlSchemaDocSerializer;
// Basic page navigation links.
navlinks={
- "up: request:/.."
+ "up: request:/..",
+ "options: servlet:/?method=OPTIONS"
},
// Default stylesheet to use for the page.
@@ -112,4 +118,56 @@ import org.apache.juneau.xmlschema.XmlSchemaDocSerializer;
// By default, we define static files through the external configuration file.
staticFiles="$C{REST/staticFiles,htdocs:htdocs}"
)
-public interface BasicRestConfig {}
+public interface BasicRestConfig {
+
+ /**
+ * [OPTIONS /*] - Show resource options.
+ *
+ * @param req The HTTP request.
+ * @return A bean containing the contents for the OPTIONS page.
+ */
+ @RestMethod(name=OPTIONS, path="/*",
+
+ summary="Swagger documentation",
+ description="Swagger documentation for this resource.",
+
+ htmldoc=@HtmlDoc(
+ // Override the nav links for the swagger page.
+ navlinks={
+ "back: servlet:/",
+ "json: servlet:/?method=OPTIONS&Accept=text/json&plainText=true"
+ },
+ // Never show aside contents of page inherited from class.
+ aside="NONE"
+ ),
+
+ // POJO swaps to apply to all serializers/parsers on this method.
+ pojoSwaps={
+ // Use the SwaggerUI swap when rendering Swagger beans.
+ // This is a per-media-type swap that only applies to text/html requests.
+ SwaggerUI.class
+ },
+
+ // Properties to apply to all serializers/parsers and REST-specific API objects on this method.
+ properties={
+ // Add descriptions to the following types when not specified:
+ @Property(name=JSONSCHEMA_addDescriptionsTo, value="bean,collection,array,map,enum"),
+
+ // Add x-example to the following types:
+ @Property(name=JSONSCHEMA_addExamplesTo, value="bean,collection,array,map"),
+
+ // Don't generate schema information on the Swagger bean itself or HTML beans.
+ @Property(name=JSONSCHEMA_ignoreTypes, value="Swagger,org.apache.juneau.dto.html5.*")
+ },
+
+ // Shortcut for boolean properties.
+ flags={
+ // Use $ref references for bean definitions to reduce duplication in Swagger.
+ JSONSCHEMA_useBeanDefs,
+
+ // When parsing generated beans, ignore unknown properties that may only exist as getters and not setters.
+ BEAN_ignoreUnknownBeanProperties
+ }
+ )
+ public Swagger getOptions(RestRequest req);
+}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
index d997d0b..fe3298d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
@@ -12,11 +12,7 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest;
-import static org.apache.juneau.http.HttpMethodName.*;
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
import org.apache.juneau.dto.swagger.*;
-import org.apache.juneau.dto.swagger.ui.*;
import org.apache.juneau.html.*;
import org.apache.juneau.jso.*;
import org.apache.juneau.json.*;
@@ -185,49 +181,7 @@ public abstract class BasicRestServlet extends RestServlet implements BasicRestC
* @param req The HTTP request.
* @return A bean containing the contents for the OPTIONS page.
*/
- @RestMethod(name=OPTIONS, path="/*",
-
- summary="Swagger documentation",
- description="Swagger documentation for this resource.",
-
- htmldoc=@HtmlDoc(
- // Override the nav links for the swagger page.
- navlinks={
- "back: servlet:/",
- "json: servlet:/?method=OPTIONS&Accept=text/json&plainText=true"
- },
- // Never show aside contents of page inherited from class.
- aside="NONE"
- ),
-
- // POJO swaps to apply to all serializers/parsers on this method.
- pojoSwaps={
- // Use the SwaggerUI swap when rendering Swagger beans.
- // This is a per-media-type swap that only applies to text/html requests.
- SwaggerUI.class
- },
-
- // Properties to apply to all serializers/parsers and REST-specific API objects on this method.
- properties={
- // Add descriptions to the following types when not specified:
- @Property(name=JSONSCHEMA_addDescriptionsTo, value="bean,collection,array,map,enum"),
-
- // Add x-example to the following types:
- @Property(name=JSONSCHEMA_addExamplesTo, value="bean,collection,array,map"),
-
- // Don't generate schema information on the Swagger bean itself or HTML beans.
- @Property(name=JSONSCHEMA_ignoreTypes, value="Swagger,org.apache.juneau.dto.html5.*")
- },
-
- // Shortcut for boolean properties.
- flags={
- // Use $ref references for bean definitions to reduce duplication in Swagger.
- JSONSCHEMA_useBeanDefs,
-
- // When parsing generated beans, ignore unknown properties that may only exist as getters and not setters.
- BEAN_ignoreUnknownBeanProperties
- }
- )
+ @Override /* BasicRestConfig */
public Swagger getOptions(RestRequest req) {
// Localized Swagger for this resource is available through the RestRequest object.
return req.getSwagger();