Skip to content

Commit 410bb8a

Browse files
author
bnasslahsen
committed
add SpringDocUtils.addHiddenRestControllers(String ...)
1 parent 196b1b6 commit 410bb8a

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/api/AbstractOpenApiResource.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,19 @@ public static void addHiddenRestControllers(Class<?>... classes) {
138138
HIDDEN_REST_CONTROLLERS.addAll(Arrays.asList(classes));
139139
}
140140

141+
public static void addHiddenRestControllers(String... classes) {
142+
Set<Class<?>> hiddenClasses =new HashSet<>();
143+
for (String aClass : classes) {
144+
try {
145+
hiddenClasses.add(Class.forName(aClass));
146+
}
147+
catch (ClassNotFoundException e) {
148+
LOGGER.warn("The following class doesn't exist and cannot be hidden: "+ aClass);
149+
}
150+
}
151+
HIDDEN_REST_CONTROLLERS.addAll(hiddenClasses);
152+
}
153+
141154
protected synchronized OpenAPI getOpenApi() {
142155
OpenAPI openApi;
143156
if (openAPIBuilder.getCachedOpenAPI() == null || springDocConfigProperties.isCacheDisabled()) {
@@ -146,7 +159,7 @@ protected synchronized OpenAPI getOpenApi() {
146159
Map<String, Object> mappingsMap = openAPIBuilder.getMappingsMap().entrySet().stream()
147160
.filter(controller -> (AnnotationUtils.findAnnotation(controller.getValue().getClass(),
148161
Hidden.class) == null))
149-
.filter(controller -> !isHiddenRestControllers(controller.getValue().getClass()))
162+
.filter(controller -> !AbstractOpenApiResource.isHiddenRestControllers(controller.getValue().getClass()))
150163
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1));
151164

152165
Map<String, Object> findControllerAdvice = openAPIBuilder.getControllerAdviceMap();
@@ -425,7 +438,7 @@ protected boolean isAdditionalRestController(Class<?> rawClass) {
425438
return ADDITIONAL_REST_CONTROLLERS.stream().anyMatch(clazz -> clazz.isAssignableFrom(rawClass));
426439
}
427440

428-
protected boolean isHiddenRestControllers(Class<?> rawClass) {
441+
public static boolean isHiddenRestControllers(Class<?> rawClass) {
429442
return HIDDEN_REST_CONTROLLERS.stream().anyMatch(clazz -> clazz.isAssignableFrom(rawClass));
430443
}
431444

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ public SpringDocUtils addHiddenRestControllers(Class<?>... classes) {
5555
return this;
5656
}
5757

58+
public SpringDocUtils addHiddenRestControllers(String... classes) {
59+
AbstractOpenApiResource.addHiddenRestControllers(classes);
60+
return this;
61+
}
62+
5863
public SpringDocUtils replaceWithClass(Class source, Class target) {
5964
AdditionalModelsConverter.replaceWithClass(source, target);
6065
return this;

springdoc-openapi-data-rest/src/main/java/org/springdoc/data/rest/SpringRepositoryRestResourceProvider.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.stream.Stream;
3131

3232
import io.swagger.v3.oas.models.OpenAPI;
33+
import org.springdoc.api.AbstractOpenApiResource;
3334
import org.springdoc.core.RepositoryRestResourceProvider;
3435
import org.springdoc.core.fn.RouterOperation;
3536
import org.springdoc.data.rest.core.DataRestRouterOperationBuilder;
@@ -51,13 +52,13 @@
5152

5253
public class SpringRepositoryRestResourceProvider implements RepositoryRestResourceProvider {
5354

54-
private static final String REPOSITORY_ENTITY_CONTROLLER = "org.springframework.data.rest.webmvc.RepositoryEntityController";
55+
public static final String REPOSITORY_ENTITY_CONTROLLER = "org.springframework.data.rest.webmvc.RepositoryEntityController";
5556

56-
private static final String REPOSITORY_SERACH_CONTROLLER = "org.springframework.data.rest.webmvc.RepositorySearchController";
57+
public static final String REPOSITORY_SERACH_CONTROLLER = "org.springframework.data.rest.webmvc.RepositorySearchController";
5758

58-
private static final String REPOSITORY_SCHEMA_CONTROLLER = "org.springframework.data.rest.webmvc.RepositorySchemaController";
59+
public static final String REPOSITORY_SCHEMA_CONTROLLER = "org.springframework.data.rest.webmvc.RepositorySchemaController";
5960

60-
private static final String REPOSITORY_PROPERTY_CONTROLLER = "org.springframework.data.rest.webmvc.RepositoryPropertyReferenceController";
61+
public static final String REPOSITORY_PROPERTY_CONTROLLER = "org.springframework.data.rest.webmvc.RepositoryPropertyReferenceController";
6162

6263
private ResourceMappings mappings;
6364

@@ -93,6 +94,7 @@ public List<RouterOperation> getRouterOperations(OpenAPI openAPI) {
9394
.filter(requestMappingInfoHandlerMethodEntry -> REPOSITORY_ENTITY_CONTROLLER.equals(requestMappingInfoHandlerMethodEntry
9495
.getValue().getBeanType().getName()) || REPOSITORY_PROPERTY_CONTROLLER.equals(requestMappingInfoHandlerMethodEntry
9596
.getValue().getBeanType().getName()))
97+
.filter(controller -> !AbstractOpenApiResource.isHiddenRestControllers(controller.getValue().getBeanType()))
9698
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1));
9799
findControllers(routerOperationList, handlerMethodMapFiltered, resourceMetadata, domainType, openAPI);
98100
}
@@ -102,6 +104,7 @@ else if (handlerMapping instanceof BasePathAwareHandlerMapping) {
102104
Map<RequestMappingInfo, HandlerMethod> handlerMethodMapFiltered = handlerMethodMap.entrySet().stream()
103105
.filter(requestMappingInfoHandlerMethodEntry -> REPOSITORY_SCHEMA_CONTROLLER.equals(requestMappingInfoHandlerMethodEntry
104106
.getValue().getBeanType().getName()))
107+
.filter(controller -> !AbstractOpenApiResource.isHiddenRestControllers(controller.getValue().getBeanType()))
105108
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1));
106109

107110
findControllers(routerOperationList, handlerMethodMapFiltered, resourceMetadata, domainType, openAPI);
@@ -124,6 +127,7 @@ else if (handlerMapping instanceof BasePathAwareHandlerMapping) {
124127
Map<RequestMappingInfo, HandlerMethod> handlerMethodMapFiltered = handlerMethodMap.entrySet().stream()
125128
.filter(requestMappingInfoHandlerMethodEntry -> REPOSITORY_SERACH_CONTROLLER.equals(requestMappingInfoHandlerMethodEntry
126129
.getValue().getBeanType().getName()))
130+
.filter(controller -> !AbstractOpenApiResource.isHiddenRestControllers(controller.getValue().getBeanType()))
127131
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1));
128132
ResourceMetadata metadata = associations.getMetadataFor(domainType);
129133
SearchResourceMappings searchResourceMappings = metadata.getSearchResourceMappings();

0 commit comments

Comments
 (0)