Skip to content

Commit dbf0375

Browse files
refactoring package structure
1 parent d12eb25 commit dbf0375

File tree

7 files changed

+76
-58
lines changed

7 files changed

+76
-58
lines changed

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala.scala

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
11
package rx.lang
22

3+
4+
/*
5+
* This object contains aliases to all types Scala users need to import.
6+
* Note that:
7+
* - Scala users cannot use Java's type with variance without always using writing
8+
* e.g. rx.Notification[_ <: T], so we create aliases fixing the variance
9+
* - For consistency, we create aliases for all types
10+
* - Type aliases cannot be at top level, they have to be inside an object or class
11+
* - It's possible to make a "package object" instead of "object", but if there's a
12+
* package with the same name as the package object, the gradle builder fails
13+
* (the eclipse builder works). Using -Yresolve-term-conflict:package
14+
* or -Yresolve-term-conflict:object as scalac options didn't help.
15+
* See also http://stackoverflow.com/questions/8984730/package-contains-object-and-package-with-same-name
16+
*/
17+
object scala {
18+
19+
type Notification[+T] = rx.Notification[_ <: T]
20+
object Notification {
21+
def apply[T](): Notification[T] = new rx.Notification()
22+
def apply[T](value: T): Notification[T] = new rx.Notification(value)
23+
def apply[T](t: Throwable): Notification[T] = new rx.Notification(t)
24+
}
25+
26+
type Observable[+T] = rx.lang.scalaimpl.Observable[T]
27+
val Observable = rx.lang.scalaimpl.Observable
28+
type Observer[-T] = rx.Observer[_ >: T]
29+
type Scheduler = rx.Scheduler
30+
type Subscription = rx.Subscription
31+
32+
object util {
33+
type Closing = rx.util.Closing
34+
35+
// TODO rx.util.Closings
36+
37+
type CompositeException = rx.util.CompositeException
38+
39+
// TODO rx.util.Exceptions
40+
41+
// rx.util.OnErrorNotImplementedException TODO what's this?
42+
43+
type Opening = rx.util.Opening
44+
45+
// rx.util.Openings // TODO
46+
47+
// rx.util.Range // TODO do we need this? Or the Scala Range?
48+
49+
type Timestamped[+T] = rx.util.Timestamped[_ <: T]
50+
object Timestamped {
51+
def apply[T](timestampMillis: Long, value: T): Timestamped[T] = {
52+
new rx.util.Timestamped(timestampMillis, value)
53+
}
54+
}
55+
}
56+
57+
}
58+
359
/*
460
561
TODO make aliases for these types because:
@@ -31,22 +87,5 @@ rx.subscriptions.BooleanSubscription
3187
rx.subscriptions.CompositeSubscription
3288
rx.subscriptions.Subscriptions
3389
34-
35-
3690
*/
3791

38-
package object scala {
39-
40-
type Notification[+T] = rx.Notification[_ <: T]
41-
object Notification {
42-
def apply[T](): Notification[T] = new rx.Notification()
43-
def apply[T](value: T): Notification[T] = new rx.Notification(value)
44-
def apply[T](t: Throwable): Notification[T] = new rx.Notification(t)
45-
}
46-
47-
// Observable is not here because it's a full-fledged class
48-
type Observer[-T] = rx.Observer[_ >: T]
49-
type Scheduler = rx.Scheduler
50-
type Subscription = rx.Subscription
51-
}
52-

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/util.scala

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package rx.lang.scala.observables
1+
package rx.lang.scalaimpl
22

33
import scala.collection.JavaConverters._
44

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package rx.lang.scala.observables
1+
package rx.lang.scalaimpl
22

33

44
class ConnectableObservable[+T](val asJava: rx.observables.ConnectableObservable[_ <: T]) extends AnyVal {
55
import rx.lang.scala._
66
import rx.lang.scala.util._
77
import rx.{Observable => JObservable}
8-
import rx.lang.scala.internal.ImplicitFunctionConversions._
8+
import rx.lang.scalaimpl.ImplicitFunctionConversions._
99

1010
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/*
33
* These function conversions are only used by the ScalaAdapter, users of RxScala don't need them.
44
*/
5-
package rx.lang.scala.internal
5+
package rx.lang.scalaimpl
66

77

88
import java.{lang => jlang}
@@ -16,6 +16,8 @@ import rx.util.functions.Func4
1616
import java.{lang => jlang}
1717
import rx.Observer
1818
import rx.Subscription
19+
import java.{lang => jlang}
20+
import scala.language.implicitConversions
1921

2022
object ImplicitFunctionConversions {
2123
// code below is copied from

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Observable.scala renamed to language-adaptors/rxjava-scala/src/main/scala/rx/lang/scalaimpl/Observable.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
*/
1616

1717

18-
package rx.lang.scala
18+
package rx.lang.scalaimpl
19+
20+
import org.scalatest.junit.JUnitSuite
1921

2022

2123
/**
@@ -29,9 +31,9 @@ class Observable[+T](val asJava: rx.Observable[_ <: T])
2931
import scala.collection.JavaConverters._
3032
import scala.concurrent.duration.Duration
3133
import rx.{Observable => JObservable}
34+
import rx.lang.scala.{Notification, Subscription, Scheduler, Observer}
3235
import rx.lang.scala.util._
33-
import rx.lang.scala.observables._
34-
import rx.lang.scala.internal.ImplicitFunctionConversions._
36+
import rx.lang.scalaimpl.ImplicitFunctionConversions._
3537

3638
/**
3739
* An {@link Observer} must call an Observable's {@code subscribe} method in order to
@@ -1258,7 +1260,9 @@ object Observable {
12581260
import scala.concurrent.duration.Duration
12591261
import scala.concurrent.Future
12601262
import rx.{Observable => JObservable}
1261-
import rx.lang.scala.internal.ImplicitFunctionConversions._
1263+
import rx.lang.scala.{Notification, Subscription, Scheduler, Observer}
1264+
import rx.lang.scala.util._
1265+
import rx.lang.scalaimpl.ImplicitFunctionConversions._
12621266

12631267
/**
12641268
* Creates an Observable that will execute the given function when an {@link Observer} subscribes to it.
@@ -1598,8 +1602,8 @@ object Observable {
15981602
// Cannot yet have inner class because of this error message:
15991603
// implementation restriction: nested class is not allowed in value class.
16001604
// This restriction is planned to be removed in subsequent releases.
1601-
class WithFilter[+T] private[scala] (p: T => Boolean, wrapped: rx.Observable[_ <: T]) {
1602-
import rx.lang.scala.internal.ImplicitFunctionConversions._
1605+
class WithFilter[+T] private[scalaimpl] (p: T => Boolean, wrapped: rx.Observable[_ <: T]) {
1606+
import rx.lang.scalaimpl.ImplicitFunctionConversions._
16031607

16041608
def map[B](f: T => B): Observable[B] = new Observable(wrapped.filter(p).map(f))
16051609
def flatMap[B](f: T => Observable[B]): Observable[B] = {
@@ -1609,8 +1613,6 @@ class WithFilter[+T] private[scala] (p: T => Boolean, wrapped: rx.Observable[_ <
16091613
def withFilter(p: T => Boolean): Observable[T] = new Observable(wrapped.filter(p))
16101614
}
16111615

1612-
import org.scalatest.junit.JUnitSuite
1613-
16141616
class UnitTestSuite extends JUnitSuite {
16151617
import scala.concurrent.duration._
16161618
import org.junit.{Before, Test, Ignore}

language-adaptors/rxjava-scala/src/test/scala/rx/lang/scala/RxScalaDemo.scala renamed to language-adaptors/rxjava-scala/src/test/scala/rx/lang/scalatests/RxScalaDemo.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
package rx.lang.scala
1+
package rx.lang.scalatests
22

33
import org.scalatest.junit.JUnitSuite
4+
5+
import rx.lang.scala._
46
import scala.concurrent.duration._
57
import org.junit.{Before, Test, Ignore}
8+
69
import org.junit.Assert._
710

811
class RxScalaDemo extends JUnitSuite {

0 commit comments

Comments
 (0)