22
22
23
23
import java .util .Optional ;
24
24
25
- import com .fasterxml .jackson .core .JsonGenerator ;
26
- import com .fasterxml .jackson .databind .SerializerProvider ;
27
25
import com .querydsl .core .types .Predicate ;
28
- import io .swagger .v3 .core .converter .AnnotatedType ;
29
- import io .swagger .v3 .core .converter .ModelConverters ;
30
- import io .swagger .v3 .core .converter .ResolvedSchema ;
31
- import io .swagger .v3 .core .util .AnnotationsUtils ;
32
- import io .swagger .v3 .core .util .Json ;
33
- import io .swagger .v3 .oas .models .media .MapSchema ;
34
- import io .swagger .v3 .oas .models .media .ObjectSchema ;
35
- import io .swagger .v3 .oas .models .media .StringSchema ;
36
- import org .springdoc .core .customizers .OpenApiCustomiser ;
37
- import org .springdoc .data .rest .converters .CollectionModelContentConverter ;
38
- import org .springdoc .data .rest .converters .Pageable ;
39
- import org .springdoc .data .rest .converters .RepresentationModelLinksOASMixin ;
26
+ import org .springdoc .core .converters .models .Pageable ;
40
27
import org .springdoc .data .rest .customisers .QuerydslPredicateOperationCustomizer ;
41
28
42
29
import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
45
32
import org .springframework .context .annotation .Bean ;
46
33
import org .springframework .context .annotation .Configuration ;
47
34
import org .springframework .context .annotation .Lazy ;
35
+ import org .springframework .context .annotation .Primary ;
48
36
import org .springframework .data .querydsl .binding .QuerydslBindingsFactory ;
49
37
import org .springframework .data .rest .core .config .RepositoryRestConfiguration ;
50
- import org .springframework .hateoas .Link ;
51
- import org .springframework .hateoas .Links ;
52
- import org .springframework .hateoas .RepresentationModel ;
53
- import org .springframework .hateoas .server .LinkRelationProvider ;
54
38
55
39
import static org .springdoc .core .Constants .SPRINGDOC_ENABLED ;
56
40
import static org .springdoc .core .SpringDocUtils .getConfig ;
@@ -66,43 +50,12 @@ public class SpringDocDataRestConfiguration {
66
50
67
51
@ Bean
68
52
@ ConditionalOnMissingBean
53
+ @ Primary
69
54
@ Lazy (false )
70
- HalProvider halProvider (Optional <RepositoryRestConfiguration > repositoryRestConfiguration ) {
71
- return new HalProvider (repositoryRestConfiguration );
55
+ DataRestHalProvider halProvider (Optional <RepositoryRestConfiguration > repositoryRestConfiguration ) {
56
+ return new DataRestHalProvider (repositoryRestConfiguration );
72
57
}
73
58
74
- @ Bean
75
- @ ConditionalOnMissingBean
76
- @ Lazy (false )
77
- CollectionModelContentConverter collectionModelContentConverter (HalProvider halProvider , LinkRelationProvider linkRelationProvider ) {
78
- return halProvider .isHalEnabled () ? new CollectionModelContentConverter (linkRelationProvider ) : null ;
79
- }
80
-
81
- /**
82
- * Registers an OpenApiCustomiser and a jackson mixin to ensure the definition of `Links` matches the serialized
83
- * output. This is done because the customer serializer converts the data to a map before serializing it.
84
- *
85
- * @see org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)
86
- */
87
- @ Bean
88
- @ ConditionalOnMissingBean
89
- @ Lazy (false )
90
- OpenApiCustomiser linksSchemaCustomiser (HalProvider halProvider ) {
91
- if (!halProvider .isHalEnabled ()) {
92
- return openApi -> {
93
- };
94
- }
95
- Json .mapper ().addMixIn (RepresentationModel .class , RepresentationModelLinksOASMixin .class );
96
-
97
- ResolvedSchema resolvedLinkSchema = ModelConverters .getInstance ()
98
- .resolveAsResolvedSchema (new AnnotatedType (Link .class ));
99
-
100
- return openApi -> openApi
101
- .schema ("Link" , resolvedLinkSchema .schema )
102
- .schema ("Links" , new MapSchema ()
103
- .additionalProperties (new StringSchema ())
104
- .additionalProperties (new ObjectSchema ().$ref (AnnotationsUtils .COMPONENTS_REF +"Link" )));
105
- }
106
59
107
60
@ ConditionalOnClass (value = { QuerydslBindingsFactory .class })
108
61
class QuerydslProvider {
0 commit comments