Skip to content

Commit fd70fd9

Browse files
committed
#1061 - Reenable default codecs for WebFlux configuration.
With Spring WebFlux properly handling custom codecs, no need to disable the default handlers. This commit verifies WebFlux configuration in test cases, and also adds an equivalent set of test cases verifying Web MVC configuration as well. Supercedes: #1047
1 parent 85fe81e commit fd70fd9

File tree

5 files changed

+497
-16
lines changed

5 files changed

+497
-16
lines changed

src/main/java/org/springframework/hateoas/config/WebFluxHateoasConfiguration.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,21 +124,14 @@ static class HypermediaWebFluxConfigurer implements WebFluxConfigurer {
124124
@Override
125125
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
126126

127-
CodecConfigurer.CustomCodecs customCodecs = configurer.customCodecs();
128-
129127
this.hypermediaTypes.forEach(hypermedia -> {
130128

131-
MimeType[] mimeTypes = hypermedia.getMediaTypes().toArray(new MimeType[0]);
132-
133129
ObjectMapper objectMapper = hypermedia.configureObjectMapper(this.mapper.copy());
134-
customCodecs.encoder(new Jackson2JsonEncoder(objectMapper, mimeTypes));
135-
customCodecs.decoder(new Jackson2JsonDecoder(objectMapper, mimeTypes));
130+
MimeType[] mimeTypes = hypermedia.getMediaTypes().toArray(new MimeType[0]);
131+
132+
configurer.customCodecs().encoder(new Jackson2JsonEncoder(objectMapper, mimeTypes));
133+
configurer.customCodecs().decoder(new Jackson2JsonDecoder(objectMapper, mimeTypes));
136134
});
137-
138-
customCodecs.encoder(CharSequenceEncoder.allMimeTypes());
139-
customCodecs.decoder(StringDecoder.allMimeTypes());
140-
141-
configurer.registerDefaults(false);
142135
}
143136
}
144137
}

src/main/java/org/springframework/hateoas/mediatype/collectionjson/Jackson2CollectionJsonModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
* @author Greg Turnquist
6666
* @author Oliver Drotbohm
6767
*/
68-
class Jackson2CollectionJsonModule extends SimpleModule {
68+
public class Jackson2CollectionJsonModule extends SimpleModule {
6969

7070
private static final long serialVersionUID = -6540574644565592709L;
7171

src/main/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
* @author Greg Turnquist
7474
* @author Oliver Gierke
7575
*/
76-
class Jackson2HalFormsModule extends SimpleModule {
76+
public class Jackson2HalFormsModule extends SimpleModule {
7777

7878
private static final long serialVersionUID = -4496351128468451196L;
7979

src/test/java/org/springframework/hateoas/config/HypermediaWebFluxConfigurerTest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,15 +255,22 @@ void registeringAllHypermediaTypesShouldAllowCreatingThroughAllFormats() {
255255
}
256256

257257
/**
258+
* When requesting an unregistered media type, fallback to Spring Framework's default JSON handler.
259+
*
258260
* @see #728
259261
*/
260262
@Test
261-
void callingForUnregisteredMediaTypeShouldFail() {
263+
void callingForUnregisteredMediaTypeShouldFallBackToDefaultHandler() {
262264

263265
setUp(HalWebFluxConfig.class);
264266

265-
this.testClient.get().uri("/").accept(MediaTypes.UBER_JSON).exchange().expectStatus().is4xxClientError()
266-
.returnResult(String.class).getResponseBody().as(StepVerifier::create).verifyComplete();
267+
this.testClient.get().uri("/").accept(MediaTypes.UBER_JSON) //
268+
.exchange() //
269+
.expectStatus().isOk() //
270+
.returnResult(String.class).getResponseBody() //
271+
.as(StepVerifier::create) //
272+
.expectNext("{\"links\":[{\"rel\":\"self\",\"href\":\"/\"},{\"rel\":\"employees\",\"href\":\"/employees\"}]}")
273+
.verifyComplete();
267274
}
268275

269276
/**

0 commit comments

Comments
 (0)