@@ -113,27 +113,25 @@ class CompletenessTest extends JUnitSuite {
113113 " lastOrDefault(T, Func1[_ >: T, Boolean])" -> " [use `filter(predicate).lastOrElse(default)`]" ,
114114 " lift(Operator[_ <: R, _ >: T])" -> " lift(Subscriber[R] => Subscriber[T])" ,
115115 " 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)" ,
121118 " mergeWith(Observable[_ <: T])" -> " merge(Observable[U])" ,
122119 " multicast(Subject[_ >: T, _ <: R])" -> " multicast(Subject[R])" ,
123120 " 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])`] " ,
125122 " onErrorResumeNext(Func1[Throwable, _ <: Observable[_ <: T]])" -> " onErrorResumeNext(Throwable => Observable[U])" ,
126123 " onErrorResumeNext(Observable[_ <: T])" -> " onErrorResumeNext(Observable[U])" ,
127124 " onErrorReturn(Func1[Throwable, _ <: T])" -> " onErrorReturn(Throwable => U)" ,
128125 " onExceptionResumeNext(Observable[_ <: T])" -> " onExceptionResumeNext(Observable[U])" ,
129- " onErrorFlatMap(Func1[OnErrorThrowable, _ <: Observable[_ <: T]])" -> " onErrorFlatMap((Throwable, Option[Any]) => Observable[U])" ,
130126 " parallel(Func1[Observable[T], Observable[R]])" -> " parallel(Observable[T] => Observable[R])" ,
131127 " parallel(Func1[Observable[T], Observable[R]], Scheduler)" -> " parallel(Observable[T] => Observable[R], Scheduler)" ,
132128 " publish(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publish(Observable[T] => Observable[R])" ,
133129 " publish(Func1[_ >: Observable[T], _ <: Observable[R]], T)" -> " publish(Observable[T] => Observable[R], T @uncheckedVariance)" ,
134130 " publishLast(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " publishLast(Observable[T] => Observable[R])" ,
135131 " reduce(Func2[T, T, T])" -> " reduce((U, U) => U)" ,
136132 " 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)" ,
137135 " replay(Func1[_ >: Observable[T], _ <: Observable[R]])" -> " replay(Observable[T] => Observable[R])" ,
138136 " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int)" -> " replay(Observable[T] => Observable[R], Int)" ,
139137 " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Int, Long, TimeUnit)" -> " replay(Observable[T] => Observable[R], Int, Duration)" ,
@@ -143,6 +141,8 @@ class CompletenessTest extends JUnitSuite {
143141 " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Long, TimeUnit, Scheduler)" -> " replay(Observable[T] => Observable[R], Duration, Scheduler)" ,
144142 " replay(Func1[_ >: Observable[T], _ <: Observable[R]], Scheduler)" -> " replay(Observable[T] => Observable[R], Scheduler)" ,
145143 " 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])" ,
146146 " sample(Observable[U])" -> " sample(Observable[Any])" ,
147147 " scan(Func2[T, T, T])" -> unnecessary,
148148 " scan(R, Func2[R, _ >: T, R])" -> " scan(R)((R, T) => R)" ,
@@ -204,12 +204,11 @@ class CompletenessTest extends JUnitSuite {
204204
205205 // manually added entries for Java static methods
206206 " amb(Iterable[_ <: Observable[_ <: T]])" -> " amb(Observable[T]*)" ,
207- " create(OnSubscribeFunc[T])" -> " create(Observer[T] => Subscription)" ,
208207 " create(OnSubscribe[T])" -> " apply(Subscriber[T] => Unit)" ,
209208 " combineLatest(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " combineLatest(Observable[U])" ,
210209 " combineLatest(List[_ <: Observable[_ <: T]], FuncN[_ <: R])" -> " combineLatest(Seq[Observable[T]])(Seq[T] => R)" ,
211210 " 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])" ,
213212 " from(<repeated...>[T])" -> " items(T*)" ,
214213 " from(Array[T], Scheduler)" -> " from(Iterable[T], Scheduler)" ,
215214 " from(Iterable[_ <: T])" -> " from(Iterable[T])" ,
@@ -225,7 +224,7 @@ class CompletenessTest extends JUnitSuite {
225224 " merge(Array[Observable[_ <: T]], Scheduler)" -> " [use `Observable.from(array, scheduler).flatten`]" ,
226225 " merge(Iterable[_ <: Observable[_ <: T]])" -> " [use `Observable.from(iter).flatten`]" ,
227226 " 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)` ]" ,
229228 " merge(Iterable[_ <: Observable[_ <: T]], Scheduler)" -> " [use `Observable.from(iter, scheduler).flatten`]" ,
230229 " mergeDelayError(Observable[_ <: T], Observable[_ <: T])" -> " mergeDelayError(Observable[U])" ,
231230 " mergeDelayError(Observable[_ <: Observable[_ <: T]])" -> " flattenDelayError(<:<[Observable[T], Observable[Observable[U]]])" ,
@@ -234,12 +233,12 @@ class CompletenessTest extends JUnitSuite {
234233 " sequenceEqual(Observable[_ <: T], Observable[_ <: T])" -> " sequenceEqual(Observable[U])" ,
235234 " sequenceEqual(Observable[_ <: T], Observable[_ <: T], Func2[_ >: T, _ >: T, Boolean])" -> " sequenceEqualWith(Observable[U])((U, U) => Boolean)" ,
236235 " 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)`]" ,
238237 " switchOnNext(Observable[_ <: Observable[_ <: T]])" -> " switch(<:<[Observable[T], Observable[Observable[U]]])" ,
239238 " zip(Observable[_ <: T1], Observable[_ <: T2], Func2[_ >: T1, _ >: T2, _ <: R])" -> " [use instance method `zip` and `map`]" ,
240239 " zip(Observable[_ <: Observable[_]], FuncN[_ <: R])" -> " [use `zip` in companion object and `map`]" ,
241240 " 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)" ,
243242 " zip(Iterable[_ <: T2], Func2[_ >: T, _ >: T2, _ <: R])" -> " zipWith(Iterable[U])((T, U) => R)"
244243 ) ++ List .iterate(" T, T" , 8 )(s => s + " , T" ).map(
245244 // all 9 overloads of startWith:
@@ -290,7 +289,11 @@ class CompletenessTest extends JUnitSuite {
290289 def getPublicInstanceMethods (tp : Type ): Iterable [String ] = {
291290 // declarations: => only those declared in Observable
292291 // 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+ })
294297 // TODO how can we filter out instance methods which were put into companion because
295298 // of extends AnyVal in a way which does not depend on implementation-chosen name '$extension'?
296299 .filter(! _.contains(" $extension" ))
@@ -459,6 +462,7 @@ title: Comparison of Scala Observable and Java Observable
459462---
460463
461464Note:
465+
462466* This table contains both static methods and instance methods.
463467* If a signature is too long, move your mouse over it to get the full signature.
464468
0 commit comments