Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
spring-cloud-netflix
Commits
9ad3d21b
Commit
9ad3d21b
authored
May 03, 2016
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tidy up more compiler warnings for generics
parent
1c9d11de
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
65 additions
and
60 deletions
+65
-60
ObservableSseEmitter.java
...pringframework/cloud/netflix/rx/ObservableSseEmitter.java
+12
-12
SingleDeferredResult.java
...pringframework/cloud/netflix/rx/SingleDeferredResult.java
+12
-15
SingleReturnValueHandler.java
...gframework/cloud/netflix/rx/SingleReturnValueHandler.java
+41
-33
No files found.
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/rx/ObservableSseEmitter.java
View file @
9ad3d21b
...
...
@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.rx;
import
org.springframework.http.MediaType
;
import
org.springframework.web.servlet.mvc.method.annotation.SseEmitter
;
import
rx.Observable
;
/**
...
...
@@ -28,18 +29,17 @@ import rx.Observable;
*/
class
ObservableSseEmitter
<
T
>
extends
SseEmitter
{
private
final
ResponseBodyEmitterSubscriber
<
T
>
subscriber
;
public
ObservableSseEmitter
(
Observable
<
T
>
observable
)
{
this
(
null
,
observable
);
}
public
ObservableSseEmitter
(
Observable
<
T
>
observable
)
{
this
(
null
,
observable
);
}
public
ObservableSseEmitter
(
MediaType
mediaType
,
Observable
<
T
>
observable
)
{
this
(
null
,
mediaType
,
observable
);
}
public
ObservableSseEmitter
(
MediaType
mediaType
,
Observable
<
T
>
observable
)
{
this
(
null
,
mediaType
,
observable
);
}
public
ObservableSseEmitter
(
Long
timeout
,
MediaType
mediaType
,
Observable
<
T
>
observable
)
{
super
(
timeout
);
this
.
subscriber
=
new
ResponseBodyEmitterSubscriber
<>(
mediaType
,
observable
,
this
);
}
public
ObservableSseEmitter
(
Long
timeout
,
MediaType
mediaType
,
Observable
<
T
>
observable
)
{
super
(
timeout
);
new
ResponseBodyEmitterSubscriber
<>(
mediaType
,
observable
,
this
);
}
}
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/rx/SingleDeferredResult.java
View file @
9ad3d21b
...
...
@@ -29,22 +29,19 @@ import rx.Single;
*/
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
)
{
this
(
null
,
EMPTY_RESULT
,
single
);
}
public
SingleDeferredResult
(
Single
<
T
>
single
)
{
this
(
null
,
EMPTY_RESULT
,
single
);
}
public
SingleDeferredResult
(
long
timeout
,
Single
<
T
>
single
)
{
this
(
timeout
,
EMPTY_RESULT
,
single
);
}
public
SingleDeferredResult
(
long
timeout
,
Single
<
T
>
single
)
{
this
(
timeout
,
EMPTY_RESULT
,
single
);
}
public
SingleDeferredResult
(
Long
timeout
,
Object
timeoutResult
,
Single
<
T
>
single
)
{
super
(
timeout
,
timeoutResult
);
Assert
.
notNull
(
single
,
"single can not be null"
);
subscriber
=
new
DeferredResultSubscriber
<>(
single
.
toObservable
(),
this
);
}
public
SingleDeferredResult
(
Long
timeout
,
Object
timeoutResult
,
Single
<
T
>
single
)
{
super
(
timeout
,
timeoutResult
);
Assert
.
notNull
(
single
,
"single can not be null"
);
new
DeferredResultSubscriber
<>(
single
.
toObservable
(),
this
);
}
}
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/rx/SingleReturnValueHandler.java
View file @
9ad3d21b
...
...
@@ -31,42 +31,46 @@ import rx.Single;
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 Jakub Narloch
*/
public
class
SingleReturnValueHandler
implements
AsyncHandlerMethodReturnValueHandler
{
@Override
public
boolean
isAsyncReturnValue
(
Object
returnValue
,
MethodParameter
returnType
)
{
return
returnValue
!=
null
&&
supportsReturnType
(
returnType
);
}
@Override
public
boolean
isAsyncReturnValue
(
Object
returnValue
,
MethodParameter
returnType
)
{
return
returnValue
!=
null
&&
supportsReturnType
(
returnType
);
}
@Override
public
boolean
supportsReturnType
(
MethodParameter
returnType
)
{
return
Single
.
class
.
isAssignableFrom
(
returnType
.
getParameterType
())
||
isResponseEntity
(
returnType
);
}
@Override
public
boolean
supportsReturnType
(
MethodParameter
returnType
)
{
return
Single
.
class
.
isAssignableFrom
(
returnType
.
getParameterType
())
||
isResponseEntity
(
returnType
);
}
private
boolean
isResponseEntity
(
MethodParameter
returnType
)
{
if
(
ResponseEntity
.
class
.
isAssignableFrom
(
returnType
.
getParameterType
()))
{
Class
<?>
bodyType
=
ResolvableType
.
forMethodParameter
(
returnType
).
getGeneric
(
0
).
resolve
();
if
(
ResponseEntity
.
class
.
isAssignableFrom
(
returnType
.
getParameterType
()))
{
Class
<?>
bodyType
=
ResolvableType
.
forMethodParameter
(
returnType
)
.
getGeneric
(
0
).
resolve
();
return
bodyType
!=
null
&&
Single
.
class
.
isAssignableFrom
(
bodyType
);
}
return
false
;
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
void
handleReturnValue
(
Object
returnValue
,
MethodParameter
returnType
,
ModelAndViewContainer
mavContainer
,
NativeWebRequest
webRequest
)
throws
Exception
{
@Override
public
void
handleReturnValue
(
Object
returnValue
,
MethodParameter
returnType
,
ModelAndViewContainer
mavContainer
,
NativeWebRequest
webRequest
)
throws
Exception
{
if
(
returnValue
==
null
)
{
mavContainer
.
setRequestHandled
(
true
);
return
;
}
if
(
returnValue
==
null
)
{
mavContainer
.
setRequestHandled
(
true
);
return
;
}
ResponseEntity
<
Single
<?>>
responseEntity
=
getResponseEntity
(
returnValue
);
if
(
responseEntity
!=
null
)
{
if
(
responseEntity
!=
null
)
{
returnValue
=
responseEntity
.
getBody
();
if
(
returnValue
==
null
)
{
mavContainer
.
setRequestHandled
(
true
);
...
...
@@ -74,10 +78,10 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
}
}
final
Single
<?>
single
=
Single
.
class
.
cast
(
returnValue
);
WebAsyncUtils
.
getAsyncManager
(
webRequest
)
.
startDeferredResultProcessing
(
convertToDeferredResult
(
responseEntity
,
single
),
mavContainer
);
}
final
Single
<?>
single
=
Single
.
class
.
cast
(
returnValue
);
WebAsyncUtils
.
getAsyncManager
(
webRequest
).
startDeferredResultProcessing
(
convertToDeferredResult
(
responseEntity
,
single
),
mavContainer
);
}
@SuppressWarnings
(
"unchecked"
)
private
ResponseEntity
<
Single
<?>>
getResponseEntity
(
Object
returnValue
)
{
...
...
@@ -88,28 +92,32 @@ public class SingleReturnValueHandler implements AsyncHandlerMethodReturnValueHa
return
null
;
}
protected
DeferredResult
<?>
convertToDeferredResult
(
final
ResponseEntity
<
Single
<?>>
responseEntity
,
Single
<?>
single
)
{
protected
DeferredResult
<?>
convertToDeferredResult
(
final
ResponseEntity
<
Single
<?>>
responseEntity
,
Single
<?>
single
)
{
//TODO: fix when java8 :-)
Single
<
ResponseEntity
>
singleResponse
=
single
.
map
(
new
Func1
<
Object
,
ResponseEntity
>()
{
@Override
public
ResponseEntity
call
(
Object
object
)
{
return
new
ResponseEntity
<>(
object
,
getHttpHeaders
(
responseEntity
),
getHttpStatus
(
responseEntity
));
}
});
// TODO: use lambda when java8 :-)
Single
<
ResponseEntity
<?>>
singleResponse
=
single
.
map
(
new
Func1
<
Object
,
ResponseEntity
<?>>()
{
@Override
public
ResponseEntity
<?>
call
(
Object
object
)
{
return
new
ResponseEntity
<
Object
>(
object
,
getHttpHeaders
(
responseEntity
),
getHttpStatus
(
responseEntity
));
}
});
return
new
SingleDeferredResult
<>(
singleResponse
);
}
private
HttpStatus
getHttpStatus
(
ResponseEntity
<?>
responseEntity
)
{
if
(
responseEntity
==
null
)
{
if
(
responseEntity
==
null
)
{
return
HttpStatus
.
OK
;
}
return
responseEntity
.
getStatusCode
();
}
private
HttpHeaders
getHttpHeaders
(
ResponseEntity
<?>
responseEntity
)
{
if
(
responseEntity
==
null
)
{
if
(
responseEntity
==
null
)
{
return
new
HttpHeaders
();
}
return
responseEntity
.
getHeaders
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment