├── .gitattributes
├── .github
├── dependabot.yml
└── workflows
│ ├── gradle-wrapper-validation.yml
│ └── gradle.yml
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── build.gradle
├── config
├── checkstyle
│ ├── checkstyle.xml
│ └── suppressions.xml
└── license
│ ├── HEADER
│ └── HEADER_JAVA
├── gradle.properties
├── gradle
├── stylesheet.css
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── pmd.xml
├── push.sh
├── settings.gradle
└── src
├── jmh
└── java
│ └── hu
│ └── akarnokd
│ └── rxjava3
│ ├── ExamplePerf.java
│ ├── FlatMapExPerf.java
│ ├── PerfAsyncConsumer.java
│ └── PerfConsumer.java
├── main
└── java
│ └── hu
│ └── akarnokd
│ └── rxjava3
│ ├── async
│ ├── AnyValue.java
│ ├── AsyncFlowable.java
│ ├── AsyncObservable.java
│ ├── DisposableFlowable.java
│ ├── DisposableObservable.java
│ ├── FlowableFromCallableNull.java
│ ├── FutureCompletable.java
│ ├── ObservableFromSupplierNull.java
│ └── package-info.java
│ ├── basetypes
│ ├── BasicEmptyQueueSubscription.java
│ ├── BasicNonoIntQueueSubscription.java
│ ├── BasicNonoSubscriber.java
│ ├── BasicRefNonoSubscriber.java
│ ├── BasicRefQueueSubscription.java
│ ├── BasicSoloQueueSubscription.java
│ ├── BlockingGetSubscriber.java
│ ├── FuturePerhapsSubscriber.java
│ ├── Nono.java
│ ├── NonoAmbArray.java
│ ├── NonoAmbIterable.java
│ ├── NonoAndThen.java
│ ├── NonoAndThenPublisher.java
│ ├── NonoBlockingAwaitSubscriber.java
│ ├── NonoCache.java
│ ├── NonoComplete.java
│ ├── NonoConcat.java
│ ├── NonoConcatArray.java
│ ├── NonoConcatIterable.java
│ ├── NonoCreate.java
│ ├── NonoDefer.java
│ ├── NonoDelay.java
│ ├── NonoDelaySubscription.java
│ ├── NonoDoFinally.java
│ ├── NonoDoOnLifecycle.java
│ ├── NonoError.java
│ ├── NonoErrorSupplier.java
│ ├── NonoFlatMapSignal.java
│ ├── NonoFromAction.java
│ ├── NonoFromCompletable.java
│ ├── NonoFromFuture.java
│ ├── NonoFromMaybe.java
│ ├── NonoFromObservable.java
│ ├── NonoFromPublisher.java
│ ├── NonoFromSingle.java
│ ├── NonoHide.java
│ ├── NonoLambdaSubscriber.java
│ ├── NonoLift.java
│ ├── NonoMapError.java
│ ├── NonoMerge.java
│ ├── NonoMergeArray.java
│ ├── NonoMergeIterable.java
│ ├── NonoNever.java
│ ├── NonoObserveOn.java
│ ├── NonoOnErrorComplete.java
│ ├── NonoOnErrorResume.java
│ ├── NonoProcessor.java
│ ├── NonoRepeat.java
│ ├── NonoRepeatUntil.java
│ ├── NonoRepeatWhen.java
│ ├── NonoRetry.java
│ ├── NonoRetryWhen.java
│ ├── NonoRetryWhile.java
│ ├── NonoSubscribeOn.java
│ ├── NonoTakeUntil.java
│ ├── NonoTimeout.java
│ ├── NonoTimer.java
│ ├── NonoToMaybe.java
│ ├── NonoToPerhaps.java
│ ├── NonoUnsubscribeOn.java
│ ├── NonoUsing.java
│ ├── Perhaps.java
│ ├── PerhapsAmbArray.java
│ ├── PerhapsAmbIterable.java
│ ├── PerhapsAndThenNono.java
│ ├── PerhapsCache.java
│ ├── PerhapsCreate.java
│ ├── PerhapsDefaultIfEmpty.java
│ ├── PerhapsDefer.java
│ ├── PerhapsDelay.java
│ ├── PerhapsDelayPublisher.java
│ ├── PerhapsDelaySubscription.java
│ ├── PerhapsDoFinally.java
│ ├── PerhapsDoOnLifecycle.java
│ ├── PerhapsEmpty.java
│ ├── PerhapsError.java
│ ├── PerhapsErrorSupplier.java
│ ├── PerhapsFilter.java
│ ├── PerhapsFlatMap.java
│ ├── PerhapsFlatMapPublisher.java
│ ├── PerhapsFlatMapSignal.java
│ ├── PerhapsFromAction.java
│ ├── PerhapsFromCallable.java
│ ├── PerhapsFromCompletable.java
│ ├── PerhapsFromFuture.java
│ ├── PerhapsFromMaybe.java
│ ├── PerhapsFromPublisher.java
│ ├── PerhapsFromSingle.java
│ ├── PerhapsHide.java
│ ├── PerhapsJust.java
│ ├── PerhapsLift.java
│ ├── PerhapsMap.java
│ ├── PerhapsMapError.java
│ ├── PerhapsNever.java
│ ├── PerhapsObserveOn.java
│ ├── PerhapsOnErrorResumeNext.java
│ ├── PerhapsOnErrorResumeWith.java
│ ├── PerhapsOnErrorReturnItem.java
│ ├── PerhapsProcessor.java
│ ├── PerhapsRetry.java
│ ├── PerhapsRetryWhen.java
│ ├── PerhapsRetryWhile.java
│ ├── PerhapsSubscribeOn.java
│ ├── PerhapsSwitchIfEmpty.java
│ ├── PerhapsTakeUntil.java
│ ├── PerhapsTimeout.java
│ ├── PerhapsTimer.java
│ ├── PerhapsToFlowable.java
│ ├── PerhapsToMaybe.java
│ ├── PerhapsToObservable.java
│ ├── PerhapsUnsubscribeOn.java
│ ├── PerhapsUsing.java
│ ├── PerhapsZipArray.java
│ ├── PerhapsZipIterable.java
│ ├── Solo.java
│ ├── SoloAmbArray.java
│ ├── SoloAmbIterable.java
│ ├── SoloAndThen.java
│ ├── SoloCache.java
│ ├── SoloCreate.java
│ ├── SoloDefer.java
│ ├── SoloDelay.java
│ ├── SoloDelayPublisher.java
│ ├── SoloDelaySubscription.java
│ ├── SoloDoFinally.java
│ ├── SoloDoOnLifecycle.java
│ ├── SoloError.java
│ ├── SoloErrorSupplier.java
│ ├── SoloFilter.java
│ ├── SoloFlatMap.java
│ ├── SoloFlatMapPublisher.java
│ ├── SoloFlatMapSignal.java
│ ├── SoloFromCallable.java
│ ├── SoloFromFuture.java
│ ├── SoloFromPublisher.java
│ ├── SoloFromSingle.java
│ ├── SoloHide.java
│ ├── SoloJust.java
│ ├── SoloLift.java
│ ├── SoloMap.java
│ ├── SoloMapError.java
│ ├── SoloNever.java
│ ├── SoloObserveOn.java
│ ├── SoloOnErrorResumeNext.java
│ ├── SoloOnErrorResumeWith.java
│ ├── SoloOnErrorReturnItem.java
│ ├── SoloProcessor.java
│ ├── SoloRetry.java
│ ├── SoloRetryWhen.java
│ ├── SoloRetryWhile.java
│ ├── SoloSubscribeOn.java
│ ├── SoloTakeUntil.java
│ ├── SoloTimeout.java
│ ├── SoloTimer.java
│ ├── SoloToFlowable.java
│ ├── SoloToObservable.java
│ ├── SoloToSingle.java
│ ├── SoloUnsubscribeOn.java
│ ├── SoloUsing.java
│ ├── SoloZipArray.java
│ ├── SoloZipIterable.java
│ └── package-info.java
│ ├── consumers
│ ├── AbstractDisposableAutoRelease.java
│ ├── CompletableConsumers.java
│ ├── DisposableAutoReleaseMultiObserver.java
│ ├── DisposableAutoReleaseObserver.java
│ ├── DisposableAutoReleaseSubscriber.java
│ ├── FlowableConsumers.java
│ ├── MaybeConsumers.java
│ ├── ObservableConsumers.java
│ ├── SingleConsumers.java
│ └── package-info.java
│ ├── debug
│ ├── CompletableOnAssembly.java
│ ├── CompletableOnAssemblyScalarSupplier.java
│ ├── CompletableOnAssemblySupplier.java
│ ├── FlowableOnAssembly.java
│ ├── FlowableOnAssemblyConnectable.java
│ ├── FlowableOnAssemblyScalarSupplier.java
│ ├── FlowableOnAssemblySupplier.java
│ ├── MaybeOnAssembly.java
│ ├── MaybeOnAssemblyScalarSupplier.java
│ ├── MaybeOnAssemblySupplier.java
│ ├── ObservableOnAssembly.java
│ ├── ObservableOnAssemblyConnectable.java
│ ├── ObservableOnAssemblyScalarSupplier.java
│ ├── ObservableOnAssemblySupplier.java
│ ├── ParallelFlowableOnAssembly.java
│ ├── RxJavaAssemblyException.java
│ ├── RxJavaAssemblyTracking.java
│ ├── SavedHooks.java
│ ├── SingleOnAssembly.java
│ ├── SingleOnAssemblyScalarSupplier.java
│ ├── SingleOnAssemblySupplier.java
│ ├── multihook
│ │ ├── MultiHandlerManager.java
│ │ ├── OnScheduleMultiHandlerManager.java
│ │ └── package-info.java
│ ├── package-info.java
│ └── validator
│ │ ├── CompletableValidator.java
│ │ ├── ConnectableFlowableValidator.java
│ │ ├── ConnectableObservableValidator.java
│ │ ├── FlowableValidator.java
│ │ ├── MaybeValidator.java
│ │ ├── MultipleOnSubscribeCallsException.java
│ │ ├── MultipleTerminationsException.java
│ │ ├── NullOnErrorParameterException.java
│ │ ├── NullOnNextParameterException.java
│ │ ├── NullOnSubscribeParameterException.java
│ │ ├── NullOnSuccessParameterException.java
│ │ ├── ObservableValidator.java
│ │ ├── OnNextAfterTerminationException.java
│ │ ├── OnSubscribeNotCalledException.java
│ │ ├── OnSuccessAfterTerminationException.java
│ │ ├── ParallelFlowableValidator.java
│ │ ├── ProtocolNonConformanceException.java
│ │ ├── RxJavaProtocolValidator.java
│ │ ├── SingleValidator.java
│ │ └── package-info.java
│ ├── expr
│ ├── CompletableIfThen.java
│ ├── CompletableSwitchCase.java
│ ├── FlowableIfThen.java
│ ├── FlowableSwitchCase.java
│ ├── FlowableWhileDoWhile.java
│ ├── MaybeIfThen.java
│ ├── MaybeSwitchCase.java
│ ├── ObservableIfThen.java
│ ├── ObservableSwitchCase.java
│ ├── ObservableWhileDoWhile.java
│ ├── SingleIfThen.java
│ ├── SingleSwitchCase.java
│ ├── StatementCompletable.java
│ ├── StatementFlowable.java
│ ├── StatementMaybe.java
│ ├── StatementObservable.java
│ ├── StatementSingle.java
│ └── package-info.java
│ ├── functions
│ ├── Consumer3.java
│ ├── Consumer4.java
│ ├── Consumer5.java
│ ├── Consumer6.java
│ ├── Consumer7.java
│ ├── Consumer8.java
│ ├── Consumer9.java
│ ├── FunctionTagging.java
│ ├── FunctionsEx.java
│ ├── PlainBiConsumer.java
│ ├── PlainBiFunction.java
│ ├── PlainConsumer.java
│ ├── PlainFunction.java
│ ├── PlainFunction3.java
│ ├── PlainFunction4.java
│ ├── PlainFunction5.java
│ ├── PlainFunction6.java
│ ├── PlainFunction7.java
│ ├── PlainFunction8.java
│ ├── PlainFunction9.java
│ ├── SimpleCallable.java
│ └── package-info.java
│ ├── joins
│ ├── ActivePlan0.java
│ ├── ActivePlan1.java
│ ├── ActivePlan2.java
│ ├── ActivePlan3.java
│ ├── ActivePlan4.java
│ ├── ActivePlan5.java
│ ├── ActivePlan6.java
│ ├── ActivePlan7.java
│ ├── ActivePlan8.java
│ ├── ActivePlan9.java
│ ├── ActivePlanN.java
│ ├── JoinObservable.java
│ ├── JoinObserver.java
│ ├── JoinObserver1.java
│ ├── JoinPatterns.java
│ ├── Pattern1.java
│ ├── Pattern2.java
│ ├── Pattern3.java
│ ├── Pattern4.java
│ ├── Pattern5.java
│ ├── Pattern6.java
│ ├── Pattern7.java
│ ├── Pattern8.java
│ ├── Pattern9.java
│ ├── PatternN.java
│ ├── Plan.java
│ ├── Plan1.java
│ ├── Plan2.java
│ ├── Plan3.java
│ ├── Plan4.java
│ ├── Plan5.java
│ ├── Plan6.java
│ ├── Plan7.java
│ ├── Plan8.java
│ ├── Plan9.java
│ ├── PlanN.java
│ └── package-info.java
│ ├── math
│ ├── FlowableAverageDouble.java
│ ├── FlowableAverageFloat.java
│ ├── FlowableMinMax.java
│ ├── FlowableSource.java
│ ├── FlowableSumDouble.java
│ ├── FlowableSumFloat.java
│ ├── FlowableSumInt.java
│ ├── FlowableSumLong.java
│ ├── MathFlowable.java
│ ├── MathObservable.java
│ ├── ObservableAverageDouble.java
│ ├── ObservableAverageFloat.java
│ ├── ObservableMinMax.java
│ ├── ObservableSource.java
│ ├── ObservableSumDouble.java
│ ├── ObservableSumFloat.java
│ ├── ObservableSumInt.java
│ ├── ObservableSumLong.java
│ └── package-info.java
│ ├── operators
│ ├── BasicEmitter.java
│ ├── BasicMergeSubscription.java
│ ├── CompletableFlatMapSignalCompletable.java
│ ├── CompletableFlatMapSignalFlowable.java
│ ├── CompletableFlatMapSignalMaybe.java
│ ├── CompletableFlatMapSignalObservable.java
│ ├── CompletableFlatMapSignalSingle.java
│ ├── CompletableTransformers.java
│ ├── Completables.java
│ ├── ExpandStrategy.java
│ ├── FlowableAsyncEmitter.java
│ ├── FlowableBufferPredicate.java
│ ├── FlowableCacheLast.java
│ ├── FlowableCoalesce.java
│ ├── FlowableDebounceFirst.java
│ ├── FlowableErrorJump.java
│ ├── FlowableEvery.java
│ ├── FlowableExpand.java
│ ├── FlowableFilterAsync.java
│ ├── FlowableFlatMapAsync.java
│ ├── FlowableFlatMapSync.java
│ ├── FlowableGenerateAsync.java
│ ├── FlowableIndexOf.java
│ ├── FlowableIntervalBackpressure.java
│ ├── FlowableMapAsync.java
│ ├── FlowableMapFilter.java
│ ├── FlowableOnBackpressureTimeout.java
│ ├── FlowableOrderedMerge.java
│ ├── FlowablePartialCollect.java
│ ├── FlowableRepeatScalar.java
│ ├── FlowableRepeatSupplier.java
│ ├── FlowableRequestObserveOn.java
│ ├── FlowableRequestSample.java
│ ├── FlowableRequestSampleTime.java
│ ├── FlowableSpanout.java
│ ├── FlowableSwitchFlatMap.java
│ ├── FlowableSwitchIfEmptyMany.java
│ ├── FlowableSwitchIfEmptyManyArray.java
│ ├── FlowableSwitchOnFirst.java
│ ├── FlowableTimeoutLast.java
│ ├── FlowableTransformers.java
│ ├── FlowableValve.java
│ ├── FlowableWindowPredicate.java
│ ├── FlowableZipLatest.java
│ ├── Flowables.java
│ ├── MaybeFlatMapSignalCompletable.java
│ ├── MaybeFlatMapSignalFlowable.java
│ ├── MaybeFlatMapSignalMaybe.java
│ ├── MaybeFlatMapSignalObservable.java
│ ├── MaybeFlatMapSignalSingle.java
│ ├── MaybeTransformers.java
│ ├── Maybes.java
│ ├── ObservableErrorJump.java
│ ├── ObservableFilterAsync.java
│ ├── ObservableFlatMapDrop.java
│ ├── ObservableFlatMapLatest.java
│ ├── ObservableIndexOf.java
│ ├── ObservableMapAsync.java
│ ├── ObservableObserveOnDrop.java
│ ├── ObservableObserveOnLatest.java
│ ├── ObservableTransformers.java
│ ├── ObservableValve.java
│ ├── Observables.java
│ ├── PartialCollectEmitter.java
│ ├── SingleFlatMapSignalCompletable.java
│ ├── SingleFlatMapSignalFlowable.java
│ ├── SingleFlatMapSignalMaybe.java
│ ├── SingleFlatMapSignalObservable.java
│ ├── SingleFlatMapSignalSingle.java
│ ├── SingleTransformers.java
│ ├── Singles.java
│ └── package-info.java
│ ├── parallel
│ ├── ParallelOrderedMerge.java
│ ├── ParallelSumDouble.java
│ ├── ParallelSumInteger.java
│ ├── ParallelSumLong.java
│ ├── ParallelTransformers.java
│ └── package-info.java
│ ├── processors
│ ├── DispatchWorkProcessor.java
│ ├── FlowableProcessorWrap.java
│ ├── FlowableProcessors.java
│ ├── RefCountProcessor.java
│ └── package-info.java
│ ├── schedulers
│ ├── BlockingScheduler.java
│ ├── ParallelScheduler.java
│ ├── SharedScheduler.java
│ └── package-info.java
│ ├── string
│ ├── FlowableCharSequence.java
│ ├── FlowableSplit.java
│ ├── ObservableCharSequence.java
│ ├── StringFlowable.java
│ ├── StringObservable.java
│ └── package-info.java
│ ├── subjects
│ ├── DispatchWorkSubject.java
│ ├── RefCountSubject.java
│ ├── Subjects.java
│ ├── UnicastWorkSubject.java
│ └── package-info.java
│ └── util
│ ├── AlwaysFalseBooleanSupplier.java
│ ├── AlwaysTrueBooleanSupplier.java
│ ├── BiFunctionSecondIdentity.java
│ ├── CompositeSubscription.java
│ ├── SelfComparator.java
│ ├── SneakyThrows.java
│ ├── SpmcLinkedArrayQueue.java
│ ├── SpscOneQueue.java
│ └── package-info.java
└── test
└── java
└── hu
└── akarnokd
└── rxjava3
├── async
├── AsyncFlowableTest.java
└── AsyncObservableTest.java
├── basetypes
├── NonoProcessorTest.java
├── NonoTest.java
├── PerhapsTest.java
└── SoloTest.java
├── consumers
├── CompletableConsumersTest.java
├── FlowableConsumersTest.java
├── MaybeConsumersTest.java
├── ObservableConsumersTest.java
└── SingleConsumersTest.java
├── debug
├── RxJava3AssemblyTrackingTest.java
├── multihook
│ └── OnScheduleMultiHandlerManagerTest.java
└── validator
│ └── RxJavaProtocolValidatorTest.java
├── expr
├── StatementCompletableTest.java
├── StatementFlowableTest.java
├── StatementMaybeTest.java
├── StatementObservableTest.java
└── StatementSingleTest.java
├── functions
└── FunctionTaggingTest.java
├── joins
└── OperatorJoinsTest.java
├── math
├── MathFlowableTest.java
└── MathObservableTest.java
├── operators
├── CompletableFlatMapSignalCompletableTest.java
├── CompletableFlatMapSignalFlowableTest.java
├── CompletableFlatMapSignalMaybeTest.java
├── CompletableFlatMapSignalObservableTest.java
├── CompletableFlatMapSignalSingleTest.java
├── CompletableTransformersTest.java
├── CompletablesTest.java
├── FlowableBufferPredicateTest.java
├── FlowableCacheLastTest.java
├── FlowableCoalesceTest.java
├── FlowableDebounceFirstTest.java
├── FlowableErrorJumpTest.java
├── FlowableEveryTest.java
├── FlowableExpandTest.java
├── FlowableFilterAsyncTest.java
├── FlowableFlatMapAsyncTest.java
├── FlowableFlatMapSyncTest.java
├── FlowableGenerateAsyncTest.java
├── FlowableIndexOfTest.java
├── FlowableIntervalBackpressureTest.java
├── FlowableMapAsyncTest.java
├── FlowableMapFilterConditionalTest.java
├── FlowableMapFilterTest.java
├── FlowableOnBackpressureTimeoutTest.java
├── FlowableOrderedMergeTest.java
├── FlowablePartialCollectTest.java
├── FlowableRepeatCallableTest.java
├── FlowableRequestObserveOnTest.java
├── FlowableRequestSampleTest.java
├── FlowableRequestSampleTimeTest.java
├── FlowableSpanoutTest.java
├── FlowableSwitchFlatMapTest.java
├── FlowableSwitchIfEmptyManyArrayTest.java
├── FlowableSwitchIfEmptyManyTest.java
├── FlowableSwitchOnFirstTest.java
├── FlowableTimeoutLastTest.java
├── FlowableTransformersTest.java
├── FlowableValveTest.java
├── FlowableWindowPredicateTest.java
├── FlowableZipLatestTest.java
├── FlowablesTest.java
├── MaybeFlatMapSignalCompletableTest.java
├── MaybeFlatMapSignalFlowableTest.java
├── MaybeFlatMapSignalMaybeTest.java
├── MaybeFlatMapSignalObservableTest.java
├── MaybeFlatMapSignalSingleTest.java
├── ObservableErrorJumpTest.java
├── ObservableFilterAsyncTest.java
├── ObservableFlatMapDropTest.java
├── ObservableFlatMapLatestTest.java
├── ObservableIndexOfTest.java
├── ObservableMapAsyncTest.java
├── ObservableObserveOnDropTest.java
├── ObservableObserveOnLatestTest.java
├── ObservableTransformersTest.java
├── ObservableValveTest.java
├── ObservablesTest.java
├── SingleFlatMapSignalCompletableTest.java
├── SingleFlatMapSignalFlowableTest.java
├── SingleFlatMapSignalMaybeTest.java
├── SingleFlatMapSignalObservableTest.java
├── SingleFlatMapSignalSingleTest.java
├── SingleTransformersTest.java
└── SinglesTest.java
├── parallel
├── ParallelOrderedMergeTest.java
└── ParallelSumTest.java
├── processors
├── DispatchWorkProcessorTest.java
├── FlowableProcessorsTest.java
└── RefCountProcessorTest.java
├── schedulers
├── BlockingSchedulerTest.java
├── ParallelSchedulerTest.java
└── SharedSchedulerTest.java
├── string
├── FlowableCharSequenceTest.java
├── StringFlowableTest.java
└── StringObservableTest.java
├── subjects
├── DispatchWorkSubjectTest.java
├── RefCountSubjectTest.java
├── SubjectsTest.java
└── UnicastWorkSubjectTest.java
├── test
├── BaseTest.java
├── BaseTestConsumerEx.java
├── TestException.java
├── TestHelper.java
├── TestObserverEx.java
└── TestSubscriberEx.java
├── util
└── SpmcLinkedArrayQueueTest.java
└── validation
├── CheckLocalVariablesInTests.java
├── NewLinesBeforeAnnotation.java
└── TooManyEmptyNewLines.java
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set default behaviour, in case users don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # Explicitly declare text files we want to always be normalized and converted
5 | # to native line endings on checkout.
6 | *.java text
7 | *.groovy text
8 | *.scala text
9 | *.clj text
10 | *.txt text
11 | *.md text
12 |
13 | # Denote all files that are truly binary and should not be modified.
14 | *.png binary
15 | *.jpg binary
16 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: gradle
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | time: "04:00"
8 | open-pull-requests-limit: 20
9 | ignore:
10 | - dependency-name: com.vanniktech:gradle-maven-publish-plugin
11 | versions:
12 | - 0.14.0
13 | - 0.14.1
14 | - 0.14.2
15 | - 0.15.0
16 |
--------------------------------------------------------------------------------
/.github/workflows/gradle-wrapper-validation.yml:
--------------------------------------------------------------------------------
1 | name: "Validate Gradle Wrapper"
2 | on: [push, pull_request]
3 |
4 | jobs:
5 | validation:
6 | name: "Validation"
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v2
10 | - uses: gradle/wrapper-validation-action@v1
11 |
--------------------------------------------------------------------------------
/.github/workflows/gradle.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Gradle
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
3 |
4 | name: Java CI with Gradle
5 |
6 | on:
7 | push:
8 | branches: [ 3.x ]
9 | pull_request:
10 | branches: [ 3.x ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 | env:
17 | CI_PULL_REQUEST: ${{ github.event.number }}
18 | JAVADOCS_TOKEN: ${{ secrets.JAVADOCS_TOKEN }}
19 | CI_BUILD_NUMBER: ${{ github.run_number }}
20 | steps:
21 | - uses: actions/checkout@v2
22 | - name: Set up JDK 1.8
23 | uses: actions/setup-java@v1
24 | with:
25 | java-version: 1.8
26 | - name: Cache Gradle packages
27 | uses: actions/cache@v2
28 | with:
29 | path: ~/.gradle/caches
30 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
31 | restore-keys: ${{ runner.os }}-gradle
32 | - name: Grant execute permission for gradlew
33 | run: chmod +x gradlew
34 | - name: Grant execute permission for push
35 | run: chmod +x push.sh
36 | - name: Build with Gradle
37 | run: ./gradlew build javadoc --stacktrace
38 | - name: Upload to Codecov
39 | uses: codecov/codecov-action@v1
40 | - name: Push Javadocs
41 | run: ./push.sh
42 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Package Files #
4 | *.jar
5 | *.war
6 | *.ear
7 | /build/
8 |
9 | .gradle
10 | .m2
11 | /.nb-gradle/
12 | /bin/
13 | .settings/
14 | .nb-gradle-properties
15 | .classpath
16 | .project
17 | .settings
18 | .metadata
19 | .checkstyle
20 | bin/
21 | !/gradle/wrapper/gradle-wrapper.jar
22 | .pmd
23 | .ruleset
24 | local.properties
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 |
3 | jdk:
4 | - openjdk8
5 |
6 | before_install:
7 | - chmod +x gradlew
8 |
9 | after_success:
10 | - bash <(curl -s https://codecov.io/bash)
11 | - bash ./push.sh
12 |
13 | # cache between builds
14 | cache:
15 | directories:
16 | - $HOME/.m2
17 | - $HOME/.gradle
18 |
19 |
--------------------------------------------------------------------------------
/config/checkstyle/checkstyle.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/config/checkstyle/suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/config/license/HEADER:
--------------------------------------------------------------------------------
1 | Copyright 2016-present David Karnok
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/config/license/HEADER_JAVA:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016-present David Karnok
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | GROUP=com.github.akarnokd
2 | VERSION_NAME=3.1.1
3 | version=3.1.1
4 |
5 | POM_ARTIFACT_ID=rxjava3-extensions
6 | POM_NAME=RxJava 3 extra sources, operators and components
7 | POM_PACKAGING=jar
8 |
9 | POM_DESCRIPTION=RxJava 3.x extra sources, operators and components and ports of many 1.x companion libraries.
10 | POM_INCEPTION_YEAR=2016
11 |
12 | POM_URL=https://github.com/akarnokd/RxJavaExtensions
13 | POM_SCM_URL=https://github.com/akarnokd/RxJavaExtensions
14 | POM_SCM_CONNECTION=scm:git:git://github.com/akarnokd/RxJavaExtensions.git
15 | POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/akarnokd/RxJavaExtensions.git
16 |
17 | POM_LICENCE_NAME=The Apache Software License, Version 2.0
18 | POM_LICENCE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt
19 | POM_LICENCE_DIST=repo
20 |
21 | POM_DEVELOPER_ID=akarnokd
22 | POM_DEVELOPER_NAME=David Karnok
23 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/akarnokd/RxJavaExtensions/ca1c4490ec45cab302c8dcf781f72e8aed2cdcaa/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/push.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # ----------------------------------------------------------
3 | # Automatically push back the generated JavaDocs to gh-pages
4 | # ----------------------------------------------------------
5 | # based on https://gist.github.com/willprice/e07efd73fb7f13f917ea
6 |
7 | # specify the common address for the repository
8 | targetRepo=github.com/akarnokd/RxJavaExtensions.git
9 | # =======================================================================
10 |
11 | # only for main pushes, for now
12 | if [ "$CI_PULL_REQUEST" == "true" ]; then
13 | echo -e "Pull request detected, skipping JavaDocs pushback."
14 | exit 0
15 | fi
16 |
17 | # check if the token is actually there
18 | if [ "$JAVADOCS_TOKEN" == "" ]; then
19 | echo -e "No access to GitHub, skipping JavaDocs pushback."
20 | exit 0
21 | fi
22 |
23 | # prepare the git information
24 | git config --global user.email "akarnokd@gmail.com"
25 | git config --global user.name "akarnokd"
26 |
27 | # setup the remote
28 | git remote add origin-pages https://${JAVADOCS_TOKEN}@${targetRepo} > /dev/null 2>&1
29 |
30 | # stash changes due to chmod
31 | git stash
32 |
33 | # get the gh-pages
34 | git fetch --all
35 | git branch -a
36 | git checkout -b gh-pages origin-pages/gh-pages
37 |
38 | # remove old dir
39 | rm -rf javadoc
40 |
41 | ls ./build
42 | # copy and overwrite new doc
43 | yes | cp -rfv ./build/docs/javadoc/ javadoc/
44 |
45 | # stage all changed and new files
46 | git add *.html
47 | git add *.css
48 | git add *.js
49 | git add javadoc/package-list
50 |
51 | # commit all
52 | git commit --message "CI build: $CI_BUILD_NUMBER"
53 |
54 |
55 | # push it
56 | git push --quiet --set-upstream origin-pages gh-pages
57 |
58 | # we are done
59 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'rxjava3-extensions'
2 |
--------------------------------------------------------------------------------
/src/jmh/java/hu/akarnokd/rxjava3/ExamplePerf.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016-present David Karnok
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package hu.akarnokd.rxjava3;
18 |
19 | import java.util.concurrent.TimeUnit;
20 |
21 | import org.openjdk.jmh.annotations.*;
22 |
23 | /**
24 | * Example benchmark. Run from command line as
25 | *
26 | * gradle jmh -Pjmh='ExamplePerf'
27 | */
28 | @BenchmarkMode(Mode.Throughput)
29 | @Warmup(iterations = 5)
30 | @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
31 | @OutputTimeUnit(TimeUnit.SECONDS)
32 | @Fork(value = 1)
33 | @State(Scope.Thread)
34 | public class ExamplePerf {
35 |
36 | @Param({"1", "10", "100", "1000", "10000", "100000", "1000000"})
37 | public int count;
38 |
39 | /**
40 | * Insert setup code here.
41 | */
42 | @Setup
43 | public void setup() {
44 |
45 | }
46 |
47 | }
--------------------------------------------------------------------------------
/src/jmh/java/hu/akarnokd/rxjava3/PerfConsumer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016-present David Karnok
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package hu.akarnokd.rxjava3;
18 |
19 | import org.openjdk.jmh.infra.Blackhole;
20 | import org.reactivestreams.*;
21 |
22 | import io.reactivex.rxjava3.core.*;
23 | import io.reactivex.rxjava3.disposables.Disposable;
24 |
25 | public final class PerfConsumer implements Subscriber