Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
78167ee
minor logging fix
Doha2012 May 17, 2017
a0109b8
Merge remote-tracking branch 'eugenp/master'
Doha2012 May 26, 2017
29ae32c
spring security sso
Doha2012 May 28, 2017
319dcf1
use basic auth
Doha2012 May 28, 2017
f2cd332
use form login
Doha2012 May 29, 2017
62de239
cleanup
Doha2012 May 29, 2017
70da443
cleanup
Doha2012 May 29, 2017
ec5d571
final cleanup
Doha2012 May 29, 2017
646a0d9
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 1, 2017
dfffb6c
second client app for sso
Doha2012 Jun 1, 2017
f443c98
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 2, 2017
352ae48
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 7, 2017
0d9e135
spring boot bootstrap
Doha2012 Jun 8, 2017
0a03321
add logic
Doha2012 Jun 8, 2017
aaa12b4
cleanup
Doha2012 Jun 9, 2017
58b6b20
add simple controller
Doha2012 Jun 10, 2017
2df2da3
add thymeleaf and security
Doha2012 Jun 10, 2017
e71953f
minor fix
Doha2012 Jun 11, 2017
6e96ad7
minor fix
Doha2012 Jun 11, 2017
510d9d0
add more boot properties
Doha2012 Jun 12, 2017
a71fed1
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 23, 2017
1513383
fix live test
Doha2012 Jun 24, 2017
fc7bbd5
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 24, 2017
0759142
fix live test
Doha2012 Jun 26, 2017
d547422
minor fix
Doha2012 Jun 26, 2017
6c566a3
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jun 30, 2017
3fa1020
semaphores
Doha2012 Jul 3, 2017
4ff2739
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 3, 2017
304e5e2
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 3, 2017
7e655e8
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 7, 2017
8477655
fix configuration
Doha2012 Jul 7, 2017
cc14118
kotlin collection
Doha2012 Jul 9, 2017
554fa14
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 9, 2017
93b5f1f
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 9, 2017
056d395
add more collection examples
Doha2012 Jul 9, 2017
3936f64
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 11, 2017
2c7b703
minor upgrade
Doha2012 Jul 14, 2017
9b04838
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 21, 2017
452dafa
cucumber java8
Doha2012 Jul 22, 2017
6bb84c5
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 29, 2017
5860d9d
minor fix
Doha2012 Jul 29, 2017
5529738
Merge remote-tracking branch 'eugenp/master'
Doha2012 Jul 30, 2017
060e6be
rxjava custom operator
Doha2012 Aug 1, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions rxjava/src/main/java/com/baelding/rxjava/operator/cleanString.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.baelding.rxjava.operator;

import rx.Observable.Operator;
import rx.Subscriber;

public class cleanString implements Operator<String, String> {

public cleanString() {
super();
}

@Override
public Subscriber<? super String> call(final Subscriber<? super String> subscriber) {
return new Subscriber<String>(subscriber) {
@Override
public void onCompleted() {
if (!subscriber.isUnsubscribed()) {
subscriber.onCompleted();
}
}

@Override
public void onError(Throwable t) {
if (!subscriber.isUnsubscribed()) {
subscriber.onError(t);
}
}

@Override
public void onNext(String item) {
if (!subscriber.isUnsubscribed()) {
final String result = item.replaceAll("[^A-Za-z0-9]", "");
subscriber.onNext(result);
}
}
};
}

}
22 changes: 22 additions & 0 deletions rxjava/src/main/java/com/baelding/rxjava/operator/toLength.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.baelding.rxjava.operator;

import rx.Observable;
import rx.Observable.Transformer;
import rx.functions.Func1;

public class toLength implements Transformer<String, Integer> {
public toLength() {
super();
}

@Override
public Observable<Integer> call(Observable<String> source) {

return source.map(new Func1<String, Integer>() {
@Override
public Integer call(String str) {
return str.length();
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.baeldung.rxjava;

import static org.hamcrest.Matchers.hasItems;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

import rx.Observable;
import rx.Observable.Operator;
import rx.Observable.Transformer;
import rx.Subscriber;
import rx.functions.Func1;

import com.baelding.rxjava.operator.cleanString;
import com.baelding.rxjava.operator.toLength;

public class RxJavaCustomOperatorUnitTest {

@Test
public void whenUseCleanStringOperator_thenSuccess() {
final List<String> list = Arrays.asList("john_1", "tom-3");
final List<String> results = new ArrayList<String>();

final Observable<String> observable = Observable.from(list)
.lift(new cleanString());

// when
observable.subscribe(results::add);

// then
assertThat(results, notNullValue());
assertThat(results, hasSize(2));
assertThat(results, hasItems("john1", "tom3"));
}

@Test
public void whenUseToLengthOperator_thenSuccess() {
final List<String> list = Arrays.asList("john", "tom");
final List<Integer> results = new ArrayList<Integer>();

final Observable<Integer> observable = Observable.from(list)
.compose(new toLength());

// when
observable.subscribe(results::add);

// then
assertThat(results, notNullValue());
assertThat(results, hasSize(2));
assertThat(results, hasItems(4, 3));
}

@Test
public void whenUseFunctionOperator_thenSuccess() {
final Operator<String, String> cleanStringFn = subscriber -> {
return new Subscriber<String>(subscriber) {
@Override
public void onCompleted() {
if (!subscriber.isUnsubscribed()) {
subscriber.onCompleted();
}
}

@Override
public void onError(Throwable t) {
if (!subscriber.isUnsubscribed()) {
subscriber.onError(t);
}
}

@Override
public void onNext(String str) {
if (!subscriber.isUnsubscribed()) {
final String result = str.replaceAll("[^A-Za-z0-9]", "");
subscriber.onNext(result);
}
}
};
};

final List<String> results = new ArrayList<String>();
Observable.from(Arrays.asList("ap_p-l@e", "or-an?ge"))
.lift(cleanStringFn)
.subscribe(results::add);

assertThat(results, notNullValue());
assertThat(results, hasSize(2));
assertThat(results, hasItems("apple", "orange"));
}

@Test
public void whenUseFunctionTransformer_thenSuccess() {
final Transformer<String, Integer> toLengthFn = source -> {
return source.map(new Func1<String, Integer>() {
@Override
public Integer call(String str) {
return str.length();
}
});
};

final List<Integer> results = new ArrayList<Integer>();
Observable.from(Arrays.asList("apple", "orange"))
.compose(toLengthFn)
.subscribe(results::add);

assertThat(results, notNullValue());
assertThat(results, hasSize(2));
assertThat(results, hasItems(5, 6));
}
}