Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description = "Adapter between RxJava and ReactiveStreams"

dependencies {
compile 'io.reactivex:rxjava:1.0.+'
compile 'org.reactivestreams:reactive-streams:0.4.0.M1'
compile 'org.reactivestreams:reactive-streams:0.4.0.M2'
testCompile 'junit:junit-dep:4.10'
testCompile 'org.mockito:mockito-core:1.8.5'
}
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/rx/RxReactiveStreams.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ public static <T> Observable<T> toObservable(final Publisher<T> publisher) {
return Observable.create(new PublisherObservableOnSubscribe<T>(publisher));
}

// Make subscriber contravariant after https://github.com/reactive-streams/reactive-streams/issues/104 is fixed
public static <T> void subscribe(Observable<T> observable, Subscriber<T> subscriber) {
public static <T> void subscribe(Observable<T> observable, Subscriber<? super T> subscriber) {
observable.subscribe(new ObservableSubscriber<T>(subscriber));
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/rx/internal/ObservablePublisher.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public ObservablePublisher(Observable<T> observable) {
}

@Override
public void subscribe(final Subscriber<T> s) {
public void subscribe(final Subscriber<? super T> s) {
RxReactiveStreams.subscribe(observable, s);
}

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/rx/internal/ObservableSubscriber.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
import org.reactivestreams.Subscription;

public class ObservableSubscriber<T> extends rx.Subscriber<T> {
private final Subscriber<T> rsSubscriber;
private final Subscriber<? super T> rsSubscriber;

public ObservableSubscriber(Subscriber<T> rsSubscriber) {
public ObservableSubscriber(Subscriber<? super T> rsSubscriber) {
this.rsSubscriber = rsSubscriber;

// Reactive streams contract requires not sending anything until an explict request is made
// Reactive streams contract requires not sending anything until an explicit request is made
request(0);

rsSubscriber.onSubscribe(new Subscription() {
@Override
public void request(int n) {
public void request(long n) {
ObservableSubscriber.this.request(n);
}

Expand Down
28 changes: 11 additions & 17 deletions src/main/java/rx/internal/PublisherSubscriber.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
package rx.internal;

import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import rx.Producer;
import rx.functions.Action0;
import rx.subscriptions.Subscriptions;

/**
/*
* Copyright 2014 Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
Expand All @@ -21,6 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package rx.internal;

import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import rx.Producer;
import rx.functions.Action0;
import rx.subscriptions.Subscriptions;

public class PublisherSubscriber<T> implements Subscriber<T> {
private final rx.Subscriber<? super T> rxSubscriber;

Expand All @@ -33,14 +34,7 @@ public void onSubscribe(final Subscription rsSubscription) {
rxSubscriber.setProducer(new Producer() {
@Override
public void request(long n) {
// 0.4.0.M1 of reactive streams is bugged in that Subsription.request() takes an int
// https://github.com/reactive-streams/reactive-streams/issues/105
// MUST update this after that change
if (n <= Integer.MAX_VALUE) {
rsSubscription.request((int) n);
} else {
rsSubscription.request(Integer.MAX_VALUE);
}
rsSubscription.request(n);
}
});

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/rx/test/IterablePublisher.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ public IterablePublisher(Iterable<T> iterable) {
}

@Override
public void subscribe(final Subscriber<T> subscriber) {
public void subscribe(final Subscriber<? super T> subscriber) {
subscriber.onSubscribe(new Subscription() {

Iterator<T> iterator = iterable.iterator();

@Override
public void request(int n) {
public void request(long n) {
for (int i = 0; i < n; ++i) {
if (iterator.hasNext()) {
T next;
Expand Down