Hi All,
Can someone please help me how to resolve this issue.
Thanks for your help.
Regards,
Sharath.
On Wednesday, August 16, 2017 at 1:10:36 PM UTC-4, sharath karnati wrote:
>
>
> Hi All,
>
> We are having *User *as model object, and pojo class having following
> fields with getters/setters methods:
>
> private long id;
> private String name;
> private int age;
> private double salary;
>
> Using Spring MVC with swagger integration, when I open swagger
> (swagger-ui.html)
>
> it is displaying json object as below:
>
> [
> {
> "age": 0,
> "id": 0,
> "name": "string",
> "salary": 0
> }
> ]
>
> As per requirement, we'd like to change the property name to appear as
> "User Name" in place of "name" field. The field description
> need be read from .properties file. To implement this change I add following
> code
>
> package com.api.util;
> import java.util.HashSet;
> import java.util.Set;
>
> import org.springframework.beans.factory.annotation.Autowired;
> import org.springframework.context.MessageSource;
> import org.springframework.context.annotation.Bean;
> import org.springframework.context.annotation.Configuration;
> import org.springframework.core.annotation.Order;
>
> import springfox.documentation.builders.PathSelectors;
> import springfox.documentation.builders.RequestHandlerSelectors;
> import springfox.documentation.service.ApiInfo;
> import springfox.documentation.service.ResponseMessage;
> import springfox.documentation.spi.DocumentationType;
> import springfox.documentation.spi.service.OperationBuilderPlugin;
> import springfox.documentation.spi.service.contexts.OperationContext;
> import springfox.documentation.spring.web.plugins.Docket;
> import springfox.documentation.swagger.common.SwaggerPluginSupport;
> import springfox.documentation.swagger2.annotations.EnableSwagger2;
>
> @Configuration
> @EnableSwagger2
> public class SwaggerConfig {
>
> @Bean
> public Docket api(){
> return new Docket(DocumentationType.SWAGGER_2)
> .select()
> .apis(RequestHandlerSelectors.basePackage("com.api.controller"))
> .paths(PathSelectors.any())
> .build().apiInfo(apiInfo());
>
> }
>
> private ApiInfo apiInfo() {
> @SuppressWarnings("deprecation")
> ApiInfo apiInfo = new ApiInfo(
> "Connect Rest API",
> "This API provides Connect Report data",
> "TOS",
> "Terms of service",
> "Connect Launch",
> "@Use restricted",
> "swagger-ui.html");
> return apiInfo;
> }
>
> @Bean
> public ApiOperationBuilderPlugin apiPlugin() {
> return new ApiOperationBuilderPlugin();
> }
>
> @Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER)
> public static class ApiOperationBuilderPlugin implements
> OperationBuilderPlugin {
>
> @Autowired
> protected MessageSource translator;
>
> public boolean supports(DocumentationType delimiter) {
> return true;
> }
>
> public void apply(OperationContext context) {
> System.out.println("***** Inside apply OperationContext
> *****");
> Set<ResponseMessage> messages =
> context.operationBuilder().build().getResponseMessages();
> System.out.println("Inside apply OperationContext
> messages:"+messages);
>
> Set<ResponseMessage> translated = new HashSet<ResponseMessage>();
> for (ResponseMessage untranslated : messages) {
> System.out.println("Inside apply OperationContext
> untranslated:"+untranslated);
> String translation =
> translator.getMessage(untranslated.getMessage(), null,
> untranslated.getMessage(),
> null);
> System.out.println("Inside apply OperationContext
> untranslated.getMessage:"+untranslated.getMessage());
> //translated.add(new ResponseMessage(untranslated.getCode(),
> translation,
> // untranslated.getResponseModel(),
> untranslated.getHeaders()));
> }
> context.operationBuilder().responseMessages(translated);
> }
>
> }
>
>
> }
>
>
> Added System.out lines to see whether it shows anything related to User
> object, but it is showing below lines in console
>
> ***** Inside apply OperationContext *****
> Inside apply OperationContext
> messages:[springfox.documentation.service.ResponseMessage@c8,
> springfox.documentation.service.ResponseMessage@193,
> springfox.documentation.service.ResponseMessage@191,
> springfox.documentation.service.ResponseMessage@194]
> Inside apply OperationContext
> untranslated:springfox.documentation.service.ResponseMessage@c8
> Inside apply OperationContext untranslated.getMessage:OK
> Inside apply OperationContext
> untranslated:springfox.documentation.service.ResponseMessage@193
> Inside apply OperationContext untranslated.getMessage:Forbidden
> Inside apply OperationContext
> untranslated:springfox.documentation.service.ResponseMessage@191
> Inside apply OperationContext untranslated.getMessage:Unauthorized
> Inside apply OperationContext
> untranslated:springfox.documentation.service.ResponseMessage@194
>
>
>
> Controller is having below lines:
>
> @RequestMapping(value = "/user/{id}", method = RequestMethod.GET,
> produces = MediaType.APPLICATION_JSON_VALUE)
> public ResponseEntity<User> getUser(@PathVariable("id") long id) {
> System.out.println("Fetching User with id " + id);
> User user = userService.findById(id);
> if (user == null) {
> System.out.println("User with id " + id + " not
> found");
> return new ResponseEntity<User>(HttpStatus.
> NOT_FOUND);
> }
> return new ResponseEntity<User>(user, HttpStatus.OK);
> }
>
>
> Can someone please let me know, how to resolve this issue.
>
>
> Thanks in advance.
>
> Regards,
> Sharath Karnati.
>
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.