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 2018/09/16 21:34:54 UTC
[juneau] branch master updated: Bug in SwaggerGenerator with bean
with read-only properties.
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 01ad847 Bug in SwaggerGenerator with bean with read-only properties.
01ad847 is described below
commit 01ad8471317bed020eb6b15ecdcaab4bde7bea5e
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun Sep 16 17:34:39 2018 -0400
Bug in SwaggerGenerator with bean with read-only properties.
---
.../org/apache/juneau/rest/BasicRestServlet.java | 5 ++-
.../juneau/rest/BasicRestInfoProviderTest.java | 48 ++++++++++++++++++++++
2 files changed, 52 insertions(+), 1 deletion(-)
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 4c8f26f..92fec74 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
@@ -223,7 +223,10 @@ public abstract class BasicRestServlet extends RestServlet implements BasicRestC
// Shortcut for boolean properties.
flags={
// Use $ref references for bean definitions to reduce duplication in Swagger.
- JSONSCHEMA_useBeanDefs
+ 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/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
index 2d005aa..14aac88 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
@@ -2286,4 +2286,52 @@ public class BasicRestInfoProviderTest {
public static class Foo {
public int id;
}
+
+ //=================================================================================================================
+ // Example bean with getter-only property.
+ //=================================================================================================================
+
+ @RestResource
+ public static class P extends BasicRestServlet {
+ private static final long serialVersionUID = 1L;
+
+ @RestMethod(name=GET,path="/")
+ public P01 doFoo(@Body P01 body) {
+ return null;
+ }
+ }
+
+ public static class P01 {
+ private int f1;
+
+ public P01 setF1(int f1) {
+ this.f1 = f1;
+ return this;
+ }
+
+ public int getF1() {
+ return f1;
+ }
+
+ public int getF2() {
+ return 2;
+ }
+
+ @Example
+ public static P01 example() {
+ return new P01().setF1(1);
+ }
+ }
+
+ static MockRest p = MockRest.create(P.class);
+
+ @Test
+ public void p01_bodyWithReadOnlyProperty() throws Exception {
+ Swagger s = JsonParser.DEFAULT.parse(p.options("/").accept("application/json").execute().getBodyAsString(), Swagger.class);
+ Operation o = s.getOperation("/", "get");
+ ParameterInfo pi = o.getParameter("body", null);
+ assertEquals("{\n\tf1: 1,\n\tf2: 2\n}", pi.getExamples().get("application/json+simple"));
+ ResponseInfo ri = o.getResponse("200");
+ assertEquals("{\n\tf1: 1,\n\tf2: 2\n}", ri.getExamples().get("application/json+simple"));
+ }
}