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 5f19e4b Swagger UI enhancements.
5f19e4b is described below
commit 5f19e4b2c166b6afefe1e4be87afc0c609e94c50
Author: JamesBognar <[email protected]>
AuthorDate: Tue Apr 3 18:24:34 2018 -0400
Swagger UI enhancements.
---
.../java/org/apache/juneau/BeanPropertyMeta.java | 9 +++++++--
.../jsonschema/JsonSchemaSerializerSession.java | 12 +++++++++++-
.../apache/juneau/rest/BasicRestInfoProvider.java | 21 ++++++++-------------
3 files changed, 26 insertions(+), 16 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 4037122..1644c7e 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -642,11 +642,16 @@ public final class BeanPropertyMeta {
if
(propertyClass.isInstance(valueMap)) {
if (!
valueType.isObject()) {
+ boolean
needsConversion = false;
for
(Map.Entry e : (Set<Map.Entry>)valueMap.entrySet()) {
Object v = e.getValue();
-
if (v != null && ! valueType.getInnerClass().isInstance(v))
-
v = session.convertToType(v, valueType);
+
if (v != null && ! valueType.getInnerClass().isInstance(v)) {
+
needsConversion = true;
+
break;
+
}
}
+ if
(needsConversion)
+
valueMap = (Map)session.convertToType(valueMap, rawTypeMeta);
}
invokeSetter(bean, pName, valueMap);
return r;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaSerializerSession.java
index ea39466..af574af 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaSerializerSession.java
@@ -113,8 +113,18 @@ public class JsonSchemaSerializerSession extends
JsonSerializerSession {
boolean useDef = useBeanDefs && sType.isBean() && pNames ==
null;
- if (useDef && defs.containsKey(getBeanDefId(sType)))
+ if (useDef && defs.containsKey(getBeanDefId(sType))) {
+ ObjectMap schema = defs.get(getBeanDefId(sType));
+
+ // If we previously encountered this bean in a
collection/array, then it may not have
+ // the example and description associated with it, so
add it now.
+ if (! schema.containsKey("example"))
+ schema.appendIf(true, true, true, "example",
getExample(sType, BEAN, exampleAdded));
+ if (! schema.containsKey("description"))
+ schema.appendIf(true, true, true,
"description", getDescription(sType, BEAN, exampleAdded));
+
return new ObjectMap().append("$ref",
getBeanDefUri(sType));
+ }
ObjectMap ds =
defaultSchemas.get(sType.getInnerClass().getName());
if (ds != null && ds.containsKey("type"))
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 6aec374..f907702 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
@@ -382,7 +382,7 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
param.put("required", true);
param.put("schema", getSchema(req,
param.getObjectMap("schema", true), js, mp.getType()));
- addXExamples(req, sm, omSwagger, param,
in.toString(), js, mp.getType());
+ addXExamples(req, sm, param, in.toString(), js,
mp.getType());
}
if (! paramMap.isEmpty())
@@ -417,7 +417,7 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
ObjectMap okResponse = responses.getObjectMap("200");
okResponse.put("schema", getSchema(req,
okResponse.getObjectMap("schema", true), js, m.getGenericReturnType()));
- addXExamples(req, sm, omSwagger, okResponse, "ok", js,
m.getGenericReturnType());
+ addXExamples(req, sm, okResponse, "ok", js,
m.getGenericReturnType());
if (responses.isEmpty())
op.remove("responses");
@@ -465,18 +465,15 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
if (schema.containsKey("type") || schema.containsKey("$ref"))
return schema;
- if (cm.isBean() && js.isUseBeanDefs())
- schema.put("$ref", js.getBeanDefUri(cm));
- else
- schema.putAll(js.getSchema(cm));
+ schema.putAll(js.getSchema(cm));
return schema;
}
- private void addXExamples(RestRequest req, RestJavaMethod sm, ObjectMap
swagger, ObjectMap m, String in, JsonSchemaSerializerSession js, Type type)
throws Exception {
+ private void addXExamples(RestRequest req, RestJavaMethod sm, ObjectMap
m, String in, JsonSchemaSerializerSession js, Type type) throws Exception {
- ObjectMap schema = resolve(m.getObjectMap("schema"));
+ ObjectMap schema = resolve(js, m.getObjectMap("schema"));
if (schema == null)
return;
@@ -516,15 +513,13 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
m.put(examplesKey, examples);
}
- private ObjectMap resolve(ObjectMap m) {
+ private ObjectMap resolve(JsonSchemaSerializerSession js, ObjectMap m) {
if (m == null)
return null;
if (m.containsKey("$ref")) {
String ref = m.getString("$ref");
- if (ref.startsWith("#/definitions/")) {
- ref = ref.substring(1);
- return m.getAt(ref, ObjectMap.class);
- }
+ if (ref.startsWith("#/definitions/"))
+ return js.getBeanDefs().get(ref.substring(14));
}
return m;
}
--
To stop receiving notification emails like this one, please contact
[email protected].