From 5c7884000e75ac3efcc07b0404f2a6a168114176 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 23 Jul 2018 09:57:40 -0500 Subject: [PATCH 1/2] Repackage into com.parse.livequery --- .travis.yml | 30 +-- ParseLiveQuery/build.gradle | 232 +----------------- ParseLiveQuery/src/main/AndroidManifest.xml | 4 +- .../{ => livequery}/ClientOperation.java | 6 +- .../ConnectClientOperation.java | 8 +- .../{ => livequery}/LiveQueryException.java | 2 +- .../OkHttp3SocketClientFactory.java | 4 +- .../{ => livequery}/ParseLiveQueryClient.java | 8 +- .../ParseLiveQueryClientCallbacks.java | 2 +- .../ParseLiveQueryClientImpl.java | 27 +- .../SubscribeClientOperation.java | 9 +- .../parse/{ => livequery}/Subscription.java | 7 +- .../{ => livequery}/SubscriptionHandling.java | 5 +- .../UnsubscribeClientOperation.java | 8 +- .../{ => livequery}/WebSocketClient.java | 4 +- .../WebSocketClientFactory.java | 4 +- .../com/parse/TestOkHttpClientFactory.java | 5 +- .../com/parse/TestParseLiveQueryClient.java | 17 +- README.md | 61 ++--- build.gradle | 17 +- gradle/ExcludeDoclet.jar | Bin 3539 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- scripts/publish_snapshot.sh | 19 -- 23 files changed, 116 insertions(+), 365 deletions(-) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/ClientOperation.java (67%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/ConnectClientOperation.java (65%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/LiveQueryException.java (99%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/OkHttp3SocketClientFactory.java (97%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/ParseLiveQueryClient.java (85%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/ParseLiveQueryClientCallbacks.java (92%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/ParseLiveQueryClientImpl.java (96%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/SubscribeClientOperation.java (82%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/Subscription.java (95%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/SubscriptionHandling.java (96%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/UnsubscribeClientOperation.java (58%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/WebSocketClient.java (85%) rename ParseLiveQuery/src/main/java/com/parse/{ => livequery}/WebSocketClientFactory.java (66%) delete mode 100644 gradle/ExcludeDoclet.jar delete mode 100755 scripts/publish_snapshot.sh diff --git a/.travis.yml b/.travis.yml index 49c6ca6..bd67bd3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,42 +1,26 @@ branches: only: - master - - /^\d+\.\d+\.\d+$/ # regex + - /^v4-\d+\.\d+\.\d+$/ # regex + language: android -sudo: false -jdk: - - oraclejdk8 -android: - components: - - tools # to get the new `repository-11.xml` - - platform-tools - - build-tools-25.0.2 - - android-25 - - doc-25 - - extra-google-m2repository - - extra-android-m2repository - licenses: - - 'android-sdk-license-.+' +jdk: + - oraclejdk8 before_install: - pip install --user codecov + - mkdir "$ANDROID_HOME/licenses" || true + - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" > "$ANDROID_HOME/licenses/android-sdk-license" script: - ./gradlew clean testDebugUnitTest jacocoTestReport --info after_success: + - ./gradlew coveralls - codecov - - ./scripts/publish_snapshot.sh cache: directories: - $HOME/.gradle - $HOME/.m2/repository -deploy: - provider: script - script: ./gradlew bintrayUpload - skip_cleanup: true - on: - branch: master - tags: true \ No newline at end of file diff --git a/ParseLiveQuery/build.gradle b/ParseLiveQuery/build.gradle index 04be5cb..7044a86 100644 --- a/ParseLiveQuery/build.gradle +++ b/ParseLiveQuery/build.gradle @@ -1,37 +1,14 @@ -import com.android.builder.core.BuilderConstants - apply plugin: 'com.android.library' apply plugin: 'com.github.kt3k.coveralls' -group = 'com.parse' -version = '1.0.7-SNAPSHOT' - -ext { - projDescription = 'A library that gives you access to the powerful Parse cloud platform from your Android app.' - artifact = 'parse-livequery-android' - projName = 'Parse-LiveQuery-Android' - gitLink = 'https://github.com/parse-community/ParseLiveQuery-Android' -} - -buildscript { - repositories { - jcenter() - } - - dependencies { - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.1' - } -} - android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion 27 defaultConfig { - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion + minSdkVersion 15 + targetSdkVersion 27 versionCode 1 - versionName project.version + versionName "1.0" consumerProguardFiles 'release-proguard.pro' } @@ -47,135 +24,15 @@ android { } dependencies { - compile 'com.parse:parse-android:1.14.1' - compile 'com.squareup.okhttp3:okhttp:3.6.0' - compile 'com.parse.bolts:bolts-tasks:1.4.0' - testCompile 'org.robolectric:robolectric:3.3.1' - testCompile 'org.skyscreamer:jsonassert:1.5.0' - testCompile 'junit:junit:4.12' - testCompile 'org.mockito:mockito-core:1.10.19' -} - -android.libraryVariants.all { variant -> - def name = variant.buildType.name - def jar = project.tasks.create(name: "jar${name.capitalize()}", type: Jar) { - dependsOn variant.javaCompile - from variant.javaCompile.destinationDir - - manifest { - attributes( - "Bundle-Name": 'parse-livequery-android', - "Bundle-Version": project.version - ) - } - - exclude '**/R.class' - exclude '**/R\$*.class' - exclude '**/Manifest.class' - exclude '**/Manifest\$*.class' - exclude '**/BuildConfig.class' - } - - def javadoc = task("javadoc${variant.name.capitalize()}", type: Javadoc) { - description "Generates Javadoc for $variant.name." - source = variant.javaCompile.source - ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" - classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) - - options.docletpath = [rootProject.file("./gradle/ExcludeDoclet.jar")] - options.doclet = "me.grantland.doclet.ExcludeDoclet" - - options.linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference") - options.links("http://boltsframework.github.io/docs/android/") - - exclude '**/BuildConfig.java' - exclude '**/R.java' - exclude '**/internal/**' - } - - def javadocJar = task("javadocJar${variant.name.capitalize()}", type: Jar, dependsOn: "javadoc${variant.name.capitalize()}") { - classifier = 'javadoc' - from javadoc.destinationDir - } - - if (name.equals(BuilderConstants.RELEASE)) { - artifacts.add('archives', jar); - artifacts.add('archives', javadocJar); - } -} - -//region Maven - -apply plugin: 'maven' -apply plugin: 'signing' - -def isSnapshot = version.endsWith('-SNAPSHOT') -def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : System.getenv('CI_NEXUS_USERNAME') -def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : System.getenv('CI_NEXUS_PASSWORD') - -def pomConfig = { - scm { - connection 'scm:git@github.com:parse-community/ParseLiveQuery-Android.git' - developerConnection 'scm:git@github.com:parse-community/ParseLiveQuery-Android.git' - url gitLink - } - - licenses { - license { - name 'BSD License' - url 'https://github.com/parse-community/ParseLiveQuery-Android/blob/master/LICENSE' - distribution 'repo' - } - } - - developers { - developer { - id 'parse' - name 'Parse' - } - } -} - -uploadArchives { - repositories.mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + api "com.github.parse-community.Parse-SDK-Android:parse:1.18.2" + api 'com.squareup.okhttp3:okhttp:3.11.0' - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - def basePom = { - name projName - artifactId artifact - packaging 'aar' - description projDescription - url gitLink - } - - pom.project basePom << pomConfig - } + testImplementation 'org.robolectric:robolectric:3.3.1' + testImplementation 'org.skyscreamer:jsonassert:1.5.0' + testImplementation 'junit:junit:4.12' + testImplementation 'org.mockito:mockito-core:1.10.19' } -signing { - required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } - sign configurations.archives -} - -task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.sourceFiles -} - -artifacts { - archives androidSourcesJar -} - -//endregion - //region Code Coverage apply plugin: 'jacoco' @@ -218,71 +75,4 @@ coveralls.jacocoReportPath = "${buildDir}/reports/jacoco/jacocoTestReport/jacoco //endregion -// Requires apply plugin: 'com.jfrog.bintray' - -apply plugin: 'com.jfrog.bintray' - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - - publications = ["MyPublication"] - - publish = true - pkg { - repo = 'maven' - name = 'com.parse:parse-livequery-android' - userOrg = 'parse' - licenses = ['BSD'] - vcsUrl = gitLink - version { - name = project.version - desc = projDescription - released = new Date() - vcsTag = project.version - - // Sonatype username/passwrod must be set for this operation to happen - mavenCentralSync { - sync = true - user = ossrhUsername - password = ossrhPassword - close = '1' // release automatically - } - } - } -} - -// Create the publication with the pom configuration: -apply plugin: 'maven-publish' - -publishing { - publications { - MyPublication(MavenPublication) { - groupId group - artifactId artifact - artifacts = [androidSourcesJar, bundleRelease] - version version - pom.withXml { - def root = asNode() - root.appendNode('description', projDescription) - root.appendNode('name', projName) - root.appendNode('url', gitLink) - root.children().last() + pomConfig - - // maven-publish workaround to include dependencies - def dependenciesNode = asNode().appendNode('dependencies') - - //Iterate over the compile dependencies (we don't want the test ones), adding a node for each - configurations.compile.allDependencies.each { - def dependencyNode = dependenciesNode.appendNode('dependency') - dependencyNode.appendNode('groupId', it.group) - dependencyNode.appendNode('artifactId', it.name) - dependencyNode.appendNode('version', it.version) - } - - } - } - } -} - -// End of Bintray plugin +apply from: 'https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.0.0/gradle-android-javadocs.gradle' diff --git a/ParseLiveQuery/src/main/AndroidManifest.xml b/ParseLiveQuery/src/main/AndroidManifest.xml index e1d3400..eed44de 100644 --- a/ParseLiveQuery/src/main/AndroidManifest.xml +++ b/ParseLiveQuery/src/main/AndroidManifest.xml @@ -7,6 +7,4 @@ ~ LICENSE file in the root directory of this source tree. An additional grant ~ of patent rights can be found in the PATENTS file in the same directory. --> - - - + diff --git a/ParseLiveQuery/src/main/java/com/parse/ClientOperation.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ClientOperation.java similarity index 67% rename from ParseLiveQuery/src/main/java/com/parse/ClientOperation.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/ClientOperation.java index 2383a08..0c894a7 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ClientOperation.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ClientOperation.java @@ -1,10 +1,8 @@ -package com.parse; +package com.parse.livequery; import org.json.JSONException; import org.json.JSONObject; -/* package */ abstract class ClientOperation { - +abstract class ClientOperation { abstract JSONObject getJSONObjectRepresentation() throws JSONException; - } diff --git a/ParseLiveQuery/src/main/java/com/parse/ConnectClientOperation.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java similarity index 65% rename from ParseLiveQuery/src/main/java/com/parse/ConnectClientOperation.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java index 76b08ad..83f427c 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ConnectClientOperation.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java @@ -1,20 +1,20 @@ -package com.parse; +package com.parse.livequery; import org.json.JSONException; import org.json.JSONObject; -/* package */ class ConnectClientOperation extends ClientOperation { +class ConnectClientOperation extends ClientOperation { private final String applicationId; private final String sessionToken; - /* package */ ConnectClientOperation(String applicationId, String sessionToken) { + ConnectClientOperation(String applicationId, String sessionToken) { this.applicationId = applicationId; this.sessionToken = sessionToken; } @Override - /* package */ JSONObject getJSONObjectRepresentation() throws JSONException { + JSONObject getJSONObjectRepresentation() throws JSONException { JSONObject jsonObject = new JSONObject(); jsonObject.put("op", "connect"); jsonObject.put("applicationId", applicationId); diff --git a/ParseLiveQuery/src/main/java/com/parse/LiveQueryException.java b/ParseLiveQuery/src/main/java/com/parse/livequery/LiveQueryException.java similarity index 99% rename from ParseLiveQuery/src/main/java/com/parse/LiveQueryException.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/LiveQueryException.java index 1f5be2a..3863ccd 100644 --- a/ParseLiveQuery/src/main/java/com/parse/LiveQueryException.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/LiveQueryException.java @@ -1,4 +1,4 @@ -package com.parse; +package com.parse.livequery; import java.util.Locale; diff --git a/ParseLiveQuery/src/main/java/com/parse/OkHttp3SocketClientFactory.java b/ParseLiveQuery/src/main/java/com/parse/livequery/OkHttp3SocketClientFactory.java similarity index 97% rename from ParseLiveQuery/src/main/java/com/parse/OkHttp3SocketClientFactory.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/OkHttp3SocketClientFactory.java index 9dd8769..5895d1d 100644 --- a/ParseLiveQuery/src/main/java/com/parse/OkHttp3SocketClientFactory.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/OkHttp3SocketClientFactory.java @@ -1,4 +1,4 @@ -package com.parse; +package com.parse.livequery; import android.util.Log; @@ -12,7 +12,7 @@ import okhttp3.WebSocketListener; import okio.ByteString; -/* package */ public class OkHttp3SocketClientFactory implements WebSocketClientFactory { +public class OkHttp3SocketClientFactory implements WebSocketClientFactory { OkHttpClient mClient; diff --git a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClient.java similarity index 85% rename from ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClient.java index 2ec846d..9c40e5c 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClient.java @@ -1,4 +1,7 @@ -package com.parse; +package com.parse.livequery; + +import com.parse.ParseObject; +import com.parse.ParseQuery; import java.net.URI; import java.util.concurrent.Executor; @@ -38,8 +41,7 @@ public static ParseLiveQueryClient getClient(URI uri, WebSocketClientFactory web return new ParseLiveQueryClientImpl(uri, webSocketClientFactory); } - /* package */ - static ParseLiveQueryClient getClient(URI uri, WebSocketClientFactory webSocketClientFactory, Executor taskExecutor) { + public static ParseLiveQueryClient getClient(URI uri, WebSocketClientFactory webSocketClientFactory, Executor taskExecutor) { return new ParseLiveQueryClientImpl(uri, webSocketClientFactory, taskExecutor); } diff --git a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientCallbacks.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientCallbacks.java similarity index 92% rename from ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientCallbacks.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientCallbacks.java index c8275fa..ede4997 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientCallbacks.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientCallbacks.java @@ -1,4 +1,4 @@ -package com.parse; +package com.parse.livequery; public interface ParseLiveQueryClientCallbacks { void onLiveQueryClientConnected(ParseLiveQueryClient client); diff --git a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java similarity index 96% rename from ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java index 466a6f9..b736c7e 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java @@ -1,13 +1,20 @@ -package com.parse; +package com.parse.livequery; import android.util.Log; +import com.parse.PLog; +import com.parse.Parse; +import com.parse.ParseDecoder; +import com.parse.ParseObject; +import com.parse.ParsePlugins; +import com.parse.ParseQuery; +import com.parse.ParseUser; + import org.json.JSONException; import org.json.JSONObject; import java.net.URI; import java.net.URISyntaxException; -import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -19,9 +26,7 @@ import bolts.Task; import okhttp3.OkHttpClient; -import static com.parse.Parse.checkInit; - -/* package */ class ParseLiveQueryClientImpl implements ParseLiveQueryClient { +class ParseLiveQueryClientImpl implements ParseLiveQueryClient { private static final String LOG_TAG = "ParseLiveQueryClient"; @@ -57,7 +62,7 @@ } /* package */ ParseLiveQueryClientImpl(URI uri, WebSocketClientFactory webSocketClientFactory, Executor taskExecutor) { - checkInit(); + Parse.checkInit(); this.uri = uri; this.applicationId = ParsePlugins.get().applicationId(); this.clientKey = ParsePlugins.get().clientKey(); @@ -67,10 +72,8 @@ } private static URI getDefaultUri() { - URL serverUrl = ParseRESTCommand.server; - if (serverUrl == null) return null; - String url = serverUrl.toString(); - if (serverUrl.getProtocol().equals("https")) { + String url = ParsePlugins.get().server(); + if (url.contains("https")) { url = url.replaceFirst("https", "wss"); } else { url = url.replaceFirst("http", "ws"); @@ -419,14 +422,14 @@ public void onClose() { @Override public void onError(Throwable exception) { - Log.e(LOG_TAG, "Socket onError", exception); + PLog.e(LOG_TAG, "Socket onError", exception); hasReceivedConnected = false; dispatchSocketError(exception); } @Override public void stateChanged() { - Log.v(LOG_TAG, "Socket stateChanged"); + PLog.v(LOG_TAG, "Socket stateChanged"); } }; } diff --git a/ParseLiveQuery/src/main/java/com/parse/SubscribeClientOperation.java b/ParseLiveQuery/src/main/java/com/parse/livequery/SubscribeClientOperation.java similarity index 82% rename from ParseLiveQuery/src/main/java/com/parse/SubscribeClientOperation.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/SubscribeClientOperation.java index e9387d4..34c6e8b 100644 --- a/ParseLiveQuery/src/main/java/com/parse/SubscribeClientOperation.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/SubscribeClientOperation.java @@ -1,9 +1,14 @@ -package com.parse; +package com.parse.livequery; + +import com.parse.ParseObject; +import com.parse.ParseQuery; +import com.parse.PointerEncoder; +import com.parse.livequery.ClientOperation; import org.json.JSONException; import org.json.JSONObject; -/* package */ class SubscribeClientOperation extends ClientOperation { +class SubscribeClientOperation extends ClientOperation { private final int requestId; private final ParseQuery.State state; diff --git a/ParseLiveQuery/src/main/java/com/parse/Subscription.java b/ParseLiveQuery/src/main/java/com/parse/livequery/Subscription.java similarity index 95% rename from ParseLiveQuery/src/main/java/com/parse/Subscription.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/Subscription.java index d400cde..7c78739 100644 --- a/ParseLiveQuery/src/main/java/com/parse/Subscription.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/Subscription.java @@ -1,9 +1,12 @@ -package com.parse; +package com.parse.livequery; + +import com.parse.ParseObject; +import com.parse.ParseQuery; import java.util.ArrayList; import java.util.List; -/* package */ class Subscription implements SubscriptionHandling { +class Subscription implements SubscriptionHandling { private final List> handleEventsCallbacks = new ArrayList<>(); private final List> handleErrorCallbacks = new ArrayList<>(); diff --git a/ParseLiveQuery/src/main/java/com/parse/SubscriptionHandling.java b/ParseLiveQuery/src/main/java/com/parse/livequery/SubscriptionHandling.java similarity index 96% rename from ParseLiveQuery/src/main/java/com/parse/SubscriptionHandling.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/SubscriptionHandling.java index e8514d5..f6a66ca 100644 --- a/ParseLiveQuery/src/main/java/com/parse/SubscriptionHandling.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/SubscriptionHandling.java @@ -1,4 +1,7 @@ -package com.parse; +package com.parse.livequery; + +import com.parse.ParseObject; +import com.parse.ParseQuery; public interface SubscriptionHandling { diff --git a/ParseLiveQuery/src/main/java/com/parse/UnsubscribeClientOperation.java b/ParseLiveQuery/src/main/java/com/parse/livequery/UnsubscribeClientOperation.java similarity index 58% rename from ParseLiveQuery/src/main/java/com/parse/UnsubscribeClientOperation.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/UnsubscribeClientOperation.java index b11ff48..e38f690 100644 --- a/ParseLiveQuery/src/main/java/com/parse/UnsubscribeClientOperation.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/UnsubscribeClientOperation.java @@ -1,18 +1,18 @@ -package com.parse; +package com.parse.livequery; import org.json.JSONException; import org.json.JSONObject; -/* package */ class UnsubscribeClientOperation extends ClientOperation { +class UnsubscribeClientOperation extends ClientOperation { private final int requestId; - /* package */ UnsubscribeClientOperation(int requestId) { + UnsubscribeClientOperation(int requestId) { this.requestId = requestId; } @Override - /* package */ JSONObject getJSONObjectRepresentation() throws JSONException { + JSONObject getJSONObjectRepresentation() throws JSONException { JSONObject jsonObject = new JSONObject(); jsonObject.put("op", "unsubscribe"); jsonObject.put("requestId", requestId); diff --git a/ParseLiveQuery/src/main/java/com/parse/WebSocketClient.java b/ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClient.java similarity index 85% rename from ParseLiveQuery/src/main/java/com/parse/WebSocketClient.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClient.java index 2c7fb0a..2933b39 100644 --- a/ParseLiveQuery/src/main/java/com/parse/WebSocketClient.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClient.java @@ -1,6 +1,6 @@ -package com.parse; +package com.parse.livequery; -/* package */ interface WebSocketClient { +public interface WebSocketClient { void open(); diff --git a/ParseLiveQuery/src/main/java/com/parse/WebSocketClientFactory.java b/ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClientFactory.java similarity index 66% rename from ParseLiveQuery/src/main/java/com/parse/WebSocketClientFactory.java rename to ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClientFactory.java index 1a98ed1..d91154c 100644 --- a/ParseLiveQuery/src/main/java/com/parse/WebSocketClientFactory.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/WebSocketClientFactory.java @@ -1,8 +1,8 @@ -package com.parse; +package com.parse.livequery; import java.net.URI; -/* package */ interface WebSocketClientFactory { +public interface WebSocketClientFactory { WebSocketClient createInstance(WebSocketClient.WebSocketClientCallback webSocketClientCallback, URI hostUrl); diff --git a/ParseLiveQuery/src/test/java/com/parse/TestOkHttpClientFactory.java b/ParseLiveQuery/src/test/java/com/parse/TestOkHttpClientFactory.java index 1012db9..3bb0c01 100644 --- a/ParseLiveQuery/src/test/java/com/parse/TestOkHttpClientFactory.java +++ b/ParseLiveQuery/src/test/java/com/parse/TestOkHttpClientFactory.java @@ -1,5 +1,8 @@ package com.parse; +import com.parse.livequery.OkHttp3SocketClientFactory; +import com.parse.livequery.WebSocketClient; + import junit.framework.Assert; import org.junit.After; @@ -13,7 +16,7 @@ import okhttp3.OkHttpClient; -import static com.parse.WebSocketClient.State.NONE; +import static com.parse.livequery.WebSocketClient.State.NONE; @RunWith(MockitoJUnitRunner.class) public class TestOkHttpClientFactory { diff --git a/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java b/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java index ec2c5ca..11af858 100644 --- a/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java +++ b/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java @@ -1,6 +1,13 @@ package com.parse; -import org.assertj.core.api.Assertions; +import com.parse.livequery.BuildConfig; +import com.parse.livequery.LiveQueryException; +import com.parse.livequery.ParseLiveQueryClient; +import com.parse.livequery.ParseLiveQueryClientCallbacks; +import com.parse.livequery.SubscriptionHandling; +import com.parse.livequery.WebSocketClient; +import com.parse.livequery.WebSocketClientFactory; + import org.json.JSONException; import org.json.JSONObject; import org.junit.After; @@ -34,7 +41,6 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.parse.livequery.BuildConfig; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) @@ -48,7 +54,10 @@ public class TestParseLiveQueryClient { @Before public void setUp() throws Exception { - ParsePlugins.initialize("1234", "1234"); + Parse.Configuration configuration = new Parse.Configuration.Builder(null) + .applicationId("1234") + .build(); + ParsePlugins.initialize(null, configuration); // Register a mock currentUserController to make getCurrentUser work mockUser = mock(ParseUser.class); @@ -467,7 +476,7 @@ public void testCallbackNotifiedOnServerError() throws Exception { callbacks.transcript.assertNoEventsSoFar(); webSocketClientCallback.onMessage(createErrorMessage(1).toString()); - callbacks.transcript.assertEventsSoFar("onLiveQueryError: com.parse.LiveQueryException$ServerReportedException: Server reported error; code: 1, error: testError, reconnect: true"); + callbacks.transcript.assertEventsSoFar("onLiveQueryError: com.parse.livequery.LiveQueryException$ServerReportedException: Server reported error; code: 1, error: testError, reconnect: true"); } private SubscriptionHandling createSubscription(ParseQuery parseQuery, diff --git a/README.md b/README.md index cd2e6ab..159fcd2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@ # Parse LiveQuery Client for Android -[![Build Status][build-status-svg]][build-status-link] -[![Coverage Status][coverage-status-svg]][coverage-status-link] -[![Maven Central][maven-svg]][maven-link] -[![License][license-svg]][license-link] +[![License][license-svg]][license-link] [![Build Status][build-status-svg]][build-status-link] [![](https://jitpack.io/v/parse-community/ParseLiveQuery-Android.svg)](https://jitpack.io/#parse-community/ParseLiveQuery-Android) `ParseQuery` is one of the key concepts for Parse. It allows you to retrieve `ParseObject`s by specifying some conditions, making it easy to build apps such as a dashboard, a todo list or even some strategy games. However, `ParseQuery` is based on a pull model, which is not suitable for apps that need real-time support. @@ -16,20 +13,28 @@ Parse LiveQuery contains two parts, the LiveQuery server and the LiveQuery clien The easiest way to setup the LiveQuery server is to make it run with the [Open Source Parse Server](https://github.com/parse-community/parse-server/wiki/Parse-LiveQuery#server-setup). -## Setup Client -Download [the latest JAR][latest] or define in Gradle: +## Dependency -```groovy -dependencies { - compile 'com.parse:parse-livequery-android:1.0.6' +Add this in your root `build.gradle` file (**not** your module `build.gradle` file): + +```gradle +allprojects { + repositories { + ... + maven { url "https://jitpack.io" } + } } ``` -Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap]. +Then, add the library to your project `build.gradle` +```gradle +dependencies { + implementation 'com.github.parse-community:ParseLiveQuery-Android:latest.version.here' +} +``` ## Use Client - The LiveQuery client interface is based around the concept of `Subscriptions`. You can register any `ParseQuery` for live updates from the associated live query server, by simply calling `subscribe()` on the client: ```java // Parse.initialize should be called first @@ -85,47 +90,15 @@ ParseLiveQueryClient parseLiveQueryClient = ParseLiveQueryClient.Factory.getClie Note: The expected protocol for URI is `ws` instead of `http`, like in this example: `URI("ws://192.168.0.1:1337/1")`. -## Build commands -Everything can done through the supplied gradle wrapper: - -### Compile a JAR -``` -./gradlew clean jarRelease -``` -Outputs can be found in `ParseLiveQuery/build/libs/` - -### Run the Tests -``` -./gradlew clean testDebug -``` -Results can be found in `ParseLiveQuery/build/reports/` - -### Get Code Coverage Reports -``` -./gradlew clean jacocoTestReport -``` -Results can be found in `ParseLiveQuery/build/reports/` - ## How Do I Contribute? -We want to make contributing to this project as easy and transparent as possible. Please refer to the [Contribution Guidelines](CONTRIBUTING.md). +We want to make contributing to this project as easy and transparent as possible. Please refer to the [Contribution Guidelines](https://github.com/parse-community/Parse-SDK-Android/blob/master/CONTRIBUTING.md). ----- As of April 5, 2017, Parse, LLC has transferred this code to the parse-community organization, and will no longer be contributing to or distributing this code. - [parse.com]: https://www.parse.com/products/android - [guide]: https://www.parse.com/docs/android/guide - [blog]: https://blog.parse.com/ - - [latest]: https://search.maven.org/remote_content?g=com.parse&a=parse-livequery-android&v=LATEST - [snap]: https://oss.sonatype.org/content/repositories/snapshots/ - [build-status-svg]: https://img.shields.io/travis/parse-community/ParseLiveQuery-Android/master.svg [build-status-link]: https://travis-ci.org/parse-community/ParseLiveQuery-Android/branches - [coverage-status-svg]: https://img.shields.io/codecov/c/github/parse-community/ParseLiveQuery-Android/master.svg - [coverage-status-link]: https://codecov.io/github/parse-community/ParseLiveQuery-Android?branch=master - [maven-svg]: https://maven-badges.herokuapp.com/maven-central/com.parse/parse-livequery-android/badge.svg?style=flat - [maven-link]: https://maven-badges.herokuapp.com/maven-central/com.parse/parse-livequery-android [license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg [license-link]: https://github.com/parse-community/ParseLiveQuery-Android/blob/master/LICENSE diff --git a/build.gradle b/build.gradle index 3c1b22c..a47c3dc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,27 +1,26 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { + google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.0' + classpath 'com.android.tools.build:gradle:3.1.3' + classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' } } plugins { - id "com.jfrog.bintray" version "1.7.3" + id 'com.github.ben-manes.versions' version '0.20.0' } allprojects { repositories { + google() jcenter() } } -ext { - compileSdkVersion = 25 - buildToolsVersion = "25.0.2" - - minSdkVersion = 9 - targetSdkVersion = 25 +task clean(type: Delete) { + delete rootProject.buildDir } diff --git a/gradle/ExcludeDoclet.jar b/gradle/ExcludeDoclet.jar deleted file mode 100644 index 0fb5f89dc52371d8fbcdb0ff58c32dd781233fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3539 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 o1_w0`8j?RXMrrt6cqqKIJAHI7g&)0;{X5v diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b3d5b71..d03539a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-all.zip diff --git a/scripts/publish_snapshot.sh b/scripts/publish_snapshot.sh deleted file mode 100755 index 38abf0a..0000000 --- a/scripts/publish_snapshot.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# Publishes SNAPSHOTs - -REPO_SLUG=parse-community/ParseLiveQuery-Android -BRANCH=master - -set -e - -if [ "$TRAVIS_REPO_SLUG" != "$REPO_SLUG" ]; then - echo "Skipping publishing SNAPSHOT: wrong repository. Expected '$REPO_SLUG' but was '$TRAVIS_REPO_SLUG'" -elif [ "$TRAVIS_PULL_REQUEST" != "false" ]; then - echo "Skipping publishing SNAPSHOT: was PR" -elif [ "$TRAVIS_BRANCH" != "$BRANCH" ]; then - echo "Skipping publishing SNAPSHOT: wrong branch. Expected '$BRANCH' but was '$TRAVIS_BRANCH'" -else - echo "Publishing SNAPSHOT..." - ./gradlew uploadArchives - echo "SNAPSHOT published!" -fi From a6d6b58941893aefca67e57db0d0651055763234 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 23 Jul 2018 09:57:54 -0500 Subject: [PATCH 2/2] Add jitpack to build config --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index a47c3dc..517c195 100644 --- a/build.gradle +++ b/build.gradle @@ -18,6 +18,7 @@ allprojects { repositories { google() jcenter() + maven { url "https://jitpack.io" } } }