diff options
author | Alex Shpak <alex-shpak@users.noreply.github.com> | 2018-09-30 01:31:24 +0200 |
---|---|---|
committer | Alex Shpak <alex-shpak@users.noreply.github.com> | 2018-09-30 01:31:24 +0200 |
commit | 5b7db23aaacbb08a8242b1a77bd39bc19139526c (patch) | |
tree | b36f8ab16b89f1ae475db883f3f91b2a0a6837b8 /exampleSite/content/docs/rx-jersey-server.md | |
parent | 7a6ab6d72496a07e42aa03242891b6d815b26b0d (diff) |
Add exampleSite
Diffstat (limited to 'exampleSite/content/docs/rx-jersey-server.md')
-rw-r--r-- | exampleSite/content/docs/rx-jersey-server.md | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/exampleSite/content/docs/rx-jersey-server.md b/exampleSite/content/docs/rx-jersey-server.md new file mode 100644 index 0000000..105e581 --- /dev/null +++ b/exampleSite/content/docs/rx-jersey-server.md @@ -0,0 +1,64 @@ +## Jersey Server +Register `RxJerseyServerFeature` in `resourceConfig` +```java +resourceConfig.register(RxJerseyServerFeature.class); +``` +Or with configuration +```java +RxJerseyServerFeature rxJerseyServerFeature = new RxJerseyServerFeature() + .register(AuthInterceptor.class); + +resourceConfig.register(rxJerseyServerFeature); +``` + +Update your resource adding rx return type: +```java +@Path("/") +public class HelloResource { + + @GET + public Single<HelloEntity> getAsync() { + return Single.just(new HelloEntity()); + } + + + public static class HelloEntity { + public String hello = "world"; + } +} +``` + +## Inteceptor +You can use RxJava enabled interceptors. Result of such interceptor will be ignored. Thrown or returned error would be redirected to jersey. + +#### RxJava +```java +public class SimpleInterceptor implements ObservableRequestInterceptor<Void> { + public Observable<Void> intercept(ContainerRequestContext requestContext) { + return Observable.empty(); + } +} +``` + +#### RxJava 2 +```java +public class SimpleInterceptor implements CompletableRequestInterceptor { + public Completable intercept(ContainerRequestContext requestContext) { + return Observable.complete(); + } +} +``` + + +## Important notes +#### RxJava + - It's recommended to use `rx.Single` as return type (Representing single response entity). + - Multiple elements emitted in `Observable` will be treated as error. + - Empty `Observable` or `null` value in `Observable` or `Single` will be treated as `204: No content`. + - `Completable` will be executed and `204: No content` will be returned. + +#### RxJava 2 + - It's recommended to use `io.reactivex.Maybe` which could be 0 or 1 item or an error. + - Multiple elements emitted in `Observable` or `Flowable` will be treated as error. + - Empty `Observable`/`Maybe` will be treated as `204: No content`. + - `Completable` will be executed and `204: No content` will be returned. |