-
Notifications
You must be signed in to change notification settings - Fork 129
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support for different types of UseCases (Fix #18)
- Loading branch information
Saeed Masoumi
committed
May 29, 2017
1 parent
60c7e94
commit 06d319b
Showing
4 changed files
with
127 additions
and
0 deletions.
There are no files selected for viewing
40 changes: 40 additions & 0 deletions
40
easymvp-rx2-api/src/main/java/easymvp/usecase/FlowableUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package easymvp.usecase; | ||
|
||
import javax.annotation.Nullable; | ||
|
||
import easymvp.executer.PostExecutionThread; | ||
import easymvp.executer.UseCaseExecutor; | ||
import io.reactivex.Flowable; | ||
import io.reactivex.FlowableTransformer; | ||
|
||
/** | ||
* @author Saeed Masoumi (s-masoumi@live.com) | ||
*/ | ||
|
||
public abstract class FlowableUseCase<R, Q> extends UseCase<Flowable, Q> { | ||
private final FlowableTransformer<? super R, ? extends R> schedulersTransformer; | ||
|
||
public FlowableUseCase(final UseCaseExecutor useCaseExecutor, | ||
final PostExecutionThread postExecutionThread) { | ||
super(useCaseExecutor, postExecutionThread); | ||
schedulersTransformer = new FlowableTransformer<R, R>() { | ||
@Override | ||
public Flowable<R> apply(Flowable<R> rObservable) { | ||
return rObservable.subscribeOn(useCaseExecutor.getScheduler()) | ||
.observeOn(postExecutionThread.getScheduler()); | ||
} | ||
}; | ||
} | ||
|
||
@Override | ||
public Flowable<R> execute(@Nullable Q param) { | ||
return interact(param).compose(getSchedulersTransformer()); | ||
} | ||
|
||
@Override | ||
protected abstract Flowable<R> interact(@Nullable Q param); | ||
|
||
private FlowableTransformer<? super R, ? extends R> getSchedulersTransformer() { | ||
return schedulersTransformer; | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
easymvp-rx2-api/src/main/java/easymvp/usecase/MaybeUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package easymvp.usecase; | ||
|
||
import javax.annotation.Nullable; | ||
|
||
import easymvp.executer.PostExecutionThread; | ||
import easymvp.executer.UseCaseExecutor; | ||
import io.reactivex.Maybe; | ||
import io.reactivex.MaybeTransformer; | ||
|
||
/** | ||
* @author Saeed Masoumi (s-masoumi@live.com) | ||
*/ | ||
|
||
public abstract class MaybeUseCase<R, Q> extends UseCase<Maybe, Q> { | ||
private final MaybeTransformer<? super R, ? extends R> schedulersTransformer; | ||
|
||
public MaybeUseCase(final UseCaseExecutor useCaseExecutor, | ||
final PostExecutionThread postExecutionThread) { | ||
super(useCaseExecutor, postExecutionThread); | ||
schedulersTransformer = new MaybeTransformer<R, R>() { | ||
@Override | ||
public Maybe<R> apply(Maybe<R> single) { | ||
return single.subscribeOn(useCaseExecutor.getScheduler()) | ||
.observeOn(postExecutionThread.getScheduler()); | ||
} | ||
}; | ||
} | ||
|
||
@Override | ||
public Maybe execute(@Nullable Q param) { | ||
return interact(param).compose(getSchedulersTransformer()); | ||
} | ||
|
||
@Override | ||
protected abstract Maybe<R> interact(@Nullable Q param); | ||
|
||
private MaybeTransformer<? super R, ? extends R> getSchedulersTransformer() { | ||
return schedulersTransformer; | ||
} | ||
} |
39 changes: 39 additions & 0 deletions
39
easymvp-rx2-api/src/main/java/easymvp/usecase/SingleUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package easymvp.usecase; | ||
|
||
import easymvp.executer.PostExecutionThread; | ||
import easymvp.executer.UseCaseExecutor; | ||
import io.reactivex.Single; | ||
import io.reactivex.SingleTransformer; | ||
import io.reactivex.annotations.Nullable; | ||
|
||
/** | ||
* @author Saeed Masoumi (s-masoumi@live.com) | ||
*/ | ||
|
||
public abstract class SingleUseCase<R, Q> extends UseCase<Single, Q> { | ||
private final SingleTransformer<? super R, ? extends R> schedulersTransformer; | ||
|
||
public SingleUseCase(final UseCaseExecutor useCaseExecutor, | ||
final PostExecutionThread postExecutionThread) { | ||
super(useCaseExecutor, postExecutionThread); | ||
schedulersTransformer = new SingleTransformer<R, R>() { | ||
@Override | ||
public Single<R> apply(Single<R> single) { | ||
return single.subscribeOn(useCaseExecutor.getScheduler()) | ||
.observeOn(postExecutionThread.getScheduler()); | ||
} | ||
}; | ||
} | ||
|
||
@Override | ||
public Single<R> execute(@Nullable Q param) { | ||
return interact(param).compose(getSchedulersTransformer()); | ||
} | ||
|
||
@Override | ||
protected abstract Single<R> interact(@Nullable Q param); | ||
|
||
private SingleTransformer<? super R, ? extends R> getSchedulersTransformer() { | ||
return schedulersTransformer; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters