Springfox 3: migrate from ResponseMessage to Response to override error messages

Viewed 1201

Since Springfox 3, ResponseMessage is deprecated and we should use Response instead.

How can I properly migrate from ResponseMessage to Response to override default response error messages?

This is an example of springfox 2.9.2 compatible code that I want to migrate:

private static ResponseMessage responseMessageFor401() {
        return new ResponseMessageBuilder()
                .code( 401 )
                .message( "ERROR_MESSAGE_401" )
                .responseModel( new ModelRef( "StatusWrapper" ) )
                .build();
    }

enter image description here

1 Answers

I finally found the answer:

You must add your model class to Docket configuration.

.additionalModels( typeResolver.resolve( StatusWrapper.class ) )    

And than:

    private static Response responseMessageFor401() {
            return new ResponseBuilder().code( "401" )
                                        .description( "ERROR_MESSAGE_401" )
                                        .representation( MediaType.APPLICATION_JSON )
                                        .apply( DefaultResponse::buildDefaultModel )
                                        .isDefault( true )
                                        .build();
        }

private static void buildDefaultModel( final RepresentationBuilder representationBuilder ) {
    representationBuilder.model(
            msBuilder ->
                    msBuilder.name( "StatusWrapper" )
                             .referenceModel( rmsBuilder ->
                                                      rmsBuilder.key(
                                                              mkBuilder ->
                                                                      mkBuilder.isResponse( true )
                                                                               .qualifiedModelName(
                                                                                       qmnBuilder -> qmnBuilder.name( "StatusWrapper" )
                                                                                                               //package of your model class
                                                                                                               .namespace( "com.example.swagger.configuration" )
                                                                                                               .build() )
                                                                               .build() )
                                                                .build() )
                             .build() );
}
Related