├── .gitignore
├── LICENSE
├── rxjava-samples
├── .editorconfig
├── pom.xml
└── src
│ └── main
│ └── java
│ └── samples
│ ├── RxCreateObservable.java
│ ├── RxHello.java
│ ├── RxMerge.java
│ └── RxThreading.java
└── vertx-samples
├── .editorconfig
├── pom.xml
└── src
└── main
├── java
└── samples
│ ├── BestOfferServiceVerticle.java
│ ├── BiddingServiceVerticle.java
│ ├── HttpApplication.java
│ ├── MainVerticle.java
│ ├── RXTwitterFeedApplication.java
│ └── TwitterFeedApplication.java
└── resources
└── logback.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | # Maven
2 | target/
3 |
4 | # Compiled class file
5 | *.class
6 |
7 | # Log file
8 | *.log
9 |
10 | # BlueJ files
11 | *.ctxt
12 |
13 | # Mobile Tools for Java (J2ME)
14 | .mtj.tmp/
15 |
16 | # IntelliJ
17 | .idea/
18 | *.iml
19 |
20 | # Package Files #
21 | *.jar
22 | *.war
23 | *.ear
24 | *.zip
25 | *.tar.gz
26 | *.rar
27 |
28 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
29 | hs_err_pid*
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Clément Escoffier, Julien Ponge
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/rxjava-samples/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | trim_trailing_whitespace = true
8 | end_of_line = lf
9 | insert_final_newline = true
10 |
--------------------------------------------------------------------------------
/rxjava-samples/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | io.github.jponge.javamag-rxjava-vertx
8 | rxjava-samples
9 | 1.0-SNAPSHOT
10 |
11 |
12 | UTF-8
13 |
14 |
15 |
16 |
17 | io.reactivex.rxjava2
18 | rxjava
19 | 2.1.6
20 |
21 |
22 | ch.qos.logback
23 | logback-classic
24 | 1.2.3
25 |
26 |
27 |
28 |
29 |
30 |
31 | org.apache.maven.plugins
32 | maven-compiler-plugin
33 | 3.7.0
34 |
35 | 1.8
36 | 1.8
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/rxjava-samples/src/main/java/samples/RxCreateObservable.java:
--------------------------------------------------------------------------------
1 | package samples;
2 |
3 | import io.reactivex.Observable;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | import java.util.Arrays;
8 | import java.util.List;
9 | import java.util.Random;
10 |
11 | /**
12 | * @author Julien Ponge
13 | */
14 | public class RxCreateObservable {
15 |
16 | private static final Logger logger = LoggerFactory.getLogger(RxCreateObservable.class);
17 |
18 | public static void main(String[] args) {
19 |
20 | List data = Arrays.asList("foo", "bar", "baz");
21 | Random random = new Random();
22 | Observable source = Observable.create(subscriber -> {
23 | for (String s : data) {
24 | if (random.nextInt(6) == 0) {
25 | subscriber.onError(new RuntimeException("Bad luck for you..."));
26 | }
27 | subscriber.onNext(s);
28 | }
29 | subscriber.onComplete();
30 | });
31 |
32 | for (int i = 0; i < 10; i++) {
33 | logger.info("=======================================");
34 | source.subscribe(next -> logger.info("Next: {}", next),
35 | error -> logger.error("Whoops"),
36 | () -> logger.info("Done"));
37 | }
38 |
39 | logger.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
40 | source
41 | .retry(5)
42 | .subscribe(next -> logger.info("Next: {}", next),
43 | error -> logger.error("Whoops"),
44 | () -> logger.info("Done"));
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/rxjava-samples/src/main/java/samples/RxHello.java:
--------------------------------------------------------------------------------
1 | package samples;
2 |
3 | import io.reactivex.Completable;
4 | import io.reactivex.Flowable;
5 | import io.reactivex.Maybe;
6 | import io.reactivex.Single;
7 | import io.reactivex.functions.Consumer;
8 | import org.slf4j.Logger;
9 | import org.slf4j.LoggerFactory;
10 |
11 | /**
12 | * @author Julien Ponge
13 | */
14 | public class RxHello {
15 |
16 | private static final Logger logger = LoggerFactory.getLogger(RxHello.class);
17 |
18 | public static void main(String[] args) {
19 |
20 | Single.just(1)
21 | .map(i -> i * 10)
22 | .map(Object::toString)
23 | .subscribe((Consumer) logger::info);
24 |
25 | Maybe.just("Something")
26 | .subscribe(logger::info);
27 |
28 | Maybe.never()
29 | .subscribe(o -> logger.info("Something is here..."));
30 |
31 | Completable.complete()
32 | .subscribe(() -> logger.info("Completed"));
33 |
34 | Flowable.just("foo", "bar", "baz")
35 | .filter(s -> s.startsWith("b"))
36 | .map(String::toUpperCase)
37 | .subscribe(logger::info);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/rxjava-samples/src/main/java/samples/RxMerge.java:
--------------------------------------------------------------------------------
1 | package samples;
2 |
3 | import io.reactivex.Flowable;
4 | import io.reactivex.schedulers.Schedulers;
5 | import org.slf4j.Logger;
6 | import org.slf4j.LoggerFactory;
7 |
8 | import java.util.UUID;
9 | import java.util.concurrent.TimeUnit;
10 |
11 | /**
12 | * @author Julien Ponge
13 | */
14 | public class RxMerge {
15 |
16 | private static final Logger logger = LoggerFactory.getLogger(RxMerge.class);
17 |
18 | public static void main(String[] args) throws InterruptedException {
19 |
20 | Flowable intervals = Flowable
21 | .interval(100, TimeUnit.MILLISECONDS, Schedulers.computation())
22 | .limit(10)
23 | .map(tick -> "Tick #" + tick)
24 | .subscribeOn(Schedulers.computation());
25 |
26 | Flowable strings = Flowable.just("abc", "def", "ghi", "jkl")
27 | .subscribeOn(Schedulers.computation());
28 |
29 | Flowable