Skip to content

Commit

Permalink
Merge pull request #23 from jacek-marchwicki/new-okhttp
Browse files Browse the repository at this point in the history
New okhttp
  • Loading branch information
jacek-marchwicki authored Mar 22, 2017
2 parents a522486 + 998e13f commit a00057a
Show file tree
Hide file tree
Showing 23 changed files with 175 additions and 280 deletions.
13 changes: 4 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
sudo: false
language: android
jdk:
- oraclejdk8

android:
components:
- tools
- platform-tools
- build-tools-22.0.1
- android-22
- build-tools-25.0.2
- android-25
- extra-google-m2repository
- extra-android-m2repository
addons:
apt_packages:
- pandoc

script: ./gradlew build

after_script:
- for f in "websockets-example/build/outputs/lint-results*.html"; do pandoc $f -t plain; done
- for f in "websockets-rxjava-example/build/outputs/lint-results*.html"; do pandoc $f -t plain; done
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Fri Apr 03 16:38:12 CEST 2015
#Wed Mar 22 17:26:20 CET 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
21 changes: 12 additions & 9 deletions websockets-rxjava-example/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-beta1'
classpath 'com.android.tools.build:gradle:2.3.0'
}
}

Expand All @@ -19,25 +19,26 @@ repositories {
dependencies {
compile project(":websockets-rxjava")
compile 'io.reactivex:rxandroid:0.24.0'
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.google.guava:guava:18.0'
compile "com.google.code.gson:gson:2.3"
compile 'com.android.support:recyclerview-v7:25.3.0'
compile 'com.android.support:support-v4:25.3.0'
compile 'com.google.guava:guava:20.0'
compile "com.google.code.gson:gson:2.7"
//compile "com.appunite:websockets:1.0"

testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'com.google.truth:truth:0.25'
testCompile 'com.google.guava:guava:18.0'
testCompile 'com.google.guava:guava:20.0'
}

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
compileSdkVersion 25
buildToolsVersion '25.0.2'

defaultConfig {
minSdkVersion 8
targetSdkVersion 22
minSdkVersion 9
targetSdkVersion 25
}
buildTypes {
release {
Expand All @@ -46,6 +47,8 @@ android {
}
lintOptions {
disable 'InvalidPackage'
textOutput "stdout"
textReport true
}

compileOptions {
Expand Down
4 changes: 0 additions & 4 deletions websockets-rxjava-example/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.INTERNET" />

<application
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void onNext(RxObjectEvent rxObjectEvent) {
+ ", " + wrongMessageFormat.exception().toString()));
} else if (rxObjectEvent instanceof RxObjectEventDisconnected) {
//noinspection ThrowableResultOfMethodCallIgnored
final Exception exception = ((RxObjectEventDisconnected) rxObjectEvent).exception();
final Throwable exception = ((RxObjectEventDisconnected) rxObjectEvent).exception();
if (!(exception instanceof InterruptedException)) {
subscriber.onNext(new Pair<>("error", exception.toString()));
}
Expand Down
31 changes: 18 additions & 13 deletions websockets-rxjava-example/src/main/java/com/example/Socket.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,13 @@ public RxObjectEventConn call(RxObjectEventDisconnected rxEventDisconnected) {
.lift(LoggingObservables.<RxObjectEventConnected>loggingLift(LOGGER, "ConnectedEvent"));

connectedMessage
.flatMap(new FlatMapToRegisterMessage())
.flatMap(new Func1<RxObjectEventConnected, Observable<?>>() {
@Override
public Observable<?> call(RxObjectEventConnected rxEventConn) {
return RxMoreObservables.sendObjectMessage(rxEventConn.sender(), new RegisterMessage("asdf"))
.toObservable();
}
})
.lift(LoggingObservables.loggingOnlyErrorLift(LOGGER, "SendRegisterEvent"))
.onErrorReturn(com.example.MoreObservables.throwableToIgnoreError())
.subscribe();
Expand Down Expand Up @@ -123,8 +129,8 @@ public RxObjectEventConn call(Long aLong, RxObjectEventConn rxEventConn) {
.flatMap(new Func1<RxObjectEventConn, Observable<?>>() {
@Override
public Observable<?> call(RxObjectEventConn rxEventConn) {
return Observable.just(new PingMessage("send_only_when_connected"))
.compose(RxMoreObservables.sendMessage(rxEventConn));
return RxMoreObservables.sendObjectMessage(rxEventConn.sender(), new PingMessage("send_only_when_connected"))
.toObservable();
}
})
.subscribe();
Expand All @@ -141,8 +147,8 @@ public Observable<?> call(Long aLong) {
.flatMap(new Func1<RxObjectEventConn, Observable<?>>() {
@Override
public Observable<?> call(RxObjectEventConn rxEventConn) {
return Observable.just(new PingMessage("be_sure_to_send"))
.compose(RxMoreObservables.sendMessage(rxEventConn));
return RxMoreObservables.sendObjectMessage(rxEventConn.sender(), new PingMessage("be_sure_to_send"))
.toObservable();
}
});
}
Expand Down Expand Up @@ -190,7 +196,13 @@ private Observable<DataMessage> requestData(final RxObjectEventConn rxEventConn,
public Observable<DataMessage> call(final String messageId) {

final Observable<Object> sendMessageObservable = createMessage.call(messageId)
.compose(RxMoreObservables.sendMessage(rxEventConn));
.flatMap(new Func1<Object, Observable<?>>() {
@Override
public Observable<?> call(Object s) {
return RxMoreObservables.sendObjectMessage(rxEventConn.sender(), s)
.toObservable();
}
});

final Observable<DataMessage> waitForResponseObservable = events
.compose(com.example.MoreObservables.filterAndMap(RxObjectEventMessage.class))
Expand Down Expand Up @@ -238,11 +250,4 @@ public Boolean call(RxObjectEventMessage rxEvent) {
}


private class FlatMapToRegisterMessage implements Func1<RxObjectEventConnected, Observable<Object>> {
@Override
public Observable<Object> call(RxObjectEventConnected rxEventConn) {
return Observable.just(new RegisterMessage("asdf"))
.compose(RxMoreObservables.sendMessage(rxEventConn));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public MessageType deserialize(JsonElement json, Type typeOfT, JsonDeserializati

final String asString = json.getAsString();
try {
return MessageType.valueOf(asString.toUpperCase());
return MessageType.valueOf(asString.toUpperCase(Locale.US));
} catch (IllegalArgumentException e) {
throw new JsonParseException("Unknown request type: " + asString);
}
Expand Down
1 change: 0 additions & 1 deletion websockets-rxjava-example/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black_87">#de000000</color>
<color name="white_87">#deffffff</color>
<color name="white_51">#99ffffff</color>
</resources>
6 changes: 3 additions & 3 deletions websockets-rxjava/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-beta1'
classpath 'com.android.tools.build:gradle:2.3.0'
}
}

Expand All @@ -21,8 +21,8 @@ repositories {
}

dependencies {
compile 'com.squareup.okhttp3:okhttp-ws:3.1.1'
compile "io.reactivex:rxjava:1.0.9"
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile "io.reactivex:rxjava:1.1.0"
compile "com.google.code.findbugs:jsr305:2.0.1"

testCompile "org.hamcrest:hamcrest-all:1.3"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,15 @@
import com.appunite.websocket.rx.object.ObjectSerializer;
import com.appunite.websocket.rx.object.ObjectWebSocketSender;
import com.appunite.websocket.rx.object.RxObjectWebSockets;
import com.appunite.websocket.rx.object.messages.RxObjectEventConn;
import com.appunite.websocket.rx.messages.RxEventConn;

import okhttp3.RequestBody;
import okhttp3.ws.WebSocket;

import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.annotation.Nonnull;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.functions.Func1;
import okhttp3.WebSocket;
import rx.Single;

public class RxMoreObservables {

Expand All @@ -42,91 +36,47 @@ public class RxMoreObservables {
public RxMoreObservables() {
}

@Nonnull
private static Observable<Object> sendMessage(final @Nonnull WebSocket sender, final @Nonnull String message) {
return Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
try {
logger.log(Level.FINE, "sendStringMessage: {0}", message);
sender.sendMessage(RequestBody.create(WebSocket.TEXT, message));
subscriber.onNext(new Object());
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
}
});
}

/**
* Transformer that convert String message to observable that returns if message was sent
*
* @param connection connection event that is used to send message
* @return Observable that returns {@link Observer#onNext(Object)} with new Object()
* and {@link Observer#onCompleted()} or {@link Observer#onError(Throwable)}
* Enqueue message to send
*
* @see #sendMessage(ObjectWebSocketSender, Object)
* @param sender connection event that is used to send message
* @param message message to send
* @return Single that returns true if message was enqueued
* @see #sendObjectMessage(ObjectWebSocketSender, Object)
*/
@SuppressWarnings("unused")
@Nonnull
public static Observable.Transformer<String, Object> sendMessage(@Nonnull final RxEventConn connection) {
return new Observable.Transformer<String, Object>() {
public static Single<Boolean> sendMessage(final @Nonnull WebSocket sender, final @Nonnull String message) {
return Single.fromCallable(new Callable<Boolean>() {
@Override
public Observable<Object> call(Observable<String> stringObservable) {
return stringObservable.flatMap(new Func1<String, Observable<?>>() {
@Override
public Observable<?> call(String message) {
return sendMessage(connection.sender(), message);
}
});
}
};
}

@Nonnull
private static Observable<Object> sendMessage(final @Nonnull ObjectWebSocketSender sender, final @Nonnull Object message) {
return Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
try {
logger.log(Level.FINE, "sendStringMessage: {0}", message.toString());
sender.sendObjectMessage(message);
subscriber.onNext(new Object());
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
public Boolean call() throws Exception {
logger.log(Level.FINE, "sendStringMessage: {0}", message);
return sender.send(message);
}
});
}


/**
* Transformer that convert Object message to observable that returns if message was sent
*
* Send object
* <p>
* Object is parsed via {@link ObjectSerializer} given by
* {@link RxObjectWebSockets#RxObjectWebSockets(RxWebSockets, ObjectSerializer)}
*
* @param connection connection event that is used to send message
* @return Observable that returns {@link Observer#onNext(Object)} with new Object()
* and {@link Observer#onCompleted()} or {@link Observer#onError(Throwable)}
*
* @see #sendMessage(RxEventConn)
* @param sender connection event that is used to send message
* @param message message to serialize and sent
* @return Single that returns true if message was enqueued or ObjectParseException if couldn't
* serialize
* @see #sendMessage(WebSocket, String)
*/
@SuppressWarnings("unused")
@Nonnull
public static Observable.Transformer<Object, Object> sendMessage(@Nonnull final RxObjectEventConn connection) {
return new Observable.Transformer<Object, Object>() {
public static Single<Boolean> sendObjectMessage(final @Nonnull ObjectWebSocketSender sender, final @Nonnull Object message) {
return Single.fromCallable(new Callable<Boolean>() {
@Override
public Observable<Object> call(Observable<Object> stringObservable) {
return stringObservable.flatMap(new Func1<Object, Observable<?>>() {
@Override
public Observable<?> call(Object message) {
return sendMessage(connection.sender(), message);
}
});
public Boolean call() throws Exception {
logger.log(Level.FINE, "sendStringMessage: {0}", message);
return sender.sendObjectMessage(message);
}
};
});
}


}
Loading

0 comments on commit a00057a

Please sign in to comment.