Skip to content

Commit c41c110

Browse files
author
bnasslahsen
committed
improve compatibility with java 11
1 parent 413373e commit c41c110

File tree

4 files changed

+48
-20
lines changed

4 files changed

+48
-20
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ subprojects {
5454
dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.8.RELEASE'
5555
dependency 'javax.xml:jaxb-impl:2.1'
5656
dependency 'jakarta.servlet:jakarta.servlet-api:4.0.3'
57+
dependency 'jakarta.annotation:jakarta.annotation-api:1.3.5'
5758
dependency 'org.projectlombok:lombok:1.18.12'
5859
dependency 'org.codehaus.groovy:groovy:2.5.11'
5960
}

springdoc-openapi-hateoas/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ description = 'springdoc-openapi-hateoas'
33
dependencies {
44
api project(':springdoc-openapi-common')
55
api 'org.springframework.hateoas:spring-hateoas'
6-
testImplementation project(':springdoc-openapi-webmvc-core')
6+
compileOnly 'jakarta.annotation:jakarta.annotation-api'
7+
testImplementation project(':springdoc-openapi-webmvc-core')
78
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa'
89
testImplementation 'com.h2database:h2'
910
testImplementation 'org.springframework.boot:spring-boot-starter-hateoas'

springdoc-openapi-hateoas/src/main/java/org/springdoc/hateoas/SpringDocHateoasConfiguration.java

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,11 @@
2222

2323
import com.fasterxml.jackson.core.JsonGenerator;
2424
import com.fasterxml.jackson.databind.SerializerProvider;
25-
import io.swagger.v3.core.converter.AnnotatedType;
26-
import io.swagger.v3.core.converter.ModelConverters;
27-
import io.swagger.v3.core.converter.ResolvedSchema;
28-
import io.swagger.v3.core.util.AnnotationsUtils;
2925
import io.swagger.v3.core.util.Json;
30-
import io.swagger.v3.oas.models.media.MapSchema;
31-
import io.swagger.v3.oas.models.media.ObjectSchema;
32-
import io.swagger.v3.oas.models.media.StringSchema;
26+
import org.springdoc.core.SpringDocConfigProperties;
3327
import org.springdoc.core.customizers.OpenApiCustomiser;
3428
import org.springdoc.hateoas.converters.CollectionModelContentConverter;
29+
import org.springdoc.hateoas.converters.OpenApiHateoasLinksCustomiser;
3530
import org.springdoc.hateoas.converters.RepresentationModelLinksOASMixin;
3631

3732
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -40,7 +35,6 @@
4035
import org.springframework.context.annotation.Bean;
4136
import org.springframework.context.annotation.Configuration;
4237
import org.springframework.context.annotation.Lazy;
43-
import org.springframework.hateoas.Link;
4438
import org.springframework.hateoas.Links;
4539
import org.springframework.hateoas.RepresentationModel;
4640
import org.springframework.hateoas.server.LinkRelationProvider;
@@ -93,22 +87,13 @@ CollectionModelContentConverter collectionModelContentConverter(HateoasHalProvid
9387
@Bean
9488
@ConditionalOnMissingBean
9589
@Lazy(false)
96-
OpenApiCustomiser linksSchemaCustomiser(HateoasHalProvider halProvider) {
90+
OpenApiCustomiser linksSchemaCustomiser(HateoasHalProvider halProvider, SpringDocConfigProperties springDocConfigProperties) {
9791
if (!halProvider.isHalEnabled()) {
9892
return openApi -> {
9993
};
10094
}
10195
Json.mapper().addMixIn(RepresentationModel.class, RepresentationModelLinksOASMixin.class);
102-
103-
ResolvedSchema resolvedLinkSchema = ModelConverters.getInstance()
104-
.resolveAsResolvedSchema(new AnnotatedType(Link.class));
105-
106-
return openApi -> openApi
107-
.schema("Link", resolvedLinkSchema.schema)
108-
.schema("Links", new MapSchema()
109-
.additionalProperties(new StringSchema())
110-
.additionalProperties(new ObjectSchema().$ref(AnnotationsUtils.COMPONENTS_REF +"Link")));
96+
return new OpenApiHateoasLinksCustomiser(springDocConfigProperties);
11197
}
11298

113-
11499
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.springdoc.hateoas.converters;
2+
3+
import io.swagger.v3.core.converter.AnnotatedType;
4+
import io.swagger.v3.core.converter.ModelConverters;
5+
import io.swagger.v3.core.converter.ResolvedSchema;
6+
import io.swagger.v3.core.filter.SpecFilter;
7+
import io.swagger.v3.core.util.AnnotationsUtils;
8+
import io.swagger.v3.oas.models.OpenAPI;
9+
import io.swagger.v3.oas.models.media.MapSchema;
10+
import io.swagger.v3.oas.models.media.ObjectSchema;
11+
import io.swagger.v3.oas.models.media.StringSchema;
12+
import org.springdoc.core.SpringDocConfigProperties;
13+
import org.springdoc.core.customizers.OpenApiCustomiser;
14+
15+
import org.springframework.hateoas.Link;
16+
17+
/**
18+
* The type Open api hateoas links customiser.
19+
* @author bnasslahsen
20+
*/
21+
public class OpenApiHateoasLinksCustomiser extends SpecFilter implements OpenApiCustomiser {
22+
23+
private final SpringDocConfigProperties springDocConfigProperties;
24+
25+
public OpenApiHateoasLinksCustomiser(SpringDocConfigProperties springDocConfigProperties) {
26+
this.springDocConfigProperties = springDocConfigProperties;
27+
}
28+
29+
@Override
30+
public void customise(OpenAPI openApi) {
31+
ResolvedSchema resolvedLinkSchema = ModelConverters.getInstance()
32+
.resolveAsResolvedSchema(new AnnotatedType(Link.class));
33+
openApi
34+
.schema("Link", resolvedLinkSchema.schema)
35+
.schema("Links", new MapSchema()
36+
.additionalProperties(new StringSchema())
37+
.additionalProperties(new ObjectSchema().$ref(AnnotationsUtils.COMPONENTS_REF + "Link")));
38+
if (springDocConfigProperties.isRemoveBrokenReferenceDefinitions())
39+
this.removeBrokenReferenceDefinitions(openApi);
40+
}
41+
}

0 commit comments

Comments
 (0)