Commit 9ad3d21b by Dave Syer

Tidy up more compiler warnings for generics

parent 1c9d11de
...@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.rx; ...@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.rx;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import rx.Observable; import rx.Observable;
/** /**
...@@ -28,8 +29,6 @@ import rx.Observable; ...@@ -28,8 +29,6 @@ import rx.Observable;
*/ */
class ObservableSseEmitter<T> extends SseEmitter { class ObservableSseEmitter<T> extends SseEmitter {
private final ResponseBodyEmitterSubscriber<T> subscriber;
public ObservableSseEmitter(Observable<T> observable) { public ObservableSseEmitter(Observable<T> observable) {
this(null, observable); this(null, observable);
} }
...@@ -38,8 +37,9 @@ class ObservableSseEmitter<T> extends SseEmitter { ...@@ -38,8 +37,9 @@ class ObservableSseEmitter<T> extends SseEmitter {
this(null, mediaType, observable); this(null, mediaType, observable);
} }
public ObservableSseEmitter(Long timeout, MediaType mediaType, Observable<T> observable) { public ObservableSseEmitter(Long timeout, MediaType mediaType,
Observable<T> observable) {
super(timeout); super(timeout);
this.subscriber = new ResponseBodyEmitterSubscriber<>(mediaType, observable, this); new ResponseBodyEmitterSubscriber<>(mediaType, observable, this);
} }
} }
...@@ -31,8 +31,6 @@ class SingleDeferredResult<T> extends DeferredResult<T> { ...@@ -31,8 +31,6 @@ class SingleDeferredResult<T> extends DeferredResult<T> {
private static final Object EMPTY_RESULT = new Object(); private static final Object EMPTY_RESULT = new Object();
private final DeferredResultSubscriber<T> subscriber;
public SingleDeferredResult(Single<T> single) { public SingleDeferredResult(Single<T> single) {
this(null, EMPTY_RESULT, single); this(null, EMPTY_RESULT, single);
} }
...@@ -44,7 +42,6 @@ class SingleDeferredResult<T> extends DeferredResult<T> { ...@@ -44,7 +42,6 @@ class SingleDeferredResult<T> extends DeferredResult<T> {
public SingleDeferredResult(Long timeout, Object timeoutResult, Single<T> single) { public SingleDeferredResult(Long timeout, Object timeoutResult, Single<T> single) {
super(timeout, timeoutResult); super(timeout, timeoutResult);
Assert.notNull(single, "single can not be null"); Assert.notNull(single, "single can not be null");
new DeferredResultSubscriber<>(single.toObservable(), this);
subscriber = new DeferredResultSubscriber<>(single.toObservable(), this);
} }
} }
...@@ -31,7 +31,8 @@ import rx.Single; ...@@ -31,7 +31,8 @@ import rx.Single;
import rx.functions.Func1; import rx.functions.Func1;
/** /**
* A specialized {@link AsyncHandlerMethodReturnValueHandler} that handles {@link Single} return types. * A specialized {@link AsyncHandlerMethodReturnValueHandler} that handles {@link Single}
* return types.
* *
* @author Spencer Gibb * @author Spencer Gibb
* @author Jakub Narloch * @author Jakub Narloch
...@@ -45,20 +46,23 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa ...@@ -45,20 +46,23 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
@Override @Override
public boolean supportsReturnType(MethodParameter returnType) { public boolean supportsReturnType(MethodParameter returnType) {
return Single.class.isAssignableFrom(returnType.getParameterType()) || isResponseEntity(returnType); return Single.class.isAssignableFrom(returnType.getParameterType())
|| isResponseEntity(returnType);
} }
private boolean isResponseEntity(MethodParameter returnType) { private boolean isResponseEntity(MethodParameter returnType) {
if(ResponseEntity.class.isAssignableFrom(returnType.getParameterType())) { if (ResponseEntity.class.isAssignableFrom(returnType.getParameterType())) {
Class<?> bodyType = ResolvableType.forMethodParameter(returnType).getGeneric(0).resolve(); Class<?> bodyType = ResolvableType.forMethodParameter(returnType)
.getGeneric(0).resolve();
return bodyType != null && Single.class.isAssignableFrom(bodyType); return bodyType != null && Single.class.isAssignableFrom(bodyType);
} }
return false; return false;
} }
@SuppressWarnings("unchecked")
@Override @Override
public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { public void handleReturnValue(Object returnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest)
throws Exception {
if (returnValue == null) { if (returnValue == null) {
mavContainer.setRequestHandled(true); mavContainer.setRequestHandled(true);
...@@ -66,7 +70,7 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa ...@@ -66,7 +70,7 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
} }
ResponseEntity<Single<?>> responseEntity = getResponseEntity(returnValue); ResponseEntity<Single<?>> responseEntity = getResponseEntity(returnValue);
if(responseEntity != null) { if (responseEntity != null) {
returnValue = responseEntity.getBody(); returnValue = responseEntity.getBody();
if (returnValue == null) { if (returnValue == null) {
mavContainer.setRequestHandled(true); mavContainer.setRequestHandled(true);
...@@ -75,8 +79,8 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa ...@@ -75,8 +79,8 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
} }
final Single<?> single = Single.class.cast(returnValue); final Single<?> single = Single.class.cast(returnValue);
WebAsyncUtils.getAsyncManager(webRequest) WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(
.startDeferredResultProcessing(convertToDeferredResult(responseEntity, single), mavContainer); convertToDeferredResult(responseEntity, single), mavContainer);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
...@@ -88,13 +92,17 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa ...@@ -88,13 +92,17 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
return null; return null;
} }
protected DeferredResult<?> convertToDeferredResult(final ResponseEntity<Single<?>> responseEntity, Single<?> single) { protected DeferredResult<?> convertToDeferredResult(
final ResponseEntity<Single<?>> responseEntity, Single<?> single) {
//TODO: fix when java8 :-) // TODO: use lambda when java8 :-)
Single<ResponseEntity> singleResponse = single.map(new Func1<Object, ResponseEntity>() { Single<ResponseEntity<?>> singleResponse = single
.map(new Func1<Object, ResponseEntity<?>>() {
@Override @Override
public ResponseEntity call(Object object) { public ResponseEntity<?> call(Object object) {
return new ResponseEntity<>(object, getHttpHeaders(responseEntity), getHttpStatus(responseEntity)); return new ResponseEntity<Object>(object,
getHttpHeaders(responseEntity),
getHttpStatus(responseEntity));
} }
}); });
...@@ -102,14 +110,14 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa ...@@ -102,14 +110,14 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
} }
private HttpStatus getHttpStatus(ResponseEntity<?> responseEntity) { private HttpStatus getHttpStatus(ResponseEntity<?> responseEntity) {
if(responseEntity == null) { if (responseEntity == null) {
return HttpStatus.OK; return HttpStatus.OK;
} }
return responseEntity.getStatusCode(); return responseEntity.getStatusCode();
} }
private HttpHeaders getHttpHeaders(ResponseEntity<?> responseEntity) { private HttpHeaders getHttpHeaders(ResponseEntity<?> responseEntity) {
if(responseEntity == null) { if (responseEntity == null) {
return new HttpHeaders(); return new HttpHeaders();
} }
return responseEntity.getHeaders(); return responseEntity.getHeaders();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment