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 fd3d886 Swagger enhancements.
fd3d886 is described below
commit fd3d886c41b3aec98eff80e22e76234ec4be1e9d
Author: JamesBognar <[email protected]>
AuthorDate: Wed May 2 18:41:09 2018 -0400
Swagger enhancements.
---
.../apache/juneau/rest/BasicRestInfoProvider.java | 9 ++
.../juneau/rest/BasicRestInfoProviderTest.java | 147 ++++++++++++++++++++-
2 files changed, 154 insertions(+), 2 deletions(-)
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 8c11d5e..fdc1101 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
@@ -445,6 +445,15 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
response.appendIf(true, true,
true, "headers", parseMap(pi2.getString("headers"), vr, false, true,
"@Response/headers on class {0} method {1}", c, m));
response.appendIf(true, true,
true, "x-example", parseAnything(vr.resolve(pi2.getString("example"))));
response.appendIf(true, true,
true, "examples", parseMap(pi2.getString("examples"), vr, false, true,
"@Response/examples on class {0} method {1}", c, m));
+
+ Type type = mp.getType();
+ if (type instanceof
ParameterizedType) {
+ ParameterizedType pt =
(ParameterizedType)type;
+ if
(pt.getRawType().equals(Value.class))
+ type =
pt.getActualTypeArguments()[0];
+ }
+
+ response.put("schema",
getSchema(req, response.getObjectMap("schema", true), js, type));
}
} else if (in == RESPONSE_STATUS) {
diff --git
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
index 26962ae..fb4c115 100644
---
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
+++
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
@@ -3069,7 +3069,76 @@ public class BasicRestInfoProviderTest {
// /paths/<path>/<method>/parameters/query/schema
//-----------------------------------------------------------------------------------------------------------------
- // TODO
+ @RestResource()
+ public static class NT01 {
+ @RestMethod(name=GET,path="/path/{foo}/query")
+ public Foo doFoo(@Query("foo") Foo foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void nt01_query_schema_default() throws Exception {
+
assertObjectEquals("{type:'object',properties:{id:{format:'int32',type:'integer'}}}",
getSwagger(new
NT01()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ assertObjectEquals("{'$ref':'#/definitions/Foo'}",
getSwaggerWithFile(new
NT01()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{in:'query',name:'foo',schema:{$ref:'b'}}]}}}"))
+ public static class NT02 {
+ @RestMethod(name=GET,path="/path/{foo}/query")
+ public Foo doFoo(@Query("foo") Foo foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void nt02_query_schema_swaggerOnClass() throws Exception {
+ assertObjectEquals("{'$ref':'b'}", getSwagger(new
NT02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ assertObjectEquals("{'$ref':'b'}", getSwaggerWithFile(new
NT02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{in:'query',name:'foo',schema:{$ref:'b'}}]}}}"))
+ public static class NT03 {
+
+
@RestMethod(name=GET,path="/path/{foo}/query",swagger=@MethodSwagger("parameters:[{'in':'query',name:'foo',schema:{$ref:'c'}}]"))
+ public Foo doFoo() {
+ return null;
+ }
+ }
+
+ @Test
+ public void nt03_query_schema_swaggerOnMethnt() throws Exception {
+ assertObjectEquals("{'$ref':'c'}", getSwagger(new
NT03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ assertObjectEquals("{'$ref':'c'}", getSwaggerWithFile(new
NT03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',schema:{$ref:'c'}}]}}}"))
+ public static class NT04 {
+ @RestMethod(name=GET,path="/path/{foo}/query")
+ public Foo doFoo(@Query(name="foo",schema="{$ref:'d'}") Foo
foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void nt04_query_schema_swaggerOnAnnotation() throws Exception {
+ assertObjectEquals("{'$ref':'d'}", getSwagger(new
NT04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ assertObjectEquals("{'$ref':'d'}", getSwaggerWithFile(new
NT04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ }
+
+ @RestResource(messages="BasicRestInfoProviderTest",
swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',schema:{$ref:'c'}}]}}}"))
+ public static class NT05 {
+ @RestMethod(name=GET,path="/path/{foo}/query")
+ public Foo doFoo(@Query(name="foo",schema="{$ref:'$L{foo}'}")
Foo foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void nt05_query_schema_swaggerOnAnnotation_localized() throws
Exception {
+ assertObjectEquals("{'$ref':'l-foo'}", getSwagger(new
NT05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ assertObjectEquals("{'$ref':'l-foo'}", getSwaggerWithFile(new
NT05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query","foo").getSchema());
+ }
//-----------------------------------------------------------------------------------------------------------------
// /paths/<path>/<method>/responses/<response>/description
@@ -3371,6 +3440,76 @@ public class BasicRestInfoProviderTest {
// /paths/<path>/<method>/responses/<response>/schema
//-----------------------------------------------------------------------------------------------------------------
+ @RestResource()
+ public static class OE01 {
+ @RestMethod(name=GET,path="/path/{foo}/responses/100")
+ public Foo doFoo(@Response(code=100) Value<Foo> foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void oe01_responses_100_schema_default() throws Exception {
+
assertObjectEquals("{type:'object',properties:{id:{format:'int32',type:'integer'}}}",
getSwagger(new
OE01()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+
assertObjectEquals("{type:'array',items:{'$ref':'#/definitions/Foo'}}",
getSwaggerWithFile(new
OE01()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
+ public static class OE02 {
+ @RestMethod(name=GET,path="/path/{foo}/responses/100")
+ public Foo doFoo(@ResponseStatus Value<Integer> foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void oe02_response_100_schema_swaggerOnClass() throws Exception {
+ assertObjectEquals("{'$ref':'b'}", getSwagger(new
OE02()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ assertObjectEquals("{'$ref':'b'}", getSwaggerWithFile(new
OE02()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
+ public static class OE03 {
+
@RestMethod(name=GET,path="/path/{foo}/responses/100",swagger=@MethodSwagger("responses:{100:{schema:{$ref:'c'}}}}"))
+ public Foo doFoo(@ResponseStatus Value<Integer> foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void oe03_response_100_schema_swaggerOnMethoe() throws Exception
{
+ assertObjectEquals("{'$ref':'c'}", getSwagger(new
OE03()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ assertObjectEquals("{'$ref':'c'}", getSwaggerWithFile(new
OE03()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ }
+
+
@RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
+ public static class OE04 {
+ @RestMethod(name=GET,path="/path/{foo}/responses/100")
+ public Foo doFoo(@Response(code=100,schema="{$ref:'d'}")
Value<Foo> foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void oe04_response_100_schema_swaggerOnAnnotation() throws
Exception {
+ assertObjectEquals("{'$ref':'d'}", getSwagger(new
OE04()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ assertObjectEquals("{'$ref':'d'}", getSwaggerWithFile(new
OE04()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ }
+
+ @RestResource(messages="BasicRestInfoProviderTest",
swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
+ public static class OE05 {
+ @RestMethod(name=GET,path="/path/{foo}/responses/100")
+ public Foo doFoo(@Response(code=100,schema="{$ref:'$L{foo}'}")
Value<Foo> foo) {
+ return null;
+ }
+ }
+
+ @Test
+ public void oe05_response_100_schema_swaggerOnAnnotation_loealized()
throws Exception {
+ assertObjectEquals("{'$ref':'l-foo'}", getSwagger(new
OE05()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ assertObjectEquals("{'$ref':'l-foo'}", getSwaggerWithFile(new
OE05()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getSchema());
+ }
+
//-----------------------------------------------------------------------------------------------------------------
// @Header on POJO
//-----------------------------------------------------------------------------------------------------------------
@@ -3416,7 +3555,11 @@ public class BasicRestInfoProviderTest {
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
- // @Response on parameter
+ // @Response on parameter of type Value
+
//-----------------------------------------------------------------------------------------------------------------
+
+
//-----------------------------------------------------------------------------------------------------------------
+ // @Response on parameter of type other than Value
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
--
To stop receiving notification emails like this one, please contact
[email protected].