@@ -113,27 +113,25 @@ class CompletenessTest extends JUnitSuite {
113
113
" lastOrDefault(T, Func1[_ >: T, Boolean])" -> " [use `filter(predicate).lastOrElse(default)`]" ,
114
114
" lift(Operator[_ <: R, _ >: T])" -> " lift(Subscriber[R] => Subscriber[T])" ,
115
115
" limit(Int)" -> " take(Int)" ,
116
- " mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]])" -> " flatMap(T => Observable[R])" ,
117
- " mergeMap(Func1[_ >: T, _ <: Observable[_ <: R]], Func1[_ >: Throwable, _ <: Observable[_ <: R]], Func0[_ <: Observable[_ <: R]])" -> " flatMap(T => Observable[R], Throwable => Observable[R], () => Observable[R])" ,
118
- " mergeMap(Func1[_ >: T, _ <: Observable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapWith(T => Observable[U])((T, U) => R)" ,
119
- " mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: R]])" -> " flatMapIterable(T => Iterable[R])" ,
120
- " mergeMapIterable(Func1[_ >: T, _ <: Iterable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapIterableWith(T => Iterable[U])((T, U) => R)" ,
116
+ " flatMap(Func1[_ >: T, _ <: Observable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapWith(T => Observable[U])((T, U) => R)" ,
117
+ " flatMapIterable(Func1[_ >: T, _ <: Iterable[_ <: U]], Func2[_ >: T, _ >: U, _ <: R])" -> " flatMapIterableWith(T => Iterable[U])((T, U) => R)" ,
121
118
" mergeWith(Observable[_ <: T])" -> " merge(Observable[U])" ,
122
119
" multicast(Subject[_ >: T, _ <: R])" -> " multicast(Subject[R])" ,
123
120
" multicast(Func0[_ <: Subject[_ >: T, _ <: TIntermediate]], Func1[_ >: Observable[TIntermediate], _ <: Observable[TResult]])" -> " multicast(() => Subject[R])(Observable[R] => Observable[U])" ,
124
- " ofType(Class[R])" -> " [use `filter(_.isInstanceOf[Class])" ,
121
+ " ofType(Class[R])" -> " [use `filter(_.isInstanceOf[Class])`] " ,
125
122
" onErrorResumeNext(Func1[Throwable, _ <: Observable[_ <: T]])" -> " onErrorResumeNext(Throwable => Observable[U])" ,
126
123
" onErrorResumeNext(Observable[_ <: T])" -> " onErrorResumeNext(Observable[U])" ,
127
124
" onErrorReturn(Func1[Throwable, _ <: T])" -> " onErrorReturn(Throwable => U)" ,
128
125
" onExceptionResumeNext(Observable[_ <: T])" -> " onExceptionResumeNext(Observable[U])" ,
129
- " onErrorFlatMap(Func1[OnErrorThrowable, _ <: Observable[_ <: T]])" -> " onErrorFlatMap((Throwable, Option[Any]) => Observable[U])" ,
130
126
" parallel(Func1[Observable[T], Observable[R]])" -> " parallel(Observable[T] => Observable[R])" ,
131
127
" parallel(Func1[Observable[T], Observable[R]], Scheduler)" -> " parallel(Observable[T] => Observable[R], Scheduler)" ,
132
128
" publish(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publish(Observable[T] => Observable[R])" ,
133
129
" publish(Func1[_ >: Observable[T], _ <: Observable[R]], T)" -> " publish(Observable[T] => Observable[R], T @uncheckedVariance)" ,
134
130
" publishLast(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publishLast(Observable[T] => Observable[R])" ,
135
131
" reduce(Func2[T, T, T])" -> " reduce((U, U) => U)" ,
136
132
" reduce(R, Func2[R, _ >: T, R])" -> " foldLeft(R)((R, T) => R)" ,
133
+ " repeatWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]])" -> " repeatWhen(Observable[Notification[Any]] => Observable[Notification[Any]])" ,
134
+ " repeatWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]], Scheduler)" -> " repeatWhen(Observable[Notification[Any]] => Observable[Notification[Any]], Scheduler)" ,
137
135
" replay(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " replay(Observable[T] => Observable[R])" ,
138
136
" replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int)" -> " replay(Observable[T] => Observable[R], Int)" ,
139
137
" replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit)" -> " replay(Observable[T] => Observable[R], Int, Duration)" ,
@@ -143,6 +141,8 @@ class CompletenessTest extends JUnitSuite {
143
141
" replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit, Scheduler)" -> " replay(Observable[T] => Observable[R], Duration, Scheduler)" ,
144
142
" replay(Func1[_ >: Observable[T], _ <: Observable[R]], Scheduler)" -> " replay(Observable[T] => Observable[R], Scheduler)" ,
145
143
" retry(Func2[Integer, Throwable, Boolean])" -> " retry((Int, Throwable) => Boolean)" ,
144
+ " retryWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_ <: Notification[_]]], Scheduler)" -> " retryWhen(Observable[Notification[Any]] => Observable[Notification[Any]], Scheduler)" ,
145
+ " retryWhen(Func1[_ >: Observable[_ <: Notification[_]], _ <: Observable[_]])" -> " retryWhen(Observable[Notification[Any]] => Observable[Any])" ,
146
146
" sample(Observable[U])" -> " sample(Observable[Any])" ,
147
147
" scan(Func2[T, T, T])" -> unnecessary,
148
148
" scan(R, Func2[R, _ >: T, R])" -> " scan(R)((R, T) => R)" ,
@@ -204,12 +204,11 @@ class CompletenessTest extends JUnitSuite {
204
204
205
205
// manually added entries for Java static methods
206
206
" amb(Iterable[_ <: Observable[_ <: T]])" -> " amb(Observable[T]*)" ,
207
- " create(OnSubscribeFunc[T])" -> " create(Observer[T] => Subscription)" ,
208
207
" create(OnSubscribe[T])" -> " apply(Subscriber[T] => Unit)" ,
209
208
" combineLatest(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " combineLatest(Observable[U])" ,
210
209
" combineLatest(List[_ <: Observable[_ <: T]], FuncN[_ <: R])" -> " combineLatest(Seq[Observable[T]])(Seq[T] => R)" ,
211
210
" concat(Observable[_ <: Observable[_ <: T]])" -> " concat(<:<[Observable[T], Observable[Observable[U]]])" ,
212
- " defer(Func0[_ <: Observable[_ <: T]])" -> " defer(=> Observable[T])" ,
211
+ " defer(Func0[Observable[T]])" -> " defer(=> Observable[T])" ,
213
212
" from(<repeated...>[T])" -> " items(T*)" ,
214
213
" from(Array[T], Scheduler)" -> " from(Iterable[T], Scheduler)" ,
215
214
" from(Iterable[_ <: T])" -> " from(Iterable[T])" ,
@@ -225,7 +224,7 @@ class CompletenessTest extends JUnitSuite {
225
224
" merge(Array[Observable[_ <: T]], Scheduler)" -> " [use `Observable.from(array, scheduler).flatten`]" ,
226
225
" merge(Iterable[_ <: Observable[_ <: T]])" -> " [use `Observable.from(iter).flatten`]" ,
227
226
" merge(Iterable[_ <: Observable[_ <: T]], Int)" -> " [use `Observable.from(iter).flatten(n)`]" ,
228
- " merge(Iterable[_ <: Observable[_ <: T]], Int, Scheduler)" -> " [use `Observable.from(iter, scheduler).flatten(n)]" ,
227
+ " merge(Iterable[_ <: Observable[_ <: T]], Int, Scheduler)" -> " [use `Observable.from(iter, scheduler).flatten(n)` ]" ,
229
228
" merge(Iterable[_ <: Observable[_ <: T]], Scheduler)" -> " [use `Observable.from(iter, scheduler).flatten`]" ,
230
229
" mergeDelayError(Observable[_ <: T], Observable[_ <: T])" -> " mergeDelayError(Observable[U])" ,
231
230
" mergeDelayError(Observable[_ <: Observable[_ <: T]])" -> " flattenDelayError(<:<[Observable[T], Observable[Observable[U]]])" ,
@@ -234,12 +233,12 @@ class CompletenessTest extends JUnitSuite {
234
233
" sequenceEqual(Observable[_ <: T], Observable[_ <: T])" -> " sequenceEqual(Observable[U])" ,
235
234
" sequenceEqual(Observable[_ <: T], Observable[_ <: T], Func2[_ >: T, _ >: T, Boolean])" -> " sequenceEqualWith(Observable[U])((U, U) => Boolean)" ,
236
235
" range(Int, Int)" -> " [use `(start until (start + count)).toObservable` instead of `range(start, count)`]" ,
237
- " range(Int, Int, Scheduler)" -> " [use `(start until (start + count)).toObservable.subscribeOn(scheduler)` instead of `range(start, count, scheduler)`]`] " ,
236
+ " range(Int, Int, Scheduler)" -> " [use `(start until (start + count)).toObservable.subscribeOn(scheduler)` instead of `range(start, count, scheduler)`]" ,
238
237
" switchOnNext(Observable[_ <: Observable[_ <: T]])" -> " switch(<:<[Observable[T], Observable[Observable[U]]])" ,
239
238
" zip(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " [use instance method `zip` and `map`]" ,
240
239
" zip(Observable[_ <: Observable[_]], FuncN[_ <: R])" -> " [use `zip` in companion object and `map`]" ,
241
240
" zip(Iterable[_ <: Observable[_]], FuncN[_ <: R])" -> " [use `zip` in companion object and `map`]" ,
242
- " zip (Observable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> " zipWith(Observable[U])((T, U) => R)" ,
241
+ " zipWith (Observable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> " zipWith(Observable[U])((T, U) => R)" ,
243
242
" zip(Iterable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> " zipWith(Iterable[U])((T, U) => R)"
244
243
) ++ List .iterate(" T, T" , 8 )(s => s + " , T" ).map(
245
244
// all 9 overloads of startWith:
@@ -290,7 +289,11 @@ class CompletenessTest extends JUnitSuite {
290
289
def getPublicInstanceMethods (tp : Type ): Iterable [String ] = {
291
290
// declarations: => only those declared in Observable
292
291
// members => also those of superclasses
293
- methodMembersToMethodStrings(tp.declarations.filter(m => m.isMethod && m.isPublic))
292
+ methodMembersToMethodStrings(tp.declarations.filter {
293
+ m =>
294
+ m.isMethod && m.isPublic &&
295
+ m.annotations.forall(_.toString != " java.lang.Deprecated" ) // don't check deprecated classes
296
+ })
294
297
// TODO how can we filter out instance methods which were put into companion because
295
298
// of extends AnyVal in a way which does not depend on implementation-chosen name '$extension'?
296
299
.filter(! _.contains(" $extension" ))
@@ -459,6 +462,7 @@ title: Comparison of Scala Observable and Java Observable
459
462
---
460
463
461
464
Note:
465
+
462
466
* This table contains both static methods and instance methods.
463
467
* If a signature is too long, move your mouse over it to get the full signature.
464
468
0 commit comments