Skip to content

Hidden controller exposes Operation annotated method #1316

Closed
@peter-plochan

Description

@peter-plochan

For some of my REST controllers, I'm using special processing logic for generating OAPI document. Therefore, all such controllers are marked as hidden and are processed with a special repositoryRestResourceProvider. The problem is that if I use Operation annotation for a method within such controller, this method is processed by the standard way as if the controller isn't hidden. This is caused by this condition.

Is it intentional and if yes, why? I would expect that hidden controllers won't expose any method even they are annotated with this swagger annotation.

Example

  • Java classes:
@RestController
public class AHiddenController {
    
    @Operation(description = "I want here some custom config")
    @GetMapping("/{entity}/{id}")
    public ResponseEntity getEntity() {
        throw new UnsupportedOperationException("the body is not relevant now");
    }
}

public class MyRestResourceProvider extends RepositoryRestResourceProvider {
    // here is some logic generating special paths (e.g. /entity1/{id}, /entity2/{id})
}


@Configuration
public class MySpringDocConfig {
    
    @Bean
    public MyRestResourceProvider myRestResourceProvider() {
        return new MyRestResourceProvider();
    }
    
    @PostConstruct
    public void init() {
        SpringDocUtils.getConfig().addHiddenRestControllers(AHiddenController.class);
    }
}
  • Expected generated OAPI JSON:
{
    "openapi": "3.0.1",
    "info": { ... },
    "paths": {
        "/entity1/{id}": { ... },
        "/entity2/{id}": { ... }
    }
    "components": { ... }
}
  • Actual generated OAPI JSON:
{
    "openapi": "3.0.1",
    "info": { ... },
    "paths": {
        "/entity1/{id}": { ... },
        "/entity2/{id}": { ... },
        "/{entity}/{id}": { ... }
    }
    "components": { ... }
}

Library versions

  • spring-boot version 2.5.3
  • springdoc-openapi version 1.5.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions