Added [email protected] and remove engineering On Fri, Oct 7, 2016 at 12:18 PM, Praminda Jayawardana <[email protected]> wrote:
> Hi All, > > Madhawa is having following issue with his API Implementation. > > He has an API Model which contains another API Model (nested). In the > swagger definition file generated for his web app implementation, annotated > example values are available for outer API Model's properties. But > annotated example values for nested API Model's properties are not > available. > > After an offline discussion with Madhawa we came into a conclusion that > this might be an issue in swagger-core. > Madhawa will raise an issue to swagger core team on this. > > Thanks, > Praminda > > On Fri, Oct 7, 2016 at 10:46 AM, Madhawa Perera <[email protected]> wrote: > >> Hi, >> >> I'm trying to add example values to property object's in swagger >> annotations. >> >> There I'm trying to create the following json schema with some example >> values, on Swagger UI. In here, please note that "count" is an integer (I >> was able to set an example value to that successfully) and "activities" is >> an object. Both these are attributes inside the class "ListActivity". >> >> { >> *"count": 1,* >> "*activities*": [{ >> *"activityId": "string",* >> "code": "string", >> "createdTimeStamp": "string", >> "activityStatus": [{ >> "deviceIdentifier": { >> "id": "string", >> "type": "string" >> }, >> "responses": [{ >> "response": "string", >> "receivedTimeStamp": "string" >> }], >> "updatedTimestamp": "string" >> }] >> }] >> } >> >> In the above schema, what I wanted to do is instead of keeping "string" >> as the values, I need to add example values. Like >> *"activityId":"ACTIVITY_1"* instead of "activityId":"string" For that >> I'm using following swagger annotations. >> >> "ListActivity" class is annotated with "@ApiModel" as below. >> >> @ApiModel( >> value = "List of activities", >> description = "This contains a set of activities that matches >> a given criteria as a collection") >> *public class ActivityList* >> >> Inside the "ListActivity" class I'm defining the model properties using >> "@ApiModelProperty" annotation as below. >> >> @ApiModelProperty( >> value = "Number of total resources.", >> *example = "1"*) >> @JsonProperty("count") >> private int *count*; >> >> @ApiModelProperty( >> value = "Returns the list of activities that match the offset >> and limit parameter values that were specified.") >> @JsonProperty("activities") >> private List<Activity> *activities*; >> >> Since "Activity" is an object, I'm again creates a model inside the >> "Activity" class. I'm annotating it as below. >> >> @ApiModel( >> value = "Activity", >> description = "An activity instance carries a unique identifier >> that can be used to identify a particular operation instance uniquely") >> *public class Activity* >> >> Inside "Activity" class, I'm again defining the model properties as >> below. >> >> @ApiModelProperty( >> name = "*activityId*", >> value = "Activity identifier", >> required = true, >> *example = "ACTIVITY_1*") >> @JsonProperty("activityId") >> private String *activityId*; >> >> @ApiModelProperty( >> name = "code", >> value = "Activity code", >> required = true, >> example = "DEVICE_RING") >> @JsonProperty("code") >> private String code; >> >> After that I'm generating the swagger.json file. In the generated file, >> example values were set to only to the attribute "count" as I gien in the >> annotations. That means the "count" attribute's value is set to "1" as I >> annotated. But the all the example values that I set inside the "Activity" >> class does not come to the generated swagger.json file. Instead it only >> shows "type": "string". Therefore in the swagger UI, i'm getting a json >> schema as shown above (Please refer the json shown at the beginning of this >> email) with only "count" is set to "1" and other keys are set with their >> data types. >> >> The json generated has the following format. >> >> "*List of activities*": { >> "type": "object", >> "properties": { >> "*count*": { >> "type": "integer", >> "format": "int32", >> "*example": 1*, *(example values are set here as given in >> the annotations)* >> "description": "Number of total resources." >> }, >> >> "activities": { >> "type": "array", >> "description": "Returns the list of activities that match >> the offset and limit parameter values that were specified.", >> "items": { >> "$ref": "#/definitions/Activity" >> } >> } >> }, >> "description": "This contains a set of activities that matches a >> given criteria as a collection" >> }, >> >> >> "*Activity*": { >> "type": "object", >> "properties": { >> "*activityId*": { >> "type": "string" *(example values are not set here though >> I gave it in the annotations)* >> } >> "activityStatus": { >> "type": "array", >> "items": { >> "$ref": "#/definitions/ActivityStatus" >> } >> } >> } >> }, >> >> The example values I gave through the annotations are not set for the >> property "*activityId*" inside the "Activity" class. >> >> Is there anyway that I can set these property (example) when I go inside >> the beans. Appreciate your thoughts and suggestions on this. >> >> Thank you >> Best Regards, >> Madhawa >> >> -- >> Madhawa Perera >> *Software Engineer* >> Mobile : +94 (0) 773655496 >> <%2B94%20%280%29%20773%20451194> >> [email protected] >> >> >> > > > -- > *Praminda Jayawardana* > Software Engineer > WSO2 Inc.; http://wso2.com > Mobile : +94 (0) 716 590918 > -- Madhawa Perera *Software Engineer* Mobile : +94 (0) 773655496 <%2B94%20%280%29%20773%20451194> [email protected]
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
