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 6434926 BasicRestInfoProvider refactor. 6434926 is described below commit 64349267f2df80cdc48ec20e69ea4f98f79ef673 Author: JamesBognar <jamesbog...@apache.org> AuthorDate: Wed Aug 1 21:04:36 2018 -0400 BasicRestInfoProvider refactor. --- .../apache/juneau/dto/swagger/ParameterInfo.java | 10 +- .../apache/juneau/internal/ReflectionUtils.java | 17 ++ .../apache/juneau/rest/BasicRestInfoProvider.java | 245 ++++++++++++++++++--- .../juneau/rest/BasicRestInfoProviderTest.java | 48 ++-- .../juneau/rest/annotation/BodyAnnotationTest.java | 36 +-- .../rest/annotation/FormDataAnnotationTest.java | 4 +- .../rest/annotation/HeaderAnnotationTest.java | 2 +- .../juneau/rest/annotation/PathAnnotationTest.java | 10 +- .../rest/annotation/QueryAnnotationTest.java | 2 +- .../rest/annotation/ResponseAnnotationTest.java | 22 +- .../rest/BasicRestInfoProviderTest_swagger.json | 10 +- 11 files changed, 303 insertions(+), 103 deletions(-) diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java index 861527d..d94957b 100644 --- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java +++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java @@ -124,7 +124,7 @@ public class ParameterInfo extends SwaggerElement { private Items items; private Object _default; private List<Object> _enum; - private Object example; + private String example; private Map<String,String> examples; /** @@ -242,7 +242,7 @@ public class ParameterInfo extends SwaggerElement { if (p._enum != null) _enum = p._enum; if (p.example != null) - example = p.examples; + example = p.example; if (p.examples != null) examples = p.examples; } @@ -1428,7 +1428,7 @@ public class ParameterInfo extends SwaggerElement { * @return The property value, or <jk>null</jk> if it is not set. */ @BeanProperty("x-example") - public Object getExample() { + public String getExample() { return example; } @@ -1441,7 +1441,7 @@ public class ParameterInfo extends SwaggerElement { * @return This object (for method chaining). */ @BeanProperty("x-example") - public ParameterInfo setExample(Object value) { + public ParameterInfo setExample(String value) { example = value; return this; } @@ -1453,7 +1453,7 @@ public class ParameterInfo extends SwaggerElement { * @return This object (for method chaining). */ public ParameterInfo example(Object value) { - example = value; + example = StringUtils.asString(value); return this; } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReflectionUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReflectionUtils.java index e04b2cc..6f6cdc0 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReflectionUtils.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReflectionUtils.java @@ -107,6 +107,23 @@ public final class ReflectionUtils { } /** + * Returns all annotations defined on the specified parameter and parameter type. + * + * <p> + * Annotations are ordered parameter superclasses first, then class, then parameter. + * + * @param a The annotation to look for. + * @param m The method containing the parameter. + * @param index The parameter index. + * @return All instances of the annotation with the + */ + public static <T extends Annotation> List<T> getAnnotationsParentFirst(Class<T> a, Method m, int index) { + List<T> l = getAnnotations(a, m, index); + Collections.reverse(l); + return l; + } + + /** * Returns the specified annotation if it exists on the specified method or return type class. * * @param a The annotation to check for. 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 fd69397..d3c7a08 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 @@ -28,6 +28,7 @@ import org.apache.juneau.dto.swagger.*; import org.apache.juneau.http.*; import org.apache.juneau.http.annotation.*; import org.apache.juneau.http.annotation.Contact; +import org.apache.juneau.http.annotation.Items; import org.apache.juneau.http.annotation.License; import org.apache.juneau.http.annotation.Tag; import org.apache.juneau.httppart.*; @@ -408,8 +409,12 @@ public class BasicRestInfoProvider implements RestInfoProvider { param.append("name", mp.name); ObjectMap pi = null; - if (in == BODY) - pi = HttpPartSchema.create(Body.class, mp.method, mp.index).getApi(); + if (in == BODY) { + for (Body b : getAnnotationsParentFirst(Body.class, mp.method, mp.index)) + merge(param, b, vr, "ParameterInfo on class {0} method {1}", c, m); + if (! param.containsKey("schema")) + param.put("schema", getSchema(req, param.getObjectMap("schema", true), js, mp.getType())); + } else if (in == QUERY) pi = HttpPartSchema.create(Query.class, mp.method, mp.index).getApi(); else if (in == FORM_DATA) @@ -424,15 +429,15 @@ public class BasicRestInfoProvider implements RestInfoProvider { pi = resolve(vr, pi, "ParameterInfo on class {0} method {1}", c, m); // Common to all - param.appendSkipEmpty("description", resolve(vr, pi.getString("description"))); - param.appendSkipEmpty("required", resolve(vr, pi.getString("required"))); if (in == BODY) { - param.put("schema", getSchema(req, param.getObjectMap("schema", true), js, mp.getType())); - param.appendSkipEmpty("schema", parseMap(vr, pi.get("schema"), "ParameterInfo/schema on class {0} method {1}", c, m)); - param.appendSkipEmpty("x-example", parseAnything(vr, pi.getString("example"), "ParameterInfo/example on class {0} method {1}", c, m)); - param.appendSkipEmpty("x-examples", parseMap(vr, pi.get("examples"), "ParameterInfo/examples on class {0} method {1}", c, m)); +// param.put("schema", getSchema(req, param.getObjectMap("schema", true), js, mp.getType())); +// param.appendSkipEmpty("schema", parseMap(vr, pi.get("schema"), "ParameterInfo/schema on class {0} method {1}", c, m)); +// param.appendSkipEmpty("x-example", parseAnything(vr, pi.getString("example"), "ParameterInfo/example on class {0} method {1}", c, m)); +// param.appendSkipEmpty("x-examples", parseMap(vr, pi.get("examples"), "ParameterInfo/examples on class {0} method {1}", c, m)); } else { + param.appendSkipEmpty("description", resolve(vr, pi.getString("description"))); + param.appendSkipEmpty("required", resolve(vr, pi.getString("required"))); param.appendSkipEmpty("type", resolve(vr, pi.getString("type"))); param.appendSkipEmpty("format", resolve(vr, pi.getString("format"))); param.appendSkipEmpty("pattern", resolve(vr, pi.getString("pattern"))); @@ -451,7 +456,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { param.appendSkipEmpty("schema", parseMap(vr, pi.get("schema"), "ParameterInfo/schema on class {0} method {1}", c, m)); param.appendSkipEmpty("default", parseAnything(vr, pi.getString("default"), "ParameterInfo/default on class {0} method {1}", c, m)); param.appendSkipEmpty("enum", parseListOrCdl(vr, pi.getString("enum"), "ParameterInfo/enum on class {0} method {1}", c, m)); - param.appendSkipEmpty("x-example", parseAnything(vr, pi.getString("example"), "ParameterInfo/example on class {0} method {1}", c, m)); + param.appendSkipEmpty("x-example", resolve(vr, pi.getString("example"))); param.appendSkipEmpty("x-examples", parseMap(vr, pi.get("examples"), "ParameterInfo/examples on class {0} method {1}", c, m)); param.appendSkipEmpty("items", parseMap(vr, pi.get("items"), "ParameterInfo/items on class {0} method {1}", c, m)); @@ -490,7 +495,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { if (api != null) { om.appendSkipEmpty("description", resolve(vr, api.getString("description"))); - om.appendSkipEmpty("x-example", parseAnything(vr, api.getString("example"), "RestMethodThrown/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, api.getString("example"))); om.appendSkipEmpty("examples", api.getObjectMap("examples")); om.appendSkipEmpty("schema", api.getObjectMap("schema")); if (api.containsKey("headers")) @@ -498,7 +503,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { headers.put(e.getKey(), e.getValue()); } om.appendSkipEmpty("description", resolve(vr, r.description())); - om.appendSkipEmpty("x-example", parseAnything(vr, r.example(), "RestMethodThrown/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, r.example())); om.appendSkipEmpty("examples", parseMap(vr, r.examples(), "RestMethodThrown/examples on class {0} method {1}", c, m)); om.appendSkipEmpty("schema", resolve(vr, HttpPartSchema.create(r.schema()).getApi())); for (ResponseHeader h : r.headers()) { @@ -525,7 +530,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { if (api != null) { om.appendSkipEmpty("description", api.getString("description")); - om.appendSkipEmpty("x-example", parseAnything(vr, api.getString("example"), "RestMethodReturn/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, api.getString("example"))); om.appendSkipEmpty("examples", api.getObjectMap("examples")); om.appendSkipEmpty("schema", api.getObjectMap("schema")); if (api.containsKey("headers")) @@ -533,7 +538,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { headers.put(e.getKey(), e.getValue()); } om.appendSkipEmpty("description", resolve(vr, r.description())); - om.appendSkipEmpty("x-example", parseAnything(vr, r.example(), "RestMethodReturn/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, r.example())); om.appendSkipEmpty("examples", parseMap(vr, r.examples(), "RestMethodReturn/examples on class {0} method {1}", c, m)); om.appendSkipEmpty("schema", resolve(vr, HttpPartSchema.create(r.schema()).getApi())); for (ResponseHeader h : r.headers()) { @@ -560,14 +565,14 @@ public class BasicRestInfoProvider implements RestInfoProvider { if (api != null) { om.appendSkipEmpty("description", api.getString("description")); - om.appendSkipEmpty("x-example", parseAnything(vr, api.getString("example"), "RestMethodReturn/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, api.getString("example"))); om.appendSkipEmpty("examples", api.getObjectMap("examples")); om.appendSkipEmpty("schema", api.getObjectMap("schema")); if (api.containsKey("headers")) for (Map.Entry<String,Object> e : api.getObjectMap("headers").entrySet()) headers.put(e.getKey(), e.getValue()); } - om.appendSkipEmpty("x-example", parseAnything(vr, r.example(), "RestMethodReturn/example on class {0} method {1}", c, m)); + om.appendSkipEmpty("x-example", resolve(vr, r.example())); om.appendSkipEmpty("examples", parseMap(vr, r.examples(), "RestMethodReturn/examples on class {0} method {1}", c, m)); om.appendSkipEmpty("schema", resolve(vr, HttpPartSchema.create(r.schema()).getApi())); @@ -614,7 +619,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { header.appendSkipEmpty("uniqueItems", resolve(vr, pi2.getString("uniqueItems"))); header.appendSkipEmpty("default", parseAnything(vr, pi2.getString("default"), "@ResponseHeader/default on class {0} method {1}", c, m)); header.appendSkipEmpty("enum", parseListOrCdl(vr, pi2.getString("enum"), "@ResponseHeader/enum on class {0} method {1}", c, m)); - header.appendSkipEmpty("x-example", parseAnything(vr, pi2.getString("example"), "@ResponseHeader/example on class {0} method {1}", c, m)); + header.appendSkipEmpty("x-example", resolve(vr, pi2.getString("example"))); header.appendSkipEmpty("examples", parseMap(vr, pi2.get("examples"), "@ResponseHeader/examples on class {0} method {1}", c, m)); header.appendSkipEmpty("items", parseMap(vr, pi2.get("items"), "@ResponseHeader/items on class {0} method {1}", c, m)); } @@ -631,7 +636,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { response.appendSkipEmpty("description", resolve(vr, pi2.getString("description"))); response.appendSkipEmpty("schema", parseMap(vr, pi2.get("schema"), "@Response/schema on class {0} method {1}", c, m)); response.appendSkipEmpty("headers", parseMap(vr, pi2.get("headers"), "@Response/headers on class {0} method {1}", c, m)); - response.appendSkipEmpty("x-example", parseAnything(vr, pi2.getString("example"), "@Response/example on class {0} method {1}", c, m)); + response.appendSkipEmpty("x-example", resolve(vr, pi2.getString("example"))); response.appendSkipEmpty("examples", parseMap(vr, pi2.get("examples"), "@Response/examples on class {0} method {1}", c, m)); Type type = mp.getType(); @@ -654,7 +659,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { ObjectMap response = responses.getObjectMap(code, true); response.appendSkipEmpty("schema", parseMap(vr, pi2.get("schema"), "@ResponseBody/schema on class {0} method {1}", c, m)); - response.appendSkipEmpty("x-example", parseAnything(vr, pi2.getString("example"), "@ResponseBody/example on class {0} method {1}", c, m)); + response.appendSkipEmpty("x-example", resolve(vr, pi2.getString("example"))); response.appendSkipEmpty("examples", parseMap(vr, pi2.get("examples"), "@ResponseBody/examples on class {0} method {1}", c, m)); Type type = mp.getType(); @@ -719,6 +724,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { try { String swaggerJson = omSwagger.toString(SimpleJsonSerializer.DEFAULT_READABLE); +// System.err.println(swaggerJson); swagger = jp.parse(swaggerJson, Swagger.class); } catch (Exception e) { throw new RestServletException("Error detected in swagger.").initCause(e); @@ -780,12 +786,26 @@ public class BasicRestInfoProvider implements RestInfoProvider { return ol2; } - private String resolve(VarResolverSession vs, String[] s) { - return resolve(vs, joinnl(s)); + private static String resolve(VarResolverSession vs, String[] ss) { + if (ss.length == 0) + return null; + return resolve(vs, joinnl(ss)); + } + + private static String resolve(VarResolverSession vs, String s) { + if (s == null) + return null; + return vs.resolve(s.trim()); } - private String resolve(VarResolverSession vs, String s) { - return vs.resolve(s); + private ObjectMap parseMap(VarResolverSession vs, String[] o, String location, Object...args) throws ParseException { + if (o.length == 0) + return ObjectMap.EMPTY_MAP; + try { + return parseMap(vs, o); + } catch (ParseException e) { + throw new SwaggerException(e, "Malformed swagger JSON object encountered in " + location + ".", args); + } } private ObjectMap parseMap(VarResolverSession vs, Object o, String location, Object...args) throws ParseException { @@ -796,7 +816,7 @@ public class BasicRestInfoProvider implements RestInfoProvider { } } - private ObjectMap parseMap(VarResolverSession vs, Object o) throws ParseException { + private static ObjectMap parseMap(VarResolverSession vs, Object o) throws ParseException { if (o == null) return null; if (o instanceof String[]) @@ -980,22 +1000,22 @@ public class BasicRestInfoProvider implements RestInfoProvider { private void addXExamples(RestRequest req, RestJavaMethod sm, ObjectMap piri, String in, JsonSchemaSerializerSession js, Type type) throws Exception { - Object example = piri.get("x-example"); + String sex = piri.getString("x-example"); - if (example == null) { + if (sex == null) { ObjectMap schema = resolve(js, piri.getObjectMap("schema")); if (schema != null) - example = schema.getWithDefault("example", schema.get("x-example")); + sex = schema.getString("example", schema.getString("x-example")); } - if (example == null) + if (isEmpty(sex)) return; boolean isOk = "ok".equals(in), isBody = "body".equals(in); - String sex = example.toString(); + Object example = null; if (isJson(sex)) { - example = JsonParser.DEFAULT.parse(JsonSerializer.DEFAULT.serialize(example), type); + example = JsonParser.DEFAULT.parse(sex, type); } else { ClassMeta<?> cm = js.getClassMeta(type); if (cm.hasStringTransform()) { @@ -1364,4 +1384,171 @@ public class BasicRestInfoProvider implements RestInfoProvider { } return null; } + + private static ObjectMap newMap(ObjectMap om) { + if (om == null) + return new ObjectMap(); + return om.modifiable(); + } + + private static ObjectMap merge(ObjectMap om, Body a, VarResolverSession vr, String location, Object...args) throws SwaggerException { + try { + if (empty(a)) + return om; + om = newMap(om); + if (a.value().length > 0) + om.putAll(parseMap(vr, a.value())); + if (a.api().length > 0) + om.putAll(parseMap(vr, a.api())); + return om + .appendSkipEmpty("description", resolve(vr, a.description())) + .appendSkipEmpty("x-example", resolve(vr, a.example())) + .appendSkipEmpty("x-examples", parseMap(vr, a.examples())) + .appendSkipFalse("required", a.required()) + .appendSkipEmpty("schema", merge(om.getObjectMap("schema"), a.schema(), vr, location, args)) + ; + } catch (ParseException e) { + throw new SwaggerException(e, "Malformed swagger JSON object encountered in " + location + ".", args); + } + } + + private static ObjectMap merge(ObjectMap om, Schema a, VarResolverSession vr, String location, Object...args) throws SwaggerException { + try { + if (empty(a)) + return om; + om = newMap(om); + if (a.value().length > 0) + om.putAll(parseMap(vr, a.value())); + return om + .appendSkipEmpty("additionalProperties", toObjectMap(a.additionalProperties(), vr)) + .appendSkipEmpty("allOf", joinnl(a.allOf())) + .appendSkipEmpty("collectionFormat", a.collectionFormat()) + .appendSkipEmpty("default", joinnl(a._default())) + .appendSkipEmpty("discriminator", a.discriminator()) + .appendSkipEmpty("description", joinnl(a.description())) + .appendSkipEmpty("enum", toSet(a._enum(), vr)) + .appendSkipEmpty("example", joinnl(a.example())) + .appendSkipEmpty("examples", joinnl(a.examples())) + .appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum()) + .appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum()) + .appendSkipEmpty("externalDocs", merge(om.getObjectMap("externalDocs"), a.externalDocs(), vr)) + .appendSkipEmpty("format", a.format()) + .appendSkipEmpty("ignore", a.ignore() ? "true" : null) + .appendSkipEmpty("items", merge(om.getObjectMap("items"), a.items(), vr)) + .appendSkipEmpty("maximum", a.maximum()) + .appendSkipMinusOne("maxItems", a.maxItems()) + .appendSkipMinusOne("maxLength", a.maxLength()) + .appendSkipMinusOne("maxProperties", a.maxProperties()) + .appendSkipEmpty("minimum", a.minimum()) + .appendSkipMinusOne("minItems", a.minItems()) + .appendSkipMinusOne("minLength", a.minLength()) + .appendSkipMinusOne("minProperties", a.minProperties()) + .appendSkipEmpty("multipleOf", a.multipleOf()) + .appendSkipEmpty("pattern", a.pattern()) + .appendSkipEmpty("properties", toObjectMap(a.properties(), vr)) + .appendSkipFalse("readOnly", a.readOnly()) + .appendSkipFalse("required", a.required()) + .appendSkipEmpty("title", a.title()) + .appendSkipEmpty("type", a.type()) + .appendSkipFalse("uniqueItems", a.uniqueItems()) + .appendSkipEmpty("xml", joinnl(a.xml())) + .appendSkipEmpty("$ref", a.$ref()) + ; + } catch (ParseException e) { + throw new SwaggerException(e, "Malformed swagger JSON object encountered in " + location + ".", args); + } + } + + private static ObjectMap merge(ObjectMap om, ExternalDocs a, VarResolverSession vr) throws ParseException { + if (empty(a)) + return om; + om = newMap(om); + if (a.value().length > 0) + om.putAll(parseMap(vr, a.value())); + return om + .appendSkipEmpty("description", resolve(vr, a.description())) + .appendSkipEmpty("url", a.url()) + ; + } + + private static ObjectMap merge(ObjectMap om, Items a, VarResolverSession vr) throws ParseException { + if (empty(a)) + return om; + om = newMap(om); + if (a.value().length > 0) + om.putAll(parseMap(vr, a.value())); + return om + .appendSkipEmpty("collectionFormat", a.collectionFormat()) + .appendSkipEmpty("default", joinnl(a._default())) + .appendSkipEmpty("enum", toSet(a._enum(), vr)) + .appendSkipEmpty("format", a.format()) + .appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum()) + .appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum()) + .appendSkipEmpty("items", merge(om.getObjectMap("items"), a.items(), vr)) + .appendSkipEmpty("maximum", a.maximum()) + .appendSkipMinusOne("maxItems", a.maxItems()) + .appendSkipMinusOne("maxLength", a.maxLength()) + .appendSkipEmpty("minimum", a.minimum()) + .appendSkipMinusOne("minItems", a.minItems()) + .appendSkipMinusOne("minLength", a.minLength()) + .appendSkipEmpty("multipleOf", a.multipleOf()) + .appendSkipEmpty("pattern", a.pattern()) + .appendSkipFalse("uniqueItems", a.uniqueItems()) + .appendSkipEmpty("type", a.type()) + .appendSkipEmpty("$ref", a.$ref()) + ; + } + + private static ObjectMap merge(ObjectMap om, SubItems a, VarResolverSession vr) throws ParseException { + if (empty(a)) + return om; + om = newMap(om); + if (a.value().length > 0) + om.putAll(parseMap(vr, a.value())); + return om + .appendSkipEmpty("collectionFormat", a.collectionFormat()) + .appendSkipEmpty("default", joinnl(a._default())) + .appendSkipEmpty("enum", toSet(a._enum(), vr)) + .appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum()) + .appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum()) + .appendSkipEmpty("format", a.format()) + .appendSkipEmpty("items", toObjectMap(a.items(), vr)) + .appendSkipEmpty("maximum", a.maximum()) + .appendSkipMinusOne("maxItems", a.maxItems()) + .appendSkipMinusOne("maxLength", a.maxLength()) + .appendSkipEmpty("minimum", a.minimum()) + .appendSkipMinusOne("minItems", a.minItems()) + .appendSkipMinusOne("minLength", a.minLength()) + .appendSkipEmpty("multipleOf", a.multipleOf()) + .appendSkipEmpty("pattern", a.pattern()) + .appendSkipEmpty("type", a.type()) + .appendSkipFalse("uniqueItems", a.uniqueItems()) + .appendSkipEmpty("$ref", a.$ref()) + ; + } + + private static ObjectMap toObjectMap(String[] ss, VarResolverSession vr) throws ParseException { + if (ss.length == 0) + return null; + String s = joinnl(ss); + if (s.isEmpty()) + return null; + if (! isObjectMap(s, true)) + s = "{" + s + "}"; + s = vr.resolve(s); + return new ObjectMap(s); + } + + private static Set<String> toSet(String[] ss, VarResolverSession vr) throws ParseException { + if (ss.length == 0) + return null; + String s = joinnl(ss); + if (s.isEmpty()) + return null; + s = vr.resolve(s); + Set<String> set = new ASet<>(); + for (Object o : StringUtils.parseListOrCdl(s)) + set.add(o.toString()); + return set; + } } 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 e5121a4..618bc6c 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 @@ -1598,10 +1598,10 @@ public class BasicRestInfoProviderTest { @Test public void nr01_query_example_default() throws Exception { assertEquals(null, getSwagger(new NR01()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); - assertObjectEquals("{id:1}", getSwaggerWithFile(new NR01()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:1}", getSwaggerWithFile(new NR01()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); } - @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:{id:2}}]}}}")) + @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:'{id:2}'}]}}}")) public static class NR02 { @RestMethod(name=GET,path="/path/{foo}/query") public Foo doFoo(@Query("foo") Foo foo) { @@ -1611,13 +1611,13 @@ public class BasicRestInfoProviderTest { @Test public void nr02_query_example_swaggerOnClass() throws Exception { - assertObjectEquals("{id:2}", getSwagger(new NR02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); - assertObjectEquals("{id:2}", getSwaggerWithFile(new NR02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:2}", getSwagger(new NR02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:2}", getSwaggerWithFile(new NR02()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); } - @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:{id:2}}]}}}")) + @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:'{id:2}'}]}}}")) public static class NR03 { - @RestMethod(name=GET,path="/path/{foo}/query",swagger=@MethodSwagger("parameters:[{'in':'query',name:'foo',x-example:{id:3}}]")) + @RestMethod(name=GET,path="/path/{foo}/query",swagger=@MethodSwagger("parameters:[{'in':'query',name:'foo',x-example:'{id:3}'}]")) public Foo doFoo() { return null; } @@ -1625,11 +1625,11 @@ public class BasicRestInfoProviderTest { @Test public void nr03_query_example_swaggerOnMethod() throws Exception { - assertObjectEquals("{id:3}", getSwagger(new NR03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); - assertObjectEquals("{id:3}", getSwaggerWithFile(new NR03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:3}", getSwagger(new NR03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:3}", getSwaggerWithFile(new NR03()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); } - @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:{id:2}}]}}}")) + @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:'{id:2}'}]}}}")) public static class NR04 { @RestMethod(name=GET,path="/path/{foo}/query") public Foo doFoo(@Query(name="foo",example="{id:4}") Foo foo) { @@ -1639,11 +1639,11 @@ public class BasicRestInfoProviderTest { @Test public void nr04_query_example_swaggerOnAnnotation() throws Exception { - assertObjectEquals("{id:4}", getSwagger(new NR04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); - assertObjectEquals("{id:4}", getSwaggerWithFile(new NR04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:4}", getSwagger(new NR04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:4}", getSwaggerWithFile(new NR04()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); } - @RestResource(messages="BasicRestInfoProviderTest", swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:{id:2}}]}}}")) + @RestResource(messages="BasicRestInfoProviderTest", swagger=@ResourceSwagger("paths:{'/path/{foo}/query':{get:{parameters:[{'in':'query',name:'foo',x-example:'{id:2}'}]}}}")) public static class NR05 { @RestMethod(name=GET,path="/path/{foo}/query") public Foo doFoo(@Query(name="foo",example="{id:$L{5}}") Foo foo) { @@ -1653,8 +1653,8 @@ public class BasicRestInfoProviderTest { @Test public void nr05_query_example_swaggerOnAnnotation_localized() throws Exception { - assertObjectEquals("{id:5}", getSwagger(new NR05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); - assertObjectEquals("{id:5}", getSwaggerWithFile(new NR05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:5}", getSwagger(new NR05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); + assertEquals("{id:5}", getSwaggerWithFile(new NR05()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", "foo").getExample()); } //================================================================================================================= @@ -2002,12 +2002,12 @@ public class BasicRestInfoProviderTest { @Test public void oc01a_responses_100_example_default() throws Exception { assertEquals(null, getSwagger(new OC01a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'a'}", getSwaggerWithFile(new OC01a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'a'}", getSwaggerWithFile(new OC01a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } @Test public void oc01b_responses_100_example_default() throws Exception { assertEquals(null, getSwagger(new OC01b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'a'}", getSwaggerWithFile(new OC01b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'a'}", getSwaggerWithFile(new OC01b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } @RestResource(swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{example:{foo:'b'}}}}}}")) @@ -2049,13 +2049,13 @@ public class BasicRestInfoProviderTest { @Test public void oc04a_response_100_example_swaggerOnAnnotation() throws Exception { - assertObjectEquals("{foo:'d'}", getSwagger(new OC04a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'d'}", getSwaggerWithFile(new OC04a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'d'}", getSwagger(new OC04a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'d'}", getSwaggerWithFile(new OC04a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } @Test public void oc04b_response_100_example_swaggerOnAnnotation() throws Exception { - assertObjectEquals("{foo:'d'}", getSwagger(new OC04b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'d'}", getSwaggerWithFile(new OC04b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'d'}", getSwagger(new OC04b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'d'}", getSwaggerWithFile(new OC04b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } @RestResource(messages="BasicRestInfoProviderTest", swagger=@ResourceSwagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{example:{foo:'b'}}}}}}")) @@ -2073,13 +2073,13 @@ public class BasicRestInfoProviderTest { @Test public void oc05a_response_100_example_swaggerOnAnnotation_localized() throws Exception { - assertObjectEquals("{foo:'l-foo'}", getSwagger(new OC05a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'l-foo'}", getSwaggerWithFile(new OC05a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'l-foo'}", getSwagger(new OC05a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'l-foo'}", getSwaggerWithFile(new OC05a()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } @Test public void oc05b_response_100_example_swaggerOnAnnotation_localized() throws Exception { - assertObjectEquals("{foo:'l-foo'}", getSwagger(new OC05b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); - assertObjectEquals("{foo:'l-foo'}", getSwaggerWithFile(new OC05b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'l-foo'}", getSwagger(new OC05b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); + assertEquals("{foo:'l-foo'}", getSwaggerWithFile(new OC05b()).getPaths().get("/path/{foo}/responses/100").get("get").getResponse(100).getExample()); } //================================================================================================================= diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/BodyAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/BodyAnnotationTest.java index 4076780..4de9ad7 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/BodyAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/BodyAnnotationTest.java @@ -818,8 +818,8 @@ public class BodyAnnotationTest { "description:'a\nb',", "required:true,", "schema:{type:'string'},", - "example:'a',", - "examples:{foo:'bar'}" + "x-example:'\\'a\\'',", + "x-examples:{foo:'bar'}" }) public static class SA02 { public SA02(String x) {} @@ -832,12 +832,12 @@ public class BodyAnnotationTest { "description:'a\nb',", "required:true,", "schema:{type:'string'},", - "example:'a',", - "examples:{foo:'bar'}" + "x-example:'\\'a\\'',", + "x-examples:{foo:'bar'}" }, description={"b","c"}, schema=@Schema(type="string"), - example="b", + example="'b'", examples="{foo:'baz'}" ) public static class SA03 { @@ -853,7 +853,7 @@ public class BodyAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'bar'}", x.getExamples()); } @Test @@ -862,7 +862,7 @@ public class BodyAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'bar'}", x.getExamples()); } @Test @@ -871,7 +871,7 @@ public class BodyAnnotationTest { assertEquals("b\nc", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'b'", x.getExample()); + assertEquals("'b'", x.getExample()); assertObjectEquals("{foo:'baz'}", x.getExamples()); } @@ -952,7 +952,7 @@ public class BodyAnnotationTest { @Test public void sc01_Body_onPojo_example() throws Exception { ParameterInfo x = getSwagger(new SC()).getPaths().get("/example").get("get").getParameter("body", null); - assertObjectEquals("{f1:'b'}", x.getExample()); + assertEquals("{f1:'b'}", x.getExample()); } @Test public void sc02_Body_onPojo_examples() throws Exception { @@ -981,7 +981,7 @@ public class BodyAnnotationTest { description= {"a","b"}, required=true, schema=@Schema(type="string"), - example="'a'", + example="a", examples=" {foo:'bar'} " ) TA01 b) {} @@ -995,8 +995,8 @@ public class BodyAnnotationTest { "description:'a\nb',", "required:true,", "schema:{type:'string'},", - "example:'a',", - "examples:{foo:'bar'}" + "x-example:'a',", + "x-examples:{foo:'bar'}" }) TA02 b) {} public static class TA03 { @@ -1010,8 +1010,8 @@ public class BodyAnnotationTest { "description:'a\nb',", "required:true,", "schema:{type:'string'},", - "example:'a',", - "examples:{foo:'bar'}" + "x-example:'a',", + "x-examples:{foo:'bar'}" }, description= {"b","c"}, schema=@Schema(type="string"), @@ -1026,7 +1026,7 @@ public class BodyAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("a", x.getExample()); assertObjectEquals("{foo:'bar'}", x.getExamples()); } @Test @@ -1035,7 +1035,7 @@ public class BodyAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("a", x.getExample()); assertObjectEquals("{foo:'bar'}", x.getExamples()); } @Test @@ -1044,7 +1044,7 @@ public class BodyAnnotationTest { assertEquals("b\nc", x.getDescription()); assertObjectEquals("true", x.getRequired()); assertObjectEquals("{type:'string'}", x.getSchema()); - assertObjectEquals("'b'", x.getExample()); + assertEquals("b", x.getExample()); assertObjectEquals("{foo:'baz'}", x.getExamples()); } @@ -1134,7 +1134,7 @@ public class BodyAnnotationTest { @Test public void tc01_Body_onParameter_example() throws Exception { ParameterInfo x = getSwagger(new TC()).getPaths().get("/example").get("get").getParameter("body", null); - assertObjectEquals("{f1:'b'}", x.getExample()); + assertEquals("{f1:'b'}", x.getExample()); } @Test public void tc02_Body_onParameter_examples() throws Exception { diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/FormDataAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/FormDataAnnotationTest.java index 7426cd5..30d5bec 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/FormDataAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/FormDataAnnotationTest.java @@ -320,7 +320,7 @@ public class FormDataAnnotationTest { @Test public void sc01_FormData_onPojo_example() throws Exception { ParameterInfo x = getSwagger(new SC()).getPaths().get("/example").get("get").getParameter("formData", "F"); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } //================================================================================================================= @@ -473,6 +473,6 @@ public class FormDataAnnotationTest { @Test public void tc01_FormData_onParameter_example() throws Exception { ParameterInfo x = getSwagger(new TC()).getPaths().get("/example").get("get").getParameter("formData", "F"); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } } diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/HeaderAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/HeaderAnnotationTest.java index d1e84a7..1e15e62 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/HeaderAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/HeaderAnnotationTest.java @@ -183,7 +183,7 @@ public class HeaderAnnotationTest { @Test public void sc01_Header_onPojo_example() throws Exception { ParameterInfo x = getSwagger(new SC()).getPaths().get("/example").get("get").getParameter("header", "H"); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } //================================================================================================================= diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/PathAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/PathAnnotationTest.java index 1f88c7a..f8e8903 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/PathAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/PathAnnotationTest.java @@ -369,7 +369,7 @@ public class PathAnnotationTest { assertEquals("string", x.getType()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("['a','b']", x.getEnum()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); } @Test public void sa02_Path_onPojo_api() throws Exception { @@ -379,7 +379,7 @@ public class PathAnnotationTest { assertEquals("string", x.getType()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("['a','b']", x.getEnum()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("a", x.getExample()); } @Test public void sa03_Path_onPojo_mixed() throws Exception { @@ -389,7 +389,7 @@ public class PathAnnotationTest { assertEquals("string", x.getType()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("['a','b']", x.getEnum()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); } @Test public void sa04_Path_onPojo_value() throws Exception { @@ -474,7 +474,7 @@ public class PathAnnotationTest { @Test public void sc01_Path_onPojo_example() throws Exception { ParameterInfo x = getSwagger(new SC()).getPaths().get("/example/{P}").get("get").getParameter("path", "P"); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } //================================================================================================================= @@ -629,6 +629,6 @@ public class PathAnnotationTest { @Test public void tc01_Path_onParameter_example2() throws Exception { ParameterInfo x = getSwagger(new TC()).getPaths().get("/example/{P}").get("get").getParameter("path", "P"); - assertObjectEquals("{f1:'b'}", x.getExample()); + assertEquals("{f1:'b'}", x.getExample()); } } \ No newline at end of file diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/QueryAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/QueryAnnotationTest.java index ea28f9b..19048b5 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/QueryAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/QueryAnnotationTest.java @@ -431,7 +431,7 @@ public class QueryAnnotationTest { @Test public void sc01_Query_onPojo_example() throws Exception { ParameterInfo x = getSwagger(new SC()).getPaths().get("/example").get("get").getParameter("query", "Q"); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } //================================================================================================================= diff --git a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/ResponseAnnotationTest.java b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/ResponseAnnotationTest.java index b2fe4a1..867dfdd 100644 --- a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/ResponseAnnotationTest.java +++ b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/annotation/ResponseAnnotationTest.java @@ -566,7 +566,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -575,7 +575,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -584,7 +584,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("a", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -593,7 +593,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("a", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -602,7 +602,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -611,7 +611,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{bar:{type:'number'},foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -751,12 +751,12 @@ public class ResponseAnnotationTest { @Test public void sc01a_Response_onPojo_example() throws Exception { ResponseInfo x = getSwagger(new SC()).getPaths().get("/sc01a").get("get").getResponse(200); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } @Test public void sc01b_Response_onPojo_example() throws Exception { ResponseInfo x = getSwagger(new SC()).getPaths().get("/sc01b").get("get").getResponse(200); - assertObjectEquals("{f1:'a'}", x.getExample()); + assertEquals("{f1:'a'}", x.getExample()); } @Test public void sc02a_Response_onPojo_examples() throws Exception { @@ -845,7 +845,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -863,7 +863,7 @@ public class ResponseAnnotationTest { assertEquals("a\nb", x.getDescription()); assertObjectEquals("{type:'string'}", x.getSchema()); assertObjectEquals("{bar:{type:'number'},foo:{type:'string'}}", x.getHeaders()); - assertObjectEquals("'a'", x.getExample()); + assertEquals("'a'", x.getExample()); assertObjectEquals("{foo:'a'}", x.getExamples()); } @Test @@ -924,7 +924,7 @@ public class ResponseAnnotationTest { @Test public void uc01_Response_onThrowable_example() throws Exception { ResponseInfo x = getSwagger(new UC()).getPaths().get("/example").get("get").getResponse(500); - assertObjectEquals("{f1:'b'}", x.getExample()); + assertEquals("{f1:'b'}", x.getExample()); } @Test public void uc02_Response_onThrowable_examples() throws Exception { diff --git a/juneau-rest/juneau-rest-server/src/test/resources/org/apache/juneau/rest/BasicRestInfoProviderTest_swagger.json b/juneau-rest/juneau-rest-server/src/test/resources/org/apache/juneau/rest/BasicRestInfoProviderTest_swagger.json index 7db7fe2..e2b4b8a 100644 --- a/juneau-rest/juneau-rest-server/src/test/resources/org/apache/juneau/rest/BasicRestInfoProviderTest_swagger.json +++ b/juneau-rest/juneau-rest-server/src/test/resources/org/apache/juneau/rest/BasicRestInfoProviderTest_swagger.json @@ -90,9 +90,7 @@ schema: { $ref: '#/definitions/Foo' }, - 'x-example': { - id:1 - } + 'x-example': "{id:1}" } ] } @@ -121,9 +119,7 @@ schema: { $ref: '#/definitions/Foo' }, - 'x-example': { - id:1 - }, + 'x-example': "{id:1}", 'x-examples': { foo: 'a' } @@ -149,7 +145,7 @@ description: 's-description' } }, - x-example: {foo:'a'}, + x-example: "{foo:'a'}", examples: { foo: 'a' }