Fix some logic with media types
If user sends "Accept: */*" we don't want to default to sending an SSE (for instance). So the logic for detecting those preferences has to take MediaType.ALL into account as a special case.
This commit is contained in:
@@ -84,7 +84,7 @@ public class FluxReturnValueHandler implements AsyncHandlerMethodReturnValueHand
|
||||
}
|
||||
|
||||
private ResponseBodyEmitter getEmitter(Long timeout, Flux<?> flux, MediaType mediaType) {
|
||||
if (EVENT_STREAM.isCompatibleWith(mediaType)) {
|
||||
if (!MediaType.ALL.equals(mediaType) && EVENT_STREAM.isCompatibleWith(mediaType)) {
|
||||
return new FluxResponseSseEmitter<>(timeout, mediaType, flux);
|
||||
}
|
||||
return new FluxResponseBodyEmitter<>(timeout, mediaType, flux);
|
||||
|
||||
@@ -56,7 +56,7 @@ class ResponseBodyEmitterSubscriber<T> implements Subscriber<T>, Runnable {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Subscription subscription) {
|
||||
if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
if (!MediaType.ALL.equals(mediaType) && MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
try {
|
||||
this.responseBodyEmitter.send("[");
|
||||
}
|
||||
@@ -74,7 +74,7 @@ class ResponseBodyEmitterSubscriber<T> implements Subscriber<T>, Runnable {
|
||||
Object object = value;
|
||||
|
||||
try {
|
||||
if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
if (!MediaType.ALL.equals(mediaType) && MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
if (!this.firstElementWritten) {
|
||||
this.firstElementWritten = true;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ class ResponseBodyEmitterSubscriber<T> implements Subscriber<T>, Runnable {
|
||||
if (!completed) {
|
||||
completed = true;
|
||||
try {
|
||||
if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
if (!MediaType.ALL.equals(mediaType) && MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
|
||||
if (!this.firstElementWritten) {
|
||||
|
||||
this.firstElementWritten = true;
|
||||
|
||||
Reference in New Issue
Block a user