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/15 13:08:56 UTC

[juneau] branch master updated: SwaggerUI fixes.

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 736fbf9  SwaggerUI fixes.
736fbf9 is described below

commit 736fbf9d9674d689eea2373bccf3d1d120766c8a
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sat Sep 15 09:08:43 2018 -0400

    SwaggerUI fixes.
---
 .../java/org/apache/juneau/dto/swagger/Items.java  | 11 +++----
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java    |  6 ++++
 .../org/apache/juneau/rest/SwaggerGenerator.java   | 34 ++++++++++++++--------
 3 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
index dae9b69..fca4f32 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -1159,12 +1159,13 @@ public class Items extends SwaggerElement {
 	private Object resolveRefs(Object o, Swagger swagger, Deque<String> refStack, int maxDepth) {
 		if (o instanceof ObjectMap) {
 			ObjectMap om = (ObjectMap)o;
-			String ref = om.getString("$ref");
-			if (ref != null) {
-				if (refStack.contains(ref) || refStack.size() >= maxDepth)
+			Object ref = om.get("$ref");
+			if (ref instanceof CharSequence) {
+				String sref = ref.toString();
+				if (refStack.contains(sref) || refStack.size() >= maxDepth)
 					return o;
-				refStack.addLast(ref);
-				Object o2 = swagger.findRef(ref, Object.class);
+				refStack.addLast(sref);
+				Object o2 = swagger.findRef(sref, Object.class);
 				o2 = resolveRefs(o2, swagger, refStack, maxDepth);
 				refStack.removeLast();
 				return o2;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
index f39a423..3c7cbfe 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
@@ -326,6 +326,9 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 			for (Map.Entry<String,?> e : examples.entrySet())
 				m.put(e.getKey(), e.getValue());
 
+		if (m.isEmpty())
+			return null;
+
 		return examplesDiv(m);
 	}
 
@@ -343,6 +346,9 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 			for (Map.Entry<String,?> e : examples.entrySet())
 				m.put(e.getKey(), e.getValue());
 
+		if (m.isEmpty())
+			return null;
+
 		return examplesDiv(m);
 	}
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
index e6d20d5..30b8fc0 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerGenerator.java
@@ -328,9 +328,9 @@ final class SwaggerGenerator {
 						param.append("name", mp.name);
 
 					if (in == BODY)
-						param.put("schema", getSchema(param.getObjectMap("schema", false), mp.getType()));
+						param.appendSkipEmpty("schema", getSchema(param.getObjectMap("schema"), mp.getType()));
 					else
-						mergePartSchema(param, getSchema(param.getObjectMap("schema", false), mp.getType()));
+						mergePartSchema(param, getSchema(param.getObjectMap("schema"), mp.getType()));
 
 					try {
 						if (mp.method != null) {
@@ -392,12 +392,12 @@ final class SwaggerGenerator {
 				for (String code : responses.keySet()) {
 					ObjectMap om = responses.getObjectMap(code);
 					if (! om.containsKey("schema"))
-						om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema", true), m.getGenericReturnType()));
+						om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema"), m.getGenericReturnType()));
 				}
 			} else if (m.getGenericReturnType() != void.class) {
 				ObjectMap om = responses.getObjectMap("200", true);
 				if (! om.containsKey("schema"))
-					om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema", true), m.getGenericReturnType()));
+					om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema"), m.getGenericReturnType()));
 				addBodyExamples(sm, om, true, m.getGenericReturnType());
 			}
 
@@ -426,7 +426,7 @@ final class SwaggerGenerator {
 						for (String code : responses.keySet()) {
 							ObjectMap om = responses.getObjectMap(code);
 							if (! om.containsKey("schema"))
-								om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema", true), type));
+								om.appendSkipEmpty("schema", getSchema(om.getObjectMap("schema"), type));
 						}
 					}
 				}
@@ -655,7 +655,7 @@ final class SwaggerGenerator {
 		ObjectMap om = newMap(new ObjectMap(), a.value(), location, locationArgs);
 		om.appendSkipEmpty("description", resolve(joinnl(a.description())));
 		om.appendSkipEmpty("url", resolve(a.url()));
-		return om.isEmpty() ? null : om;
+		return nullIfEmpty(om);
 	}
 
 	private ObjectMap toMap(Contact a, String location, Object...locationArgs) throws ParseException {
@@ -665,7 +665,7 @@ final class SwaggerGenerator {
 		om.appendSkipEmpty("name", resolve(a.name()));
 		om.appendSkipEmpty("url", resolve(a.url()));
 		om.appendSkipEmpty("email", resolve(a.email()));
-		return om.isEmpty() ? null : om;
+		return nullIfEmpty(om);
 	}
 
 	private ObjectMap toMap(License a, String location, Object...locationArgs) throws ParseException {
@@ -674,7 +674,7 @@ final class SwaggerGenerator {
 		ObjectMap om = newMap(new ObjectMap(), a.value(), location, locationArgs);
 		om.appendSkipEmpty("name", resolve(a.name()));
 		om.appendSkipEmpty("url", resolve(a.url()));
-		return om.isEmpty() ? null : om;
+		return nullIfEmpty(om);
 	}
 
 	private ObjectMap toMap(Tag a, String location, Object...locationArgs) throws ParseException {
@@ -682,7 +682,7 @@ final class SwaggerGenerator {
 		om.appendSkipEmpty("name", resolve(a.name()));
 		om.appendSkipEmpty("description", resolve(joinnl(a.description())));
 		om.appendSkipNull("externalDocs", merge(om.getObjectMap("externalDocs"), toMap(a.externalDocs(), location, locationArgs)));
-		return om.isEmpty() ? null : om;
+		return nullIfEmpty(om);
 	}
 
 	private ObjectList toList(Tag[] aa, String location, Object...locationArgs) throws ParseException {
@@ -691,7 +691,7 @@ final class SwaggerGenerator {
 		ObjectList ol = new ObjectList();
 		for (Tag a : aa)
 			ol.add(toMap(a, location, locationArgs));
-		return ol.isEmpty() ? null : ol;
+		return nullIfEmpty(ol);
 	}
 
 	private ObjectMap getSchema(ObjectMap schema, Type type) throws Exception {
@@ -706,7 +706,9 @@ final class SwaggerGenerator {
 		if (schema.containsKey("type") || schema.containsKey("$ref"))
 			return schema;
 
-		return fixSwaggerExtensions(schema.appendAll(js.getSchema(cm)));
+		ObjectMap om = fixSwaggerExtensions(schema.appendAll(js.getSchema(cm)));
+		
+		return nullIfEmpty(om);
 	}
 
 	/**
@@ -718,7 +720,7 @@ final class SwaggerGenerator {
 		om.appendSkipNull("xml", om.remove("x-xml"));
 		om.appendSkipNull("externalDocs", om.remove("x-externalDocs"));
 		om.appendSkipNull("example", om.remove("x-example"));
-		return om;
+		return nullIfEmpty(om);
 	}
 
 	private void addBodyExamples(RestJavaMethod sm, ObjectMap piri, boolean response, Type type) throws Exception {
@@ -1219,4 +1221,12 @@ final class SwaggerGenerator {
 			codes.add(def);
 		return codes;
 	}
+
+	private static ObjectMap nullIfEmpty(ObjectMap m) {
+		return (m == null || m.isEmpty() ? null : m);
+	}
+
+	private static ObjectList nullIfEmpty(ObjectList l) {
+		return (l == null || l.isEmpty() ? null : l);
+	}
 }