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 2170b08  Swagger UI improvements.
2170b08 is described below

commit 2170b08f677f5e1bbc1a52c6c50718868037a02f
Author: JamesBognar <[email protected]>
AuthorDate: Sun Mar 25 12:02:58 2018 -0400

    Swagger UI improvements.
---
 .../urlencoding/CommonParser_UrlEncodingTest.java  |    2 +-
 .../urlencoding/UrlEncodingSerializerTest.java     |    4 +-
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java    |    1 +
 .../org/apache/juneau/dto/swagger/ui/SwaggerUI.css |    6 +
 .../juneau/serializer/SerializerSession.java       |    9 +
 .../urlencoding/UrlEncodingSerializerSession.java  |    5 +-
 .../juneau/examples/rest/petstore/Category.java    |    7 +
 .../apache/juneau/examples/rest/petstore/Pet.java  |   11 +-
 .../examples/rest/petstore/PetStoreResource.java   |    1 +
 .../apache/juneau/examples/rest/petstore/Tag.java  |    7 +
 .../rest/petstore/PetStoreResource_orig.json       | 1048 ++++++++++++++++++++
 .../apache/juneau/rest/BasicRestInfoProvider.java  |   10 +-
 12 files changed, 1101 insertions(+), 10 deletions(-)

diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index b68fb4a..12556a4 100755
--- 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -72,7 +72,7 @@ public class CommonParser_UrlEncodingTest {
                tl.add(new A3("name1","value1"));
                b.list = tl;
 
-               in = 
UrlEncodingSerializer.create().addBeanTypeProperties(true).build().serialize(b);
+               in = 
UrlEncodingSerializer.create().addBeanTypeProperties(true).addRootType().build().serialize(b);
                b = (A1)p.parse(in, Object.class);
                assertEquals("value1", b.list.get(1).value);
 
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
index dd0fc81..dd6407c 100755
--- 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
@@ -24,8 +24,8 @@ import org.junit.*;
 
 public class UrlEncodingSerializerTest {
 
-       static UrlEncodingSerializer s = UrlEncodingSerializer.DEFAULT;
-       static UrlEncodingSerializer sr = 
UrlEncodingSerializer.DEFAULT_READABLE;
+       static UrlEncodingSerializer s = 
UrlEncodingSerializer.DEFAULT.builder().addRootType().build();
+       static UrlEncodingSerializer sr = 
UrlEncodingSerializer.DEFAULT_READABLE.builder().addRootType().build();
 
 
        
//====================================================================================================
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 aeb965b..d720eea 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
@@ -124,6 +124,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
                                
                                Td parameterKey = td(
                                        div(piName)._class("name" + (required ? 
" required" : "")),
+                                       required ? 
div("required")._class("requiredlabel") : null,
                                        div(pi.getType())._class("type"),
                                        div('(' + pi.getIn() + ')')._class("in")
                                )._class("parameter-key");
diff --git 
a/juneau-core/juneau-dto/src/main/resources/org/apache/juneau/dto/swagger/ui/SwaggerUI.css
 
b/juneau-core/juneau-dto/src/main/resources/org/apache/juneau/dto/swagger/ui/SwaggerUI.css
index 9984f06..315fd34 100644
--- 
a/juneau-core/juneau-dto/src/main/resources/org/apache/juneau/dto/swagger/ui/SwaggerUI.css
+++ 
b/juneau-core/juneau-dto/src/main/resources/org/apache/juneau/dto/swagger/ui/SwaggerUI.css
@@ -193,6 +193,12 @@ td.parameter-value, td.response-value {
     font-weight: bold;
 }
 
+.parameter-key .requiredlabel {
+       font-size: 10px;
+    color: rgba(255,0,0,.6);    
+    font-weight: bold;
+}
+
 .parameter-key .type {
     font-size: 12px;
     padding: 5px 0;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index e45eeb0..f3da967 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -345,6 +345,15 @@ public abstract class SerializerSession extends 
BeanSession {
        }
 
        /**
+        * Returns the {@link Serializer#SERIALIZER_addRootType} setting value 
for this session.
+        * 
+        * @return The {@link Serializer#SERIALIZER_addRootType} setting value 
for this session.
+        */
+       protected boolean isAddRootType() {
+               return addRootType;
+       }
+
+       /**
         * Returns the {@link Serializer#SERIALIZER_trimNullProperties} setting 
value for this session.
         * 
         * @return The {@link Serializer#SERIALIZER_trimNullProperties} setting 
value for this session.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
index 39b95a3..023b88b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
@@ -103,13 +103,14 @@ public class UrlEncodingSerializerSession extends 
UonSerializerSession {
                ClassMeta<?> aType;                     // The actual type
                ClassMeta<?> sType;                     // The serialized type
 
-               aType = push("root", o, object());
+               ClassMeta<?> eType = getExpectedRootType(o);
+               aType = push("root", o, eType);
                indent--;
                if (aType == null)
                        aType = object();
 
                sType = aType;
-               String typeName = getBeanTypeName(object(), aType, null);
+               String typeName = getBeanTypeName(eType, aType, null);
 
                // Swap if necessary
                PojoSwap swap = aType.getPojoSwap(this);
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Category.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Category.java
index 16184d0..4041d6b 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Category.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Category.java
@@ -36,4 +36,11 @@ public class Category {
                this.name = name;
                return this;
        }
+       
+       @Example
+       public static Category example() {
+               return new Category()
+                       .id(123)
+                       .name("Dog");
+       }
 }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Pet.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Pet.java
index f6b2381..a6331e0 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Pet.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Pet.java
@@ -32,7 +32,11 @@ public class Pet {
        @Example
        public static Pet example() {
                return new Pet()
-                       .id(123);
+                       .id(123)
+                       .category(Category.example())
+                       .name("Doggie")
+                       .tags(Tag.example())
+                       .status(PetStatus.AVAILABLE);
        }
 
        public long getId() {
@@ -82,6 +86,11 @@ public class Pet {
                return this;
        }
        
+       public Pet tags(Tag...tags) {
+               this.tags = Arrays.asList(tags);
+               return this;
+       }
+
        public PetStatus getStatus() {
                return status;
        }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
index d10c265..de07c4f 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
@@ -51,6 +51,7 @@ public class PetStoreResource extends BasicRestServletJena {
        @RestMethod(
                name="POST", 
                path="/pet",
+               summary="Add a new pet to the store",
                swagger={
                        "tags:['pet'],",
                        "parameters:[",
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Tag.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Tag.java
index fdd9dfc..8c580b1 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Tag.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/Tag.java
@@ -36,4 +36,11 @@ public class Tag {
                this.name = name;
                return this;
        }
+       
+       @Example
+       public static Tag example() {
+               return new Tag()
+                       .id(123)
+                       .name("MyTag");
+       }
 }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/petstore/PetStoreResource_orig.json
 
b/juneau-examples/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/petstore/PetStoreResource_orig.json
new file mode 100644
index 0000000..2b290a6
--- /dev/null
+++ 
b/juneau-examples/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/petstore/PetStoreResource_orig.json
@@ -0,0 +1,1048 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+
+{
+       "swagger": "2.0",
+       "info": {
+               "description": "This is a sample server Petstore server.  You 
can find out more about Swagger at [http://swagger.io](http://swagger.io) or on 
[irc.freenode.net, #swagger](http://swagger.io/irc/).  For this sample, you can 
use the api key `special-key` to test the authorization filters.",
+               "version": "1.0.0",
+               "title": "Swagger Petstore",
+               "termsOfService": "http://swagger.io/terms/";,
+               "contact": {
+                       "email": "[email protected]"
+               },
+               "license": {
+                       "name": "Apache 2.0",
+                       "url": "http://www.apache.org/licenses/LICENSE-2.0.html";
+               }
+       },
+       "host": "petstore.swagger.io",
+       "basePath": "/v2",
+       "tags": [
+               {
+                       "name": "pet",
+                       "description": "Everything about your Pets",
+                       "externalDocs": {
+                               "description": "Find out more",
+                               "url": "http://swagger.io";
+                       }
+               },
+               {
+                       "name": "store",
+                       "description": "Access to Petstore orders"
+               },
+               {
+                       "name": "user",
+                       "description": "Operations about user",
+                       "externalDocs": {
+                               "description": "Find out more about our store",
+                               "url": "http://swagger.io";
+                       }
+               }
+       ],
+       "schemes": [
+               "http"
+       ],
+       "paths": {
+               "/pet": {
+                       "post": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Add a new pet to the store",
+                               "description": "",
+                               "operationId": "addPet",
+                               "consumes": [
+                                       "application/json",
+                                       "application/xml"
+                               ],
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "Pet object that 
needs to be added to the store",
+                                               "required": true,
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Pet"
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "405": {
+                                               "description": "Invalid input"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       },
+                       "put": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Update an existing pet",
+                               "description": "",
+                               "operationId": "updatePet",
+                               "consumes": [
+                                       "application/json",
+                                       "application/xml"
+                               ],
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "Pet object that 
needs to be added to the store",
+                                               "required": true,
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Pet"
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "400": {
+                                               "description": "Invalid ID 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "Pet not found"
+                                       },
+                                       "405": {
+                                               "description": "Validation 
exception"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       }
+               },
+               "/pet/findByStatus": {
+                       "get": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Finds Pets by status",
+                               "description": "Multiple status values can be 
provided with comma separated strings",
+                               "operationId": "findPetsByStatus",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "status",
+                                               "in": "query",
+                                               "description": "Status values 
that need to be considered for filter",
+                                               "required": true,
+                                               "type": "array",
+                                               "items": {
+                                                       "type": "string",
+                                                       "enum": [
+                                                               "available",
+                                                               "pending",
+                                                               "sold"
+                                                       ],
+                                                       "default": "available"
+                                               },
+                                               "collectionFormat": "multi"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "type": "array",
+                                                       "items": {
+                                                               "$ref": 
"#/definitions/Pet"
+                                                       }
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid status 
value"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       }
+               },
+               "/pet/findByTags": {
+                       "get": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Finds Pets by tags",
+                               "description": "Muliple tags can be provided 
with comma separated strings. Use tag1, tag2, tag3 for testing.",
+                               "operationId": "findPetsByTags",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "tags",
+                                               "in": "query",
+                                               "description": "Tags to filter 
by",
+                                               "required": true,
+                                               "type": "array",
+                                               "items": {
+                                                       "type": "string"
+                                               },
+                                               "collectionFormat": "multi"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "type": "array",
+                                                       "items": {
+                                                               "$ref": 
"#/definitions/Pet"
+                                                       }
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid tag 
value"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ],
+                               "deprecated": true
+                       }
+               },
+               "/pet/{petId}": {
+                       "get": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Find pet by ID",
+                               "description": "Returns a single pet",
+                               "operationId": "getPetById",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "petId",
+                                               "in": "path",
+                                               "description": "ID of pet to 
return",
+                                               "required": true,
+                                               "type": "integer",
+                                               "format": "int64"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Pet"
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid ID 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "Pet not found"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "api_key": []
+                                       }
+                               ]
+                       },
+                       "post": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Updates a pet in the store with 
form data",
+                               "description": "",
+                               "operationId": "updatePetWithForm",
+                               "consumes": [
+                                       "application/x-www-form-urlencoded"
+                               ],
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "petId",
+                                               "in": "path",
+                                               "description": "ID of pet that 
needs to be updated",
+                                               "required": true,
+                                               "type": "integer",
+                                               "format": "int64"
+                                       },
+                                       {
+                                               "name": "name",
+                                               "in": "formData",
+                                               "description": "Updated name of 
the pet",
+                                               "required": false,
+                                               "type": "string"
+                                       },
+                                       {
+                                               "name": "status",
+                                               "in": "formData",
+                                               "description": "Updated status 
of the pet",
+                                               "required": false,
+                                               "type": "string"
+                                       }
+                               ],
+                               "responses": {
+                                       "405": {
+                                               "description": "Invalid input"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       },
+                       "delete": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "Deletes a pet",
+                               "description": "",
+                               "operationId": "deletePet",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "api_key",
+                                               "in": "header",
+                                               "required": false,
+                                               "type": "string"
+                                       },
+                                       {
+                                               "name": "petId",
+                                               "in": "path",
+                                               "description": "Pet id to 
delete",
+                                               "required": true,
+                                               "type": "integer",
+                                               "format": "int64"
+                                       }
+                               ],
+                               "responses": {
+                                       "400": {
+                                               "description": "Invalid ID 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "Pet not found"
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       }
+               },
+               "/pet/{petId}/uploadImage": {
+                       "post": {
+                               "tags": [
+                                       "pet"
+                               ],
+                               "summary": "uploads an image",
+                               "description": "",
+                               "operationId": "uploadFile",
+                               "consumes": [
+                                       "multipart/form-data"
+                               ],
+                               "produces": [
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "petId",
+                                               "in": "path",
+                                               "description": "ID of pet to 
update",
+                                               "required": true,
+                                               "type": "integer",
+                                               "format": "int64"
+                                       },
+                                       {
+                                               "name": "additionalMetadata",
+                                               "in": "formData",
+                                               "description": "Additional data 
to pass to server",
+                                               "required": false,
+                                               "type": "string"
+                                       },
+                                       {
+                                               "name": "file",
+                                               "in": "formData",
+                                               "description": "file to upload",
+                                               "required": false,
+                                               "type": "file"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/ApiResponse"
+                                               }
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "petstore_auth": [
+                                                       "write:pets",
+                                                       "read:pets"
+                                               ]
+                                       }
+                               ]
+                       }
+               },
+               "/store/inventory": {
+                       "get": {
+                               "tags": [
+                                       "store"
+                               ],
+                               "summary": "Returns pet inventories by status",
+                               "description": "Returns a map of status codes 
to quantities",
+                               "operationId": "getInventory",
+                               "produces": [
+                                       "application/json"
+                               ],
+                               "parameters": [],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "type": "object",
+                                                       "additionalProperties": 
{
+                                                               "type": 
"integer",
+                                                               "format": 
"int32"
+                                                       }
+                                               }
+                                       }
+                               },
+                               "security": [
+                                       {
+                                               "api_key": []
+                                       }
+                               ]
+                       }
+               },
+               "/store/order": {
+                       "post": {
+                               "tags": [
+                                       "store"
+                               ],
+                               "summary": "Place an order for a pet",
+                               "description": "",
+                               "operationId": "placeOrder",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "order placed 
for purchasing the pet",
+                                               "required": true,
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Order"
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Order"
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid Order"
+                                       }
+                               }
+                       }
+               },
+               "/store/order/{orderId}": {
+                       "get": {
+                               "tags": [
+                                       "store"
+                               ],
+                               "summary": "Find purchase order by ID",
+                               "description": "For valid response try integer 
IDs with value >= 1 and <= 10. Other values will generated exceptions",
+                               "operationId": "getOrderById",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "orderId",
+                                               "in": "path",
+                                               "description": "ID of pet that 
needs to be fetched",
+                                               "required": true,
+                                               "type": "integer",
+                                               "maximum": 10.0,
+                                               "minimum": 1.0,
+                                               "format": "int64"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/Order"
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid ID 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "Order not found"
+                                       }
+                               }
+                       },
+                       "delete": {
+                               "tags": [
+                                       "store"
+                               ],
+                               "summary": "Delete purchase order by ID",
+                               "description": "For valid response try integer 
IDs with positive integer value. Negative or non-integer values will generate 
API errors",
+                               "operationId": "deleteOrder",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "orderId",
+                                               "in": "path",
+                                               "description": "ID of the order 
that needs to be deleted",
+                                               "required": true,
+                                               "type": "integer",
+                                               "minimum": 1.0,
+                                               "format": "int64"
+                                       }
+                               ],
+                               "responses": {
+                                       "400": {
+                                               "description": "Invalid ID 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "Order not found"
+                                       }
+                               }
+                       }
+               },
+               "/user": {
+                       "post": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Create user",
+                               "description": "This can only be done by the 
logged in user.",
+                               "operationId": "createUser",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "Created user 
object",
+                                               "required": true,
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/User"
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "default": {
+                                               "description": "successful 
operation"
+                                       }
+                               }
+                       }
+               },
+               "/user/createWithArray": {
+                       "post": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Creates list of users with given 
input array",
+                               "description": "",
+                               "operationId": "createUsersWithArrayInput",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "List of user 
object",
+                                               "required": true,
+                                               "schema": {
+                                                       "type": "array",
+                                                       "items": {
+                                                               "$ref": 
"#/definitions/User"
+                                                       }
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "default": {
+                                               "description": "successful 
operation"
+                                       }
+                               }
+                       }
+               },
+               "/user/createWithList": {
+                       "post": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Creates list of users with given 
input array",
+                               "description": "",
+                               "operationId": "createUsersWithListInput",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "List of user 
object",
+                                               "required": true,
+                                               "schema": {
+                                                       "type": "array",
+                                                       "items": {
+                                                               "$ref": 
"#/definitions/User"
+                                                       }
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "default": {
+                                               "description": "successful 
operation"
+                                       }
+                               }
+                       }
+               },
+               "/user/login": {
+                       "get": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Logs user into the system",
+                               "description": "",
+                               "operationId": "loginUser",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "username",
+                                               "in": "query",
+                                               "description": "The user name 
for login",
+                                               "required": true,
+                                               "type": "string"
+                                       },
+                                       {
+                                               "name": "password",
+                                               "in": "query",
+                                               "description": "The password 
for login in clear text",
+                                               "required": true,
+                                               "type": "string"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "type": "string"
+                                               },
+                                               "headers": {
+                                                       "X-Rate-Limit": {
+                                                               "type": 
"integer",
+                                                               "format": 
"int32",
+                                                               "description": 
"calls per hour allowed by the user"
+                                                       },
+                                                       "X-Expires-After": {
+                                                               "type": 
"string",
+                                                               "format": 
"date-time",
+                                                               "description": 
"date in UTC when token expires"
+                                                       }
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid 
username/password supplied"
+                                       }
+                               }
+                       }
+               },
+               "/user/logout": {
+                       "get": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Logs out current logged in user 
session",
+                               "description": "",
+                               "operationId": "logoutUser",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [],
+                               "responses": {
+                                       "default": {
+                                               "description": "successful 
operation"
+                                       }
+                               }
+                       }
+               },
+               "/user/{username}": {
+                       "get": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Get user by user name",
+                               "description": "",
+                               "operationId": "getUserByName",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "username",
+                                               "in": "path",
+                                               "description": "The name that 
needs to be fetched. Use user1 for testing. ",
+                                               "required": true,
+                                               "type": "string"
+                                       }
+                               ],
+                               "responses": {
+                                       "200": {
+                                               "description": "successful 
operation",
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/User"
+                                               }
+                                       },
+                                       "400": {
+                                               "description": "Invalid 
username supplied"
+                                       },
+                                       "404": {
+                                               "description": "User not found"
+                                       }
+                               }
+                       },
+                       "put": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Updated user",
+                               "description": "This can only be done by the 
logged in user.",
+                               "operationId": "updateUser",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "username",
+                                               "in": "path",
+                                               "description": "name that need 
to be updated",
+                                               "required": true,
+                                               "type": "string"
+                                       },
+                                       {
+                                               "in": "body",
+                                               "name": "body",
+                                               "description": "Updated user 
object",
+                                               "required": true,
+                                               "schema": {
+                                                       "$ref": 
"#/definitions/User"
+                                               }
+                                       }
+                               ],
+                               "responses": {
+                                       "400": {
+                                               "description": "Invalid user 
supplied"
+                                       },
+                                       "404": {
+                                               "description": "User not found"
+                                       }
+                               }
+                       },
+                       "delete": {
+                               "tags": [
+                                       "user"
+                               ],
+                               "summary": "Delete user",
+                               "description": "This can only be done by the 
logged in user.",
+                               "operationId": "deleteUser",
+                               "produces": [
+                                       "application/xml",
+                                       "application/json"
+                               ],
+                               "parameters": [
+                                       {
+                                               "name": "username",
+                                               "in": "path",
+                                               "description": "The name that 
needs to be deleted",
+                                               "required": true,
+                                               "type": "string"
+                                       }
+                               ],
+                               "responses": {
+                                       "400": {
+                                               "description": "Invalid 
username supplied"
+                                       },
+                                       "404": {
+                                               "description": "User not found"
+                                       }
+                               }
+                       }
+               }
+       },
+       "securityDefinitions": {
+               "petstore_auth": {
+                       "type": "oauth2",
+                       "authorizationUrl": 
"http://petstore.swagger.io/oauth/dialog";,
+                       "flow": "implicit",
+                       "scopes": {
+                               "write:pets": "modify pets in your account",
+                               "read:pets": "read your pets"
+                       }
+               },
+               "api_key": {
+                       "type": "apiKey",
+                       "name": "api_key",
+                       "in": "header"
+               }
+       },
+       "definitions": {
+               "Order": {
+                       "type": "object",
+                       "properties": {
+                               "id": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "petId": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "quantity": {
+                                       "type": "integer",
+                                       "format": "int32"
+                               },
+                               "shipDate": {
+                                       "type": "string",
+                                       "format": "date-time"
+                               },
+                               "status": {
+                                       "type": "string",
+                                       "description": "Order Status",
+                                       "enum": [
+                                               "placed",
+                                               "approved",
+                                               "delivered"
+                                       ]
+                               },
+                               "complete": {
+                                       "type": "boolean",
+                                       "default": false
+                               }
+                       },
+                       "xml": {
+                               "name": "Order"
+                       }
+               },
+               "User": {
+                       "type": "object",
+                       "properties": {
+                               "id": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "username": {
+                                       "type": "string"
+                               },
+                               "firstName": {
+                                       "type": "string"
+                               },
+                               "lastName": {
+                                       "type": "string"
+                               },
+                               "email": {
+                                       "type": "string"
+                               },
+                               "password": {
+                                       "type": "string"
+                               },
+                               "phone": {
+                                       "type": "string"
+                               },
+                               "userStatus": {
+                                       "type": "integer",
+                                       "format": "int32",
+                                       "description": "User Status"
+                               }
+                       },
+                       "xml": {
+                               "name": "User"
+                       }
+               },
+               "Category": {
+                       "type": "object",
+                       "properties": {
+                               "id": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "name": {
+                                       "type": "string"
+                               }
+                       },
+                       "xml": {
+                               "name": "Category"
+                       }
+               },
+               "Tag": {
+                       "type": "object",
+                       "properties": {
+                               "id": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "name": {
+                                       "type": "string"
+                               }
+                       },
+                       "xml": {
+                               "name": "Tag"
+                       }
+               },
+               "Pet": {
+                       "type": "object",
+                       "required": [
+                               "name",
+                               "photoUrls"
+                       ],
+                       "properties": {
+                               "id": {
+                                       "type": "integer",
+                                       "format": "int64"
+                               },
+                               "category": {
+                                       "$ref": "#/definitions/Category"
+                               },
+                               "name": {
+                                       "type": "string",
+                                       "example": "doggie"
+                               },
+                               "photoUrls": {
+                                       "type": "array",
+                                       "xml": {
+                                               "name": "photoUrl",
+                                               "wrapped": true
+                                       },
+                                       "items": {
+                                               "type": "string"
+                                       }
+                               },
+                               "tags": {
+                                       "type": "array",
+                                       "xml": {
+                                               "name": "tag",
+                                               "wrapped": true
+                                       },
+                                       "items": {
+                                               "$ref": "#/definitions/Tag"
+                                       }
+                               },
+                               "status": {
+                                       "type": "string",
+                                       "description": "pet status in the 
store",
+                                       "enum": [
+                                               "available",
+                                               "pending",
+                                               "sold"
+                                       ]
+                               }
+                       },
+                       "xml": {
+                               "name": "Pet"
+                       }
+               },
+               "ApiResponse": {
+                       "type": "object",
+                       "properties": {
+                               "code": {
+                                       "type": "integer",
+                                       "format": "int32"
+                               },
+                               "type": {
+                                       "type": "string"
+                               },
+                               "message": {
+                                       "type": "string"
+                               }
+                       }
+               }
+       },
+       "externalDocs": {
+               "description": "Find out more about Swagger",
+               "url": "http://swagger.io";
+       }
+}
\ No newline at end of file
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 67da8eb..c729a8f 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
@@ -251,6 +251,12 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
 
                        op.putIfNotExists("operationId", mn);
                        
+                       s = rm.summary();
+                       if (s.isEmpty())
+                               s = mb.findFirstString(locale, mn + ".summary");
+                       if (s != null)
+                               op.put("summary", vr.resolve(s));
+
                        s = rm.description();
                        if (s.isEmpty())
                                s = mb.findFirstString(locale, mn + 
".description");
@@ -277,10 +283,6 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
                        
                        op.put("tags", tags);
                        
-                       s = mb.findFirstString(locale, mn + ".summary");
-                       if (s != null)
-                               op.put("summary", vr.resolve(s));
-
                        s = mb.findFirstString(locale, mn + ".externalDocs");
                        if (s != null) {
                                ObjectMap eom = jp.parse(vr.resolve(s), 
ObjectMap.class);

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to