aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:47:10 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:47:10 +0000
commit0bacdaec55cb5c0bf5ae8aef1c8fac917241e20c (patch)
treebafe6d115be2559d39c73bfd437bb9d14e3d596a
parent5852725ee5bc9f5310ef05f2ca7d8207dc6aab47 (diff)
parent5731f9f9aea90e074693bdfdeb3b58fd218e374d (diff)
downloadvolley-aml_tz3_314012010.tar.gz
Change-Id: I13e53f2c5a35a1ead2356b12d78400ef75b96057
-rw-r--r--.github/workflows/gradle-build.yaml28
-rw-r--r--.travis.yml41
-rw-r--r--Android.bp3
-rw-r--r--bintray.gradle78
-rw-r--r--build.gradle104
-rw-r--r--consumer-proguard-rules.pro (renamed from core/consumer-proguard-rules.pro)0
-rw-r--r--core/build.gradle28
-rw-r--r--cronet/build.gradle24
-rw-r--r--cronet/src/main/AndroidManifest.xml2
-rwxr-xr-xpublish-snapshot-on-commit.sh16
-rw-r--r--publish.gradle72
-rw-r--r--rules.gradle36
-rw-r--r--settings.gradle4
-rw-r--r--src/main/AndroidManifest.xml (renamed from core/src/main/AndroidManifest.xml)0
-rw-r--r--src/main/java/com/android/volley/AsyncCache.java (renamed from core/src/main/java/com/android/volley/AsyncCache.java)7
-rw-r--r--src/main/java/com/android/volley/AsyncNetwork.java (renamed from core/src/main/java/com/android/volley/AsyncNetwork.java)7
-rw-r--r--src/main/java/com/android/volley/AsyncRequestQueue.java (renamed from core/src/main/java/com/android/volley/AsyncRequestQueue.java)124
-rw-r--r--src/main/java/com/android/volley/AuthFailureError.java (renamed from core/src/main/java/com/android/volley/AuthFailureError.java)0
-rw-r--r--src/main/java/com/android/volley/Cache.java (renamed from core/src/main/java/com/android/volley/Cache.java)12
-rw-r--r--src/main/java/com/android/volley/CacheDispatcher.java (renamed from core/src/main/java/com/android/volley/CacheDispatcher.java)10
-rw-r--r--src/main/java/com/android/volley/ClientError.java (renamed from core/src/main/java/com/android/volley/ClientError.java)0
-rw-r--r--src/main/java/com/android/volley/DefaultRetryPolicy.java (renamed from core/src/main/java/com/android/volley/DefaultRetryPolicy.java)0
-rw-r--r--src/main/java/com/android/volley/ExecutorDelivery.java (renamed from core/src/main/java/com/android/volley/ExecutorDelivery.java)0
-rw-r--r--src/main/java/com/android/volley/Header.java (renamed from core/src/main/java/com/android/volley/Header.java)0
-rw-r--r--src/main/java/com/android/volley/Network.java (renamed from core/src/main/java/com/android/volley/Network.java)0
-rw-r--r--src/main/java/com/android/volley/NetworkDispatcher.java (renamed from core/src/main/java/com/android/volley/NetworkDispatcher.java)0
-rw-r--r--src/main/java/com/android/volley/NetworkError.java (renamed from core/src/main/java/com/android/volley/NetworkError.java)0
-rw-r--r--src/main/java/com/android/volley/NetworkResponse.java (renamed from core/src/main/java/com/android/volley/NetworkResponse.java)0
-rw-r--r--src/main/java/com/android/volley/NoConnectionError.java (renamed from core/src/main/java/com/android/volley/NoConnectionError.java)0
-rw-r--r--src/main/java/com/android/volley/ParseError.java (renamed from core/src/main/java/com/android/volley/ParseError.java)0
-rw-r--r--src/main/java/com/android/volley/Request.java (renamed from core/src/main/java/com/android/volley/Request.java)12
-rw-r--r--src/main/java/com/android/volley/RequestQueue.java (renamed from core/src/main/java/com/android/volley/RequestQueue.java)0
-rw-r--r--src/main/java/com/android/volley/RequestTask.java (renamed from core/src/main/java/com/android/volley/RequestTask.java)7
-rw-r--r--src/main/java/com/android/volley/Response.java (renamed from core/src/main/java/com/android/volley/Response.java)0
-rw-r--r--src/main/java/com/android/volley/ResponseDelivery.java (renamed from core/src/main/java/com/android/volley/ResponseDelivery.java)0
-rw-r--r--src/main/java/com/android/volley/RetryPolicy.java (renamed from core/src/main/java/com/android/volley/RetryPolicy.java)0
-rw-r--r--src/main/java/com/android/volley/ServerError.java (renamed from core/src/main/java/com/android/volley/ServerError.java)0
-rw-r--r--src/main/java/com/android/volley/TimeoutError.java (renamed from core/src/main/java/com/android/volley/TimeoutError.java)0
-rw-r--r--src/main/java/com/android/volley/VolleyError.java (renamed from core/src/main/java/com/android/volley/VolleyError.java)0
-rw-r--r--src/main/java/com/android/volley/VolleyLog.java (renamed from core/src/main/java/com/android/volley/VolleyLog.java)0
-rw-r--r--src/main/java/com/android/volley/WaitingRequestManager.java (renamed from core/src/main/java/com/android/volley/WaitingRequestManager.java)0
-rw-r--r--src/main/java/com/android/volley/cronet/CronetHttpStack.java (renamed from cronet/src/main/java/com/android/volley/cronet/CronetHttpStack.java)3
-rw-r--r--src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java (renamed from core/src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java (renamed from core/src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/AsyncHttpStack.java (renamed from core/src/main/java/com/android/volley/toolbox/AsyncHttpStack.java)7
-rw-r--r--src/main/java/com/android/volley/toolbox/Authenticator.java (renamed from core/src/main/java/com/android/volley/toolbox/Authenticator.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/BaseHttpStack.java (renamed from core/src/main/java/com/android/volley/toolbox/BaseHttpStack.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java (renamed from core/src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java)42
-rw-r--r--src/main/java/com/android/volley/toolbox/BasicNetwork.java (renamed from core/src/main/java/com/android/volley/toolbox/BasicNetwork.java)8
-rw-r--r--src/main/java/com/android/volley/toolbox/ByteArrayPool.java (renamed from core/src/main/java/com/android/volley/toolbox/ByteArrayPool.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/ClearCacheRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/ClearCacheRequest.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/DiskBasedCache.java (renamed from core/src/main/java/com/android/volley/toolbox/DiskBasedCache.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/FileSupplier.java (renamed from core/src/main/java/com/android/volley/toolbox/FileSupplier.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/HttpClientStack.java (renamed from core/src/main/java/com/android/volley/toolbox/HttpClientStack.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/HttpHeaderParser.java (renamed from core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/HttpResponse.java (renamed from core/src/main/java/com/android/volley/toolbox/HttpResponse.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/HttpStack.java (renamed from core/src/main/java/com/android/volley/toolbox/HttpStack.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/HurlStack.java (renamed from core/src/main/java/com/android/volley/toolbox/HurlStack.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/ImageLoader.java (renamed from core/src/main/java/com/android/volley/toolbox/ImageLoader.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/ImageRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/ImageRequest.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/JsonArrayRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java)7
-rw-r--r--src/main/java/com/android/volley/toolbox/JsonObjectRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/JsonObjectRequest.java)37
-rw-r--r--src/main/java/com/android/volley/toolbox/JsonRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/JsonRequest.java)10
-rw-r--r--src/main/java/com/android/volley/toolbox/NetworkImageView.java (renamed from core/src/main/java/com/android/volley/toolbox/NetworkImageView.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/NetworkUtility.java (renamed from core/src/main/java/com/android/volley/toolbox/NetworkUtility.java)62
-rw-r--r--src/main/java/com/android/volley/toolbox/NoAsyncCache.java (renamed from core/src/main/java/com/android/volley/toolbox/NoAsyncCache.java)7
-rw-r--r--src/main/java/com/android/volley/toolbox/NoCache.java (renamed from core/src/main/java/com/android/volley/toolbox/NoCache.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java (renamed from core/src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/RequestFuture.java (renamed from core/src/main/java/com/android/volley/toolbox/RequestFuture.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/StringRequest.java (renamed from core/src/main/java/com/android/volley/toolbox/StringRequest.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/Threads.java (renamed from core/src/main/java/com/android/volley/toolbox/Threads.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/UrlRewriter.java (renamed from core/src/main/java/com/android/volley/toolbox/UrlRewriter.java)0
-rw-r--r--src/main/java/com/android/volley/toolbox/Volley.java (renamed from core/src/main/java/com/android/volley/toolbox/Volley.java)5
-rw-r--r--src/test/java/com/android/volley/AsyncRequestQueueTest.java (renamed from core/src/test/java/com/android/volley/AsyncRequestQueueTest.java)88
-rw-r--r--src/test/java/com/android/volley/CacheDispatcherTest.java (renamed from core/src/test/java/com/android/volley/CacheDispatcherTest.java)0
-rw-r--r--src/test/java/com/android/volley/NetworkDispatcherTest.java (renamed from core/src/test/java/com/android/volley/NetworkDispatcherTest.java)0
-rw-r--r--src/test/java/com/android/volley/NetworkResponseTest.java (renamed from core/src/test/java/com/android/volley/NetworkResponseTest.java)0
-rw-r--r--src/test/java/com/android/volley/RequestQueueIntegrationTest.java (renamed from core/src/test/java/com/android/volley/RequestQueueIntegrationTest.java)0
-rw-r--r--src/test/java/com/android/volley/RequestQueueTest.java (renamed from core/src/test/java/com/android/volley/RequestQueueTest.java)0
-rw-r--r--src/test/java/com/android/volley/RequestTest.java (renamed from core/src/test/java/com/android/volley/RequestTest.java)0
-rw-r--r--src/test/java/com/android/volley/ResponseDeliveryTest.java (renamed from core/src/test/java/com/android/volley/ResponseDeliveryTest.java)0
-rw-r--r--src/test/java/com/android/volley/cronet/CronetHttpStackTest.java (renamed from cronet/src/test/java/com/android/volley/cronet/CronetHttpStackTest.java)0
-rw-r--r--src/test/java/com/android/volley/mock/MockAsyncStack.java (renamed from core/src/test/java/com/android/volley/mock/MockAsyncStack.java)0
-rw-r--r--src/test/java/com/android/volley/mock/MockHttpStack.java (renamed from core/src/test/java/com/android/volley/mock/MockHttpStack.java)0
-rw-r--r--src/test/java/com/android/volley/mock/MockRequest.java (renamed from core/src/test/java/com/android/volley/mock/MockRequest.java)0
-rw-r--r--src/test/java/com/android/volley/mock/ShadowSystemClock.java (renamed from core/src/test/java/com/android/volley/mock/ShadowSystemClock.java)0
-rw-r--r--src/test/java/com/android/volley/mock/TestRequest.java (renamed from testing/src/main/java/com/android/volley/mock/TestRequest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java (renamed from core/src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java (renamed from core/src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java (renamed from core/src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java (renamed from core/src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/BasicNetworkTest.java (renamed from core/src/test/java/com/android/volley/toolbox/BasicNetworkTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java (renamed from core/src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/CacheTest.java (renamed from core/src/test/java/com/android/volley/toolbox/CacheTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java (renamed from core/src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/HttpClientStackTest.java (renamed from core/src/test/java/com/android/volley/toolbox/HttpClientStackTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java (renamed from core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java (renamed from core/src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/HurlStackTest.java (renamed from core/src/test/java/com/android/volley/toolbox/HurlStackTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/ImageLoaderTest.java (renamed from core/src/test/java/com/android/volley/toolbox/ImageLoaderTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/ImageRequestTest.java (renamed from core/src/test/java/com/android/volley/toolbox/ImageRequestTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java (renamed from core/src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/JsonRequestTest.java (renamed from core/src/test/java/com/android/volley/toolbox/JsonRequestTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java (renamed from core/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java (renamed from core/src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/RequestFutureTest.java (renamed from core/src/test/java/com/android/volley/toolbox/RequestFutureTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/RequestQueueTest.java (renamed from core/src/test/java/com/android/volley/toolbox/RequestQueueTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/RequestTest.java (renamed from core/src/test/java/com/android/volley/toolbox/RequestTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/ResponseTest.java (renamed from core/src/test/java/com/android/volley/toolbox/ResponseTest.java)0
-rw-r--r--src/test/java/com/android/volley/toolbox/StringRequestTest.java (renamed from core/src/test/java/com/android/volley/toolbox/StringRequestTest.java)0
-rw-r--r--src/test/java/com/android/volley/utils/CacheTestUtils.java (renamed from core/src/test/java/com/android/volley/utils/CacheTestUtils.java)0
-rw-r--r--src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java (renamed from core/src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java)0
-rw-r--r--src/test/resources/org.robolectric.Config.properties (renamed from core/src/test/resources/org.robolectric.Config.properties)0
-rw-r--r--testing/build.gradle4
-rw-r--r--testing/src/main/AndroidManifest.xml2
115 files changed, 337 insertions, 560 deletions
diff --git a/.github/workflows/gradle-build.yaml b/.github/workflows/gradle-build.yaml
deleted file mode 100644
index c42648c..0000000
--- a/.github/workflows/gradle-build.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Gradle
-
-on: [push, pull_request]
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 1.8
- uses: actions/setup-java@v1
- with:
- java-version: 1.8
- - name: Cache Gradle packages
- uses: actions/cache@v2
- with:
- path: ~/.gradle/caches
- key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- restore-keys: ${{ runner.os }}-gradle
- - name: Build with Gradle
- run: ./gradlew --continue verifyGoogleJavaFormat build connectedCheck
- - name: Publish snapshot
- if: github.event_name == 'push'
- env:
- OSSRH_DEPLOY_USERNAME: ${{ secrets.OSSRH_DEPLOY_USERNAME }}
- OSSRH_DEPLOY_PASSWORD: ${{ secrets.OSSRH_DEPLOY_PASSWORD }}
- run: ./publish-snapshot-on-commit.sh
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..fb6481a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,41 @@
+language: android
+android:
+ licenses:
+ - 'android-sdk-preview-license-.+'
+ - 'android-sdk-license-.+'
+ - 'google-gdk-license-.+'
+
+ components:
+ # Workaround to be able to install v28 SDK and build tools.
+ # See https://github.com/travis-ci/travis-ci/issues/6040
+ - tools # to update the repository XML files
+ - tools # to update the SDK tools themselves
+
+ - platform-tools
+ - build-tools-28.0.3
+ - android-28
+
+jdk:
+ - oraclejdk8
+
+# Avoid uploading the cache after every build
+# See https://docs.travis-ci.com/user/languages/android/
+before_cache:
+ - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
+ - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+ - rm -fr $HOME/.gradle/caches/*/classAnalysis/
+ - rm -fr $HOME/.gradle/caches/*/workerMain/
+cache:
+ directories:
+ - $HOME/.gradle/caches/
+ - $HOME/.gradle/wrapper/
+ - $HOME/.android/build-cache
+
+env:
+ global:
+ - secure: "ObTSgg1H/RoQwhf9735Cr0OEs7r296aQTKiVOmQYSIxZPzc7o2KveSVV8IVeQ+VQtDxPFij6Odk4gaQSKVytliTlgtSsrEaYt67yWWYLWBLWbnzLNYoWMMy+36O5BK78RNtVJ3Xr1mdMcZ2+SRj2TcEvQBqMWlUkJfEcmJttreq0Wd7jiNitv5MbyYRcd2AvKaqNilx5rEm1ihbE0wT3lH20EdAjjjckaBT04r+VXU9e0dg6tmZjqG8dxGzxYHLRTz7nmKXlUnOJ3steNPrmR/AsGqKW6Ppowi31t3iLpL3zdT0+mvzfvnQwBodqHWSU/JhVDGlePv+4a5aU80s+5nN1IKL7tTLGYWoKdoIuQLovRkdcdkuj8UNyftPj6qOO2C9Tk8j64WXwUIDRnmNfjXbFzqN51oiT94G6hPcEDQSxLwuqlmgNm9I9WxZidb5YotIN2BcIKthAvdL4ecxE5INJvss8DVdYUZ53000GqSoMv8WET6jYkSJPKfvmTgpqqYIW0sgMiDfO/ta/MTFG5kSqECL+sAFZNmugwmTc7NIdy29myCyLH/A6oM4n3QeFDDHhOl2cRYlsX3juzw2goRppR9sEosFN0D1T7Fije5RmJsPgVLGwYMxSGukAHufcatKfhccUVl+haSJ3PLQ1z+25Ug2kpJwMAHbUYWCBnew="
+ - secure: "Ac95rbJd5dgNdK8ZlaeXpkKYXHGNj8pm4eNv1Oe8YtsByshHtBAK1m55H4Ex55oRXaLXntvQwnnJfqeTDPuqvd7QP1fjvp4Yjdaqa8MkC6qdVtm6LaqsGuE38uSiU6oxJKfnlCywNe2LfFlbzBtPd3ejNI7tfJcO3s1mD2aBT46vmwUy0t5ESxNdP2zUs6DFcbaOUWeJhQn8iNdRm2VbHEMdevzvvXXIUB9YUdBZQIuAZ5E8NRP5/dzPE8P0CY6/yXqQ/6bkXRV3Pf9QsRzJ+oEQVJAIFfC4JAGasgaBIVpaJ2C2At39jrNFpGYUNbHxvkBEal+WiaPk5TfmVbpyWJOTPRaaY3tIRdBbYf6kklnQk2jRJB6GCi4/yvT6oNjTQQEwsuYlaivkibwNehQqtqyjj12CcTI7lwbgNXeLvIWE6LNLIxrY4pnNy3bKjA0oLFoG/FuP3Wi9WldBtVXwvUBVFFXeOgzP6lCDkzGYTwYZi20lRmSgma3Q5e3/BbPtos3BZ9dSY3lUjttGxvHEDCJ48U1aw6usR91ZKD78Thb5OxWLkvs4rjWEDU2I649wiYSyqFldNEnv+2SJSRB+097XEcnCopGXorlMhBMAlhwHyiRY1u0D+9qrpfIl9Z07j0ZiG5uIscDXQZZjMivqe/+u8NJ3kN0zrDO5BQEgNls="
+
+# Publish a SNAPSHOT build for all commits to master.
+script:
+ - ./gradlew --continue verifyGoogleJavaFormat build connectedCheck && ./publish-snapshot-on-commit.sh
diff --git a/Android.bp b/Android.bp
index 917048f..803b4f2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -36,10 +36,11 @@ java_library {
name: "volley",
sdk_version: "28",
min_sdk_version: "8",
- srcs: ["core/src/main/java/**/*.java"],
+ srcs: ["src/main/java/**/*.java"],
// Exclude Cronet support for now. Can be enabled later if/when Cronet is made available as a
// compilation dependency for Volley clients.
+ exclude_srcs: ["src/main/java/com/android/volley/cronet/**/*"],
libs: [
// Only needed at compile-time.
diff --git a/bintray.gradle b/bintray.gradle
new file mode 100644
index 0000000..b642b41
--- /dev/null
+++ b/bintray.gradle
@@ -0,0 +1,78 @@
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.8.1"
+ }
+}
+
+// apply the plugin with its class name rather than its Id to work around gradle limitation of
+// not being able to find the plugin by Id despite the dependencies being added right above. Gradle
+// is currently not capable of loading plugins by Id if the dependency is anywhere else than
+// in the main project build.gradle. This file is "imported" into the project's build.gradle
+// through a "apply from:".
+apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
+apply plugin: 'maven-publish'
+
+task sourcesJar(type: Jar) {
+ classifier = 'sources'
+ from android.sourceSets.main.java.srcDirs
+}
+
+task javadoc(type: Javadoc) {
+ source = android.sourceSets.main.java.srcDirs
+ classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+}
+
+task javadocJar(type: Jar, dependsOn: javadoc) {
+ classifier = 'javadoc'
+ from javadoc.destinationDir
+}
+
+artifacts {
+ archives javadocJar
+ archives sourcesJar
+}
+
+publishing {
+ publications {
+ library(MavenPublication) {
+ groupId 'com.android.volley'
+ artifactId 'volley'
+ version project.version
+ pom {
+ packaging 'aar'
+ licenses {
+ license {
+ name = "The Apache License, Version 2.0"
+ url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
+ }
+ }
+ }
+
+ // Release AAR, Sources, and JavaDoc
+ artifact "$buildDir/outputs/aar/volley-release.aar"
+ artifact sourcesJar
+ artifact javadocJar
+ }
+ }
+}
+
+artifactory {
+ contextUrl = "https://oss.jfrog.org"
+ publish {
+ repository {
+ repoKey = 'oss-snapshot-local'
+ username = System.env.CI_DEPLOY_USERNAME
+ password = System.env.CI_DEPLOY_PASSWORD
+ }
+ defaults {
+ publications('library')
+ publishArtifacts = true
+ }
+ }
+ resolve {
+ repoKey = 'jcenter'
+ }
+}
diff --git a/build.gradle b/build.gradle
index b8db952..544771c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,72 +1,76 @@
+// NOTE: The only changes that belong in this file are the definitions
+// of tool versions (gradle plugin, compile SDK, build tools), so that
+// Volley can be built via gradle as a standalone project.
+//
+// Any other changes to the build config belong in rules.gradle, which
+// is used by projects that depend on Volley but define their own
+// tools versions across all dependencies to ensure a consistent build.
+//
+// Most users should just add this line to settings.gradle:
+// include(":volley")
+//
+// If you have a more complicated Gradle setup you can choose to use
+// this instead:
+// include(":volley")
+// project(':volley').buildFileName = 'rules.gradle'
+
+import net.ltgt.gradle.errorprone.CheckSeverity
+
buildscript {
repositories {
- gradlePluginPortal()
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
- classpath 'gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.6'
- // NOTE: 0.7 or newer will require upgrading to a newer Android gradle plugin:
- // https://github.com/tbroyer/gradle-errorprone-plugin/commit/65b1026ebeae1b7ed8c28578c7f6eea512c16bea
- classpath 'net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:0.6.1'
}
}
-allprojects {
- repositories {
- jcenter()
- google()
- }
+plugins {
+ id "com.github.sherter.google-java-format" version "0.6"
+ // NOTE: 0.7 or newer will require upgrading to a newer Android gradle plugin:
+ // https://github.com/tbroyer/gradle-errorprone-plugin/commit/65b1026ebeae1b7ed8c28578c7f6eea512c16bea
+ id "net.ltgt.errorprone" version "0.6.1"
}
-subprojects {
- apply plugin: 'com.github.sherter.google-java-format'
- apply plugin: 'net.ltgt.errorprone'
-
- googleJavaFormat {
- toolVersion = '1.5'
- options style: 'AOSP'
- }
-
- apply plugin: 'com.android.library'
-
- dependencies {
- // NOTE: Updating ErrorProne introduces new checks that may cause the build to fail. Pin to a
- // specific version to control these updates.
- errorprone("com.google.errorprone:error_prone_core:2.3.2")
- // ErrorProne requires a JDK 9 compiler, so pull one in as a dependency since we use Java 8:
- // https://github.com/tbroyer/gradle-errorprone-plugin#jdk-8-support
- errorproneJavac("com.google.errorprone:javac:9+181-r4173-1")
- }
+googleJavaFormat {
+ toolVersion = '1.5'
+ options style: 'AOSP'
+}
- group = 'com.android.volley'
- version = '1.2.1-SNAPSHOT'
+apply plugin: 'com.android.library'
- android {
- useLibrary 'org.apache.http.legacy'
+repositories {
+ jcenter()
+ google()
+}
- compileSdkVersion 28
- buildToolsVersion = '28.0.3'
+dependencies {
+ // NOTE: Updating ErrorProne introduces new checks that may cause the build to fail. Pin to a
+ // specific version to control these updates.
+ errorprone("com.google.errorprone:error_prone_core:2.3.2")
+ // ErrorProne requires a JDK 9 compiler, so pull one in as a dependency since we use Java 8:
+ // https://github.com/tbroyer/gradle-errorprone-plugin#jdk-8-support
+ errorproneJavac("com.google.errorprone:javac:9+181-r4173-1")
+}
- defaultConfig {
- minSdkVersion 8
- }
+group = 'com.android.volley'
+version = '1.2.0-SNAPSHOT'
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_7
- targetCompatibility JavaVersion.VERSION_1_7
- }
- }
+android {
+ compileSdkVersion 28
+ buildToolsVersion = '28.0.3'
- tasks.withType(JavaCompile) {
- options.errorprone {
- check("ParameterComment", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)
- }
- options.compilerArgs << "-Xlint:unchecked" << "-Werror"
+ defaultConfig {
+ minSdkVersion 8
}
+}
- if (it.name != 'testing') {
- apply from: '../publish.gradle'
+tasks.withType(JavaCompile) {
+ options.errorprone {
+ check("ParameterComment", CheckSeverity.ERROR)
}
}
+
+apply from: 'rules.gradle'
+apply from: 'bintray.gradle'
diff --git a/core/consumer-proguard-rules.pro b/consumer-proguard-rules.pro
index 38d2cf1..38d2cf1 100644
--- a/core/consumer-proguard-rules.pro
+++ b/consumer-proguard-rules.pro
diff --git a/core/build.gradle b/core/build.gradle
deleted file mode 100644
index 812968c..0000000
--- a/core/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-android {
- defaultConfig {
- consumerProguardFiles 'consumer-proguard-rules.pro'
- }
-}
-
-dependencies {
- implementation "androidx.annotation:annotation:1.0.1"
-
- testImplementation project(":testing")
- testImplementation "junit:junit:4.12"
- testImplementation "org.hamcrest:hamcrest-library:1.3"
- testImplementation "org.mockito:mockito-core:2.19.0"
- testImplementation "org.robolectric:robolectric:3.4.2"
-}
-
-publishing {
- publications {
- library(MavenPublication) {
- artifactId 'volley'
- pom {
- name = 'Volley'
- description = 'An HTTP library that makes networking for Android apps easier and, most importantly, faster.'
- }
- artifact "$buildDir/outputs/aar/core-release.aar"
- }
- }
-}
diff --git a/cronet/build.gradle b/cronet/build.gradle
deleted file mode 100644
index 5ee53d6..0000000
--- a/cronet/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-dependencies {
- implementation project(":core")
- implementation "androidx.annotation:annotation:1.0.1"
- compileOnly "org.chromium.net:cronet-embedded:76.3809.111"
-
- testImplementation project(":testing")
- testImplementation "org.chromium.net:cronet-embedded:76.3809.111"
- testImplementation "junit:junit:4.12"
- testImplementation "org.mockito:mockito-core:2.19.0"
- testImplementation "org.robolectric:robolectric:3.4.2"
-}
-
-publishing {
- publications {
- library(MavenPublication) {
- artifactId 'volley-cronet'
- pom {
- name = 'Volley Cronet'
- description = 'Cronet support for Volley.'
- }
- artifact "$buildDir/outputs/aar/cronet-release.aar"
- }
- }
-}
diff --git a/cronet/src/main/AndroidManifest.xml b/cronet/src/main/AndroidManifest.xml
deleted file mode 100644
index 0dec093..0000000
--- a/cronet/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.android.volley.cronet" />
diff --git a/publish-snapshot-on-commit.sh b/publish-snapshot-on-commit.sh
index ba02b79..0d0e034 100755
--- a/publish-snapshot-on-commit.sh
+++ b/publish-snapshot-on-commit.sh
@@ -1,15 +1,13 @@
set -eu
-GITHUB_BRANCH=${GITHUB_REF#refs/heads/}
+if [ "$TRAVIS_REPO_SLUG" == "google/volley" ] && \
+ [ "$TRAVIS_PULL_REQUEST" == "false" ] && \
+ [ "$TRAVIS_BRANCH" == "master" ]; then
+ echo -e "Publishing snapshot build to OJO...\n"
-if [ "$GITHUB_REPOSITORY" == "google/volley" ] && \
- [ "$GITHUB_EVENT_NAME" == "push" ] && \
- [ "$GITHUB_BRANCH" == "master" ]; then
- echo -e "Publishing snapshot build...\n"
+ ./gradlew artifactoryPublish
- ./gradlew publish
-
- echo -e "Published snapshot build"
+ echo -e "Published snapshot build to OJO"
else
echo -e "Not publishing snapshot"
-fi
+fi \ No newline at end of file
diff --git a/publish.gradle b/publish.gradle
deleted file mode 100644
index 429df4d..0000000
--- a/publish.gradle
+++ /dev/null
@@ -1,72 +0,0 @@
-apply plugin: 'maven-publish'
-
-task sourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.srcDirs
-}
-
-task javadoc(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
-}
-
-afterEvaluate {
- javadoc.classpath += files(android.libraryVariants.collect { variant ->
- variant.getJavaCompile().classpath.files
- })
-}
-
-task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from javadoc.destinationDir
-}
-
-artifacts {
- archives javadocJar
- archives sourcesJar
-}
-
-publishing {
- publications {
- library(MavenPublication) {
- groupId 'com.android.volley'
- version project.version
- pom {
- name = 'Volley'
- url = 'https://github.com/google/volley'
- packaging 'aar'
- licenses {
- license {
- name = "The Apache License, Version 2.0"
- url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
- }
- }
- scm {
- connection = 'scm:git:git://github.com/google/volley.git'
- developerConnection = 'scm:git:ssh://git@github.com/google/volley.git'
- url = 'https://github.com/google/volley'
- }
- developers {
- developer {
- name = 'The Volley Team'
- email = 'noreply+volley@google.com'
- }
- }
- }
-
- // Release AAR, Sources, and JavaDoc
- artifact sourcesJar
- artifact javadocJar
- }
- }
-
- repositories {
- maven {
- url = "https://oss.sonatype.org/content/repositories/snapshots/"
- credentials {
- username = System.env.OSSRH_DEPLOY_USERNAME
- password = System.env.OSSRH_DEPLOY_PASSWORD
- }
- }
- }
-}
diff --git a/rules.gradle b/rules.gradle
new file mode 100644
index 0000000..e0aef80
--- /dev/null
+++ b/rules.gradle
@@ -0,0 +1,36 @@
+// See build.gradle for an explanation of what this file is.
+
+apply plugin: 'com.android.library'
+
+android {
+ useLibrary 'org.apache.http.legacy'
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_7
+ targetCompatibility JavaVersion.VERSION_1_7
+ }
+
+ defaultConfig {
+ consumerProguardFiles 'consumer-proguard-rules.pro'
+ }
+}
+
+tasks.withType(JavaCompile) {
+ options.compilerArgs << "-Xlint:unchecked" << "-Werror"
+}
+
+dependencies {
+ implementation "androidx.annotation:annotation:1.0.1"
+ compileOnly "org.chromium.net:cronet-embedded:76.3809.111"
+}
+
+// Check if the android plugin version supports unit testing.
+if (configurations.findByName("testImplementation")) {
+ dependencies {
+ testImplementation "org.chromium.net:cronet-embedded:76.3809.111"
+ testImplementation "junit:junit:4.12"
+ testImplementation "org.hamcrest:hamcrest-library:1.3"
+ testImplementation "org.mockito:mockito-core:2.19.0"
+ testImplementation "org.robolectric:robolectric:3.4.2"
+ }
+}
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index ace4000..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,4 +0,0 @@
-rootProject.name = 'volley'
-include 'core'
-include 'cronet'
-include 'testing'
diff --git a/core/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index ba3a2a7..ba3a2a7 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
diff --git a/core/src/main/java/com/android/volley/AsyncCache.java b/src/main/java/com/android/volley/AsyncCache.java
index 8b2dbcc..3cddb4b 100644
--- a/core/src/main/java/com/android/volley/AsyncCache.java
+++ b/src/main/java/com/android/volley/AsyncCache.java
@@ -18,12 +18,7 @@ package com.android.volley;
import androidx.annotation.Nullable;
-/**
- * Asynchronous equivalent to the {@link Cache} interface.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** Asynchronous equivalent to the {@link Cache} interface. */
public abstract class AsyncCache {
public interface OnGetCompleteCallback {
diff --git a/core/src/main/java/com/android/volley/AsyncNetwork.java b/src/main/java/com/android/volley/AsyncNetwork.java
index 47f35ea..ad19c03 100644
--- a/core/src/main/java/com/android/volley/AsyncNetwork.java
+++ b/src/main/java/com/android/volley/AsyncNetwork.java
@@ -22,12 +22,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicReference;
-/**
- * An asynchronous implementation of {@link Network} to perform requests.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** An asynchronous implementation of {@link Network} to perform requests. */
public abstract class AsyncNetwork implements Network {
private ExecutorService mBlockingExecutor;
private ExecutorService mNonBlockingExecutor;
diff --git a/core/src/main/java/com/android/volley/AsyncRequestQueue.java b/src/main/java/com/android/volley/AsyncRequestQueue.java
index 7bf8c21..3754866 100644
--- a/core/src/main/java/com/android/volley/AsyncRequestQueue.java
+++ b/src/main/java/com/android/volley/AsyncRequestQueue.java
@@ -25,10 +25,9 @@ import com.android.volley.AsyncCache.OnGetCompleteCallback;
import com.android.volley.AsyncNetwork.OnRequestComplete;
import com.android.volley.Cache.Entry;
import java.net.HttpURLConnection;
-import java.util.ArrayList;
import java.util.Comparator;
-import java.util.List;
import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.PriorityBlockingQueue;
@@ -42,10 +41,7 @@ import java.util.concurrent.TimeUnit;
* An asynchronous request dispatch queue.
*
* <p>Add requests to the queue with {@link #add(Request)}. Once completed, responses will be
- * delivered on the main thread (unless a custom {@link ResponseDelivery} has been provided).
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
+ * delivered on the main thread (unless a custom {@link ResponseDelivery} has been provided)
*/
public class AsyncRequestQueue extends RequestQueue {
/** Default number of blocking threads to start. */
@@ -87,17 +83,6 @@ public class AsyncRequestQueue extends RequestQueue {
private final WaitingRequestManager mWaitingRequestManager = new WaitingRequestManager(this);
/**
- * Requests which have been queued before cache initialization has completed.
- *
- * <p>These requests are kicked off once cache initialization finishes. We avoid enqueuing them
- * sooner as the cache may not yet be ready.
- */
- private final List<Request<?>> mRequestsAwaitingCacheInitialization = new ArrayList<>();
-
- private volatile boolean mIsCacheInitialized = false;
- private final Object mCacheInitializationLock = new Object[0];
-
- /**
* Sets all the variables, but processing does not begin until {@link #start()} is called.
*
* @param cache to use for persisting responses to disk. If an AsyncCache was provided, then
@@ -134,37 +119,34 @@ public class AsyncRequestQueue extends RequestQueue {
mNetwork.setNonBlockingExecutor(mNonBlockingExecutor);
mNetwork.setNonBlockingScheduledExecutor(mNonBlockingScheduledExecutor);
- // Kick off cache initialization, which must complete before any requests can be processed.
- if (mAsyncCache != null) {
- mNonBlockingExecutor.execute(
- new Runnable() {
- @Override
- public void run() {
+ mNonBlockingExecutor.execute(
+ new Runnable() {
+ @Override
+ public void run() {
+ // This is intentionally blocking, because we don't want to process any
+ // requests until the cache is initialized.
+ if (mAsyncCache != null) {
+ final CountDownLatch latch = new CountDownLatch(1);
mAsyncCache.initialize(
new AsyncCache.OnWriteCompleteCallback() {
@Override
public void onWriteComplete() {
- onCacheInitializationComplete();
+ latch.countDown();
}
});
- }
- });
- } else {
- mBlockingExecutor.execute(
- new Runnable() {
- @Override
- public void run() {
+ try {
+ latch.await();
+ } catch (InterruptedException e) {
+ VolleyLog.e(
+ e, "Thread was interrupted while initializing the cache.");
+ Thread.currentThread().interrupt();
+ throw new RuntimeException(e);
+ }
+ } else {
getCache().initialize();
- mNonBlockingExecutor.execute(
- new Runnable() {
- @Override
- public void run() {
- onCacheInitializationComplete();
- }
- });
}
- });
- }
+ }
+ });
}
/** Shuts down and nullifies both executors */
@@ -187,17 +169,6 @@ public class AsyncRequestQueue extends RequestQueue {
/** Begins the request by sending it to the Cache or Network. */
@Override
<T> void beginRequest(Request<T> request) {
- // If the cache hasn't been initialized yet, add the request to a temporary queue to be
- // flushed once initialization completes.
- if (!mIsCacheInitialized) {
- synchronized (mCacheInitializationLock) {
- if (!mIsCacheInitialized) {
- mRequestsAwaitingCacheInitialization.add(request);
- return;
- }
- }
- }
-
// If the request is uncacheable, send it over the network.
if (request.shouldCache()) {
if (mAsyncCache != null) {
@@ -210,20 +181,6 @@ public class AsyncRequestQueue extends RequestQueue {
}
}
- private void onCacheInitializationComplete() {
- List<Request<?>> requestsToDispatch;
- synchronized (mCacheInitializationLock) {
- requestsToDispatch = new ArrayList<>(mRequestsAwaitingCacheInitialization);
- mRequestsAwaitingCacheInitialization.clear();
- mIsCacheInitialized = true;
- }
-
- // Kick off any requests that were queued while waiting for cache initialization.
- for (Request<?> request : requestsToDispatch) {
- beginRequest(request);
- }
- }
-
@Override
<T> void sendRequestOverNetwork(Request<T> request) {
mNonBlockingExecutor.execute(new NetworkTask<>(request));
@@ -273,14 +230,8 @@ public class AsyncRequestQueue extends RequestQueue {
return;
}
- // Use a single instant to evaluate cache expiration. Otherwise, a cache entry with
- // identical soft and hard TTL times may appear to be valid when checking isExpired but
- // invalid upon checking refreshNeeded(), triggering a soft TTL refresh which should be
- // impossible.
- long currentTimeMillis = System.currentTimeMillis();
-
// If it is completely expired, just send it to the network.
- if (entry.isExpired(currentTimeMillis)) {
+ if (entry.isExpired()) {
mRequest.addMarker("cache-hit-expired");
mRequest.setCacheEntry(entry);
if (!mWaitingRequestManager.maybeAddToWaitingRequests(mRequest)) {
@@ -290,17 +241,15 @@ public class AsyncRequestQueue extends RequestQueue {
}
// We have a cache hit; parse its data for delivery back to the request.
- mBlockingExecutor.execute(new CacheParseTask<>(mRequest, entry, currentTimeMillis));
+ mBlockingExecutor.execute(new CacheParseTask<>(mRequest, entry));
}
private class CacheParseTask<T> extends RequestTask<T> {
Cache.Entry entry;
- long startTimeMillis;
- CacheParseTask(Request<T> request, Cache.Entry entry, long startTimeMillis) {
+ CacheParseTask(Request<T> request, Cache.Entry entry) {
super(request);
this.entry = entry;
- this.startTimeMillis = startTimeMillis;
}
@Override
@@ -316,7 +265,7 @@ public class AsyncRequestQueue extends RequestQueue {
entry.allResponseHeaders));
mRequest.addMarker("cache-hit-parsed");
- if (!entry.refreshNeeded(startTimeMillis)) {
+ if (!entry.refreshNeeded()) {
// Completely unexpired cache hit. Just deliver the response.
getResponseDelivery().postResponse(mRequest, response);
} else {
@@ -487,24 +436,17 @@ public class AsyncRequestQueue extends RequestQueue {
}
/**
- * Factory to create/provide the executors which Volley will use.
- *
- * <p>This class may be used by advanced applications to provide custom executors according to
- * their needs.
- *
- * <p>For applications which rely on setting request priority via {@link Request#getPriority}, a
- * task queue is provided which will prioritize requests of higher priority should the thread
- * pool itself be exhausted. If a shared pool is provided which does not make use of the given
- * queue, then lower-priority requests may have tasks executed before higher-priority requests
- * when enough tasks are in flight to fully saturate the shared pool.
+ * This class may be used by advanced applications to provide custom executors according to
+ * their needs. Apps must create ExecutorServices dynamically given a blocking queue rather than
+ * providing them directly so that Volley can provide a PriorityQueue which will prioritize
+ * requests according to Request#getPriority.
*/
public abstract static class ExecutorFactory {
- public abstract ExecutorService createNonBlockingExecutor(
- BlockingQueue<Runnable> taskQueue);
+ abstract ExecutorService createNonBlockingExecutor(BlockingQueue<Runnable> taskQueue);
- public abstract ExecutorService createBlockingExecutor(BlockingQueue<Runnable> taskQueue);
+ abstract ExecutorService createBlockingExecutor(BlockingQueue<Runnable> taskQueue);
- public abstract ScheduledExecutorService createNonBlockingScheduledExecutor();
+ abstract ScheduledExecutorService createNonBlockingScheduledExecutor();
}
/** Provides a BlockingQueue to be used to create executors. */
diff --git a/core/src/main/java/com/android/volley/AuthFailureError.java b/src/main/java/com/android/volley/AuthFailureError.java
index fc6417e..fc6417e 100644
--- a/core/src/main/java/com/android/volley/AuthFailureError.java
+++ b/src/main/java/com/android/volley/AuthFailureError.java
diff --git a/core/src/main/java/com/android/volley/Cache.java b/src/main/java/com/android/volley/Cache.java
index 7348d0f..b8908ac 100644
--- a/core/src/main/java/com/android/volley/Cache.java
+++ b/src/main/java/com/android/volley/Cache.java
@@ -102,20 +102,12 @@ public interface Cache {
/** True if the entry is expired. */
public boolean isExpired() {
- return isExpired(System.currentTimeMillis());
- }
-
- boolean isExpired(long currentTimeMillis) {
- return this.ttl < currentTimeMillis;
+ return this.ttl < System.currentTimeMillis();
}
/** True if a refresh is needed from the original data source. */
public boolean refreshNeeded() {
- return refreshNeeded(System.currentTimeMillis());
- }
-
- boolean refreshNeeded(long currentTimeMillis) {
- return this.softTtl < currentTimeMillis;
+ return this.softTtl < System.currentTimeMillis();
}
}
}
diff --git a/core/src/main/java/com/android/volley/CacheDispatcher.java b/src/main/java/com/android/volley/CacheDispatcher.java
index 4443143..1bfc0ea 100644
--- a/core/src/main/java/com/android/volley/CacheDispatcher.java
+++ b/src/main/java/com/android/volley/CacheDispatcher.java
@@ -138,14 +138,8 @@ public class CacheDispatcher extends Thread {
return;
}
- // Use a single instant to evaluate cache expiration. Otherwise, a cache entry with
- // identical soft and hard TTL times may appear to be valid when checking isExpired but
- // invalid upon checking refreshNeeded(), triggering a soft TTL refresh which should be
- // impossible.
- long currentTimeMillis = System.currentTimeMillis();
-
// If it is completely expired, just send it to the network.
- if (entry.isExpired(currentTimeMillis)) {
+ if (entry.isExpired()) {
request.addMarker("cache-hit-expired");
request.setCacheEntry(entry);
if (!mWaitingRequestManager.maybeAddToWaitingRequests(request)) {
@@ -170,7 +164,7 @@ public class CacheDispatcher extends Thread {
}
return;
}
- if (!entry.refreshNeeded(currentTimeMillis)) {
+ if (!entry.refreshNeeded()) {
// Completely unexpired cache hit. Just deliver the response.
mDelivery.postResponse(request, response);
} else {
diff --git a/core/src/main/java/com/android/volley/ClientError.java b/src/main/java/com/android/volley/ClientError.java
index 521b76f..521b76f 100644
--- a/core/src/main/java/com/android/volley/ClientError.java
+++ b/src/main/java/com/android/volley/ClientError.java
diff --git a/core/src/main/java/com/android/volley/DefaultRetryPolicy.java b/src/main/java/com/android/volley/DefaultRetryPolicy.java
index 4be6b50..4be6b50 100644
--- a/core/src/main/java/com/android/volley/DefaultRetryPolicy.java
+++ b/src/main/java/com/android/volley/DefaultRetryPolicy.java
diff --git a/core/src/main/java/com/android/volley/ExecutorDelivery.java b/src/main/java/com/android/volley/ExecutorDelivery.java
index fd992f9..fd992f9 100644
--- a/core/src/main/java/com/android/volley/ExecutorDelivery.java
+++ b/src/main/java/com/android/volley/ExecutorDelivery.java
diff --git a/core/src/main/java/com/android/volley/Header.java b/src/main/java/com/android/volley/Header.java
index cd9c6ec..cd9c6ec 100644
--- a/core/src/main/java/com/android/volley/Header.java
+++ b/src/main/java/com/android/volley/Header.java
diff --git a/core/src/main/java/com/android/volley/Network.java b/src/main/java/com/android/volley/Network.java
index 16d5858..16d5858 100644
--- a/core/src/main/java/com/android/volley/Network.java
+++ b/src/main/java/com/android/volley/Network.java
diff --git a/core/src/main/java/com/android/volley/NetworkDispatcher.java b/src/main/java/com/android/volley/NetworkDispatcher.java
index 06057c3..06057c3 100644
--- a/core/src/main/java/com/android/volley/NetworkDispatcher.java
+++ b/src/main/java/com/android/volley/NetworkDispatcher.java
diff --git a/core/src/main/java/com/android/volley/NetworkError.java b/src/main/java/com/android/volley/NetworkError.java
index 6b2b19f..6b2b19f 100644
--- a/core/src/main/java/com/android/volley/NetworkError.java
+++ b/src/main/java/com/android/volley/NetworkError.java
diff --git a/core/src/main/java/com/android/volley/NetworkResponse.java b/src/main/java/com/android/volley/NetworkResponse.java
index cfbc371..cfbc371 100644
--- a/core/src/main/java/com/android/volley/NetworkResponse.java
+++ b/src/main/java/com/android/volley/NetworkResponse.java
diff --git a/core/src/main/java/com/android/volley/NoConnectionError.java b/src/main/java/com/android/volley/NoConnectionError.java
index 185eb35..185eb35 100644
--- a/core/src/main/java/com/android/volley/NoConnectionError.java
+++ b/src/main/java/com/android/volley/NoConnectionError.java
diff --git a/core/src/main/java/com/android/volley/ParseError.java b/src/main/java/com/android/volley/ParseError.java
index 04a9d58..04a9d58 100644
--- a/core/src/main/java/com/android/volley/ParseError.java
+++ b/src/main/java/com/android/volley/ParseError.java
diff --git a/core/src/main/java/com/android/volley/Request.java b/src/main/java/com/android/volley/Request.java
index df0d18f..b60dc74 100644
--- a/core/src/main/java/com/android/volley/Request.java
+++ b/src/main/java/com/android/volley/Request.java
@@ -135,8 +135,8 @@ public abstract class Request<T> implements Comparable<Request<T>> {
* @deprecated Use {@link #Request(int, String, com.android.volley.Response.ErrorListener)}.
*/
@Deprecated
- public Request(String url, Response.ErrorListener errorListener) {
- this(Method.DEPRECATED_GET_OR_POST, url, errorListener);
+ public Request(String url, Response.ErrorListener listener) {
+ this(Method.DEPRECATED_GET_OR_POST, url, listener);
}
/**
@@ -144,15 +144,11 @@ public abstract class Request<T> implements Comparable<Request<T>> {
* error listener. Note that the normal response listener is not provided here as delivery of
* responses is provided by subclasses, who have a better idea of how to deliver an
* already-parsed response.
- *
- * @param method the HTTP method to use
- * @param url URL to fetch the response from
- * @param errorListener Error listener, or null to ignore errors.
*/
- public Request(int method, String url, @Nullable Response.ErrorListener errorListener) {
+ public Request(int method, String url, @Nullable Response.ErrorListener listener) {
mMethod = method;
mUrl = url;
- mErrorListener = errorListener;
+ mErrorListener = listener;
setRetryPolicy(new DefaultRetryPolicy());
mDefaultTrafficStatsTag = findDefaultTrafficStatsTag(url);
diff --git a/core/src/main/java/com/android/volley/RequestQueue.java b/src/main/java/com/android/volley/RequestQueue.java
index 6db0b1c..6db0b1c 100644
--- a/core/src/main/java/com/android/volley/RequestQueue.java
+++ b/src/main/java/com/android/volley/RequestQueue.java
diff --git a/core/src/main/java/com/android/volley/RequestTask.java b/src/main/java/com/android/volley/RequestTask.java
index b429f79..8eeaf2c 100644
--- a/core/src/main/java/com/android/volley/RequestTask.java
+++ b/src/main/java/com/android/volley/RequestTask.java
@@ -1,11 +1,6 @@
package com.android.volley;
-/**
- * Abstract runnable that's a task to be completed by the RequestQueue.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** Abstract runnable that's a task to be completed by the RequestQueue. */
public abstract class RequestTask<T> implements Runnable {
final Request<T> mRequest;
diff --git a/core/src/main/java/com/android/volley/Response.java b/src/main/java/com/android/volley/Response.java
index 622bdc4..622bdc4 100644
--- a/core/src/main/java/com/android/volley/Response.java
+++ b/src/main/java/com/android/volley/Response.java
diff --git a/core/src/main/java/com/android/volley/ResponseDelivery.java b/src/main/java/com/android/volley/ResponseDelivery.java
index 10aa137..10aa137 100644
--- a/core/src/main/java/com/android/volley/ResponseDelivery.java
+++ b/src/main/java/com/android/volley/ResponseDelivery.java
diff --git a/core/src/main/java/com/android/volley/RetryPolicy.java b/src/main/java/com/android/volley/RetryPolicy.java
index 3ef26de..3ef26de 100644
--- a/core/src/main/java/com/android/volley/RetryPolicy.java
+++ b/src/main/java/com/android/volley/RetryPolicy.java
diff --git a/core/src/main/java/com/android/volley/ServerError.java b/src/main/java/com/android/volley/ServerError.java
index 84b2eb4..84b2eb4 100644
--- a/core/src/main/java/com/android/volley/ServerError.java
+++ b/src/main/java/com/android/volley/ServerError.java
diff --git a/core/src/main/java/com/android/volley/TimeoutError.java b/src/main/java/com/android/volley/TimeoutError.java
index 227ae08..227ae08 100644
--- a/core/src/main/java/com/android/volley/TimeoutError.java
+++ b/src/main/java/com/android/volley/TimeoutError.java
diff --git a/core/src/main/java/com/android/volley/VolleyError.java b/src/main/java/com/android/volley/VolleyError.java
index 45086da..45086da 100644
--- a/core/src/main/java/com/android/volley/VolleyError.java
+++ b/src/main/java/com/android/volley/VolleyError.java
diff --git a/core/src/main/java/com/android/volley/VolleyLog.java b/src/main/java/com/android/volley/VolleyLog.java
index 8477668..8477668 100644
--- a/core/src/main/java/com/android/volley/VolleyLog.java
+++ b/src/main/java/com/android/volley/VolleyLog.java
diff --git a/core/src/main/java/com/android/volley/WaitingRequestManager.java b/src/main/java/com/android/volley/WaitingRequestManager.java
index 682e339..682e339 100644
--- a/core/src/main/java/com/android/volley/WaitingRequestManager.java
+++ b/src/main/java/com/android/volley/WaitingRequestManager.java
diff --git a/cronet/src/main/java/com/android/volley/cronet/CronetHttpStack.java b/src/main/java/com/android/volley/cronet/CronetHttpStack.java
index 874029b..f3baace 100644
--- a/cronet/src/main/java/com/android/volley/cronet/CronetHttpStack.java
+++ b/src/main/java/com/android/volley/cronet/CronetHttpStack.java
@@ -53,9 +53,6 @@ import org.chromium.net.UrlResponseInfo;
/**
* A {@link AsyncHttpStack} that's based on Cronet's fully asynchronous API for network requests.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
*/
public class CronetHttpStack extends AsyncHttpStack {
diff --git a/core/src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java b/src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java
index c75c25f..c75c25f 100644
--- a/core/src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java
+++ b/src/main/java/com/android/volley/toolbox/AdaptedHttpStack.java
diff --git a/core/src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java b/src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java
index f3381ae..f3381ae 100644
--- a/core/src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java
+++ b/src/main/java/com/android/volley/toolbox/AndroidAuthenticator.java
diff --git a/core/src/main/java/com/android/volley/toolbox/AsyncHttpStack.java b/src/main/java/com/android/volley/toolbox/AsyncHttpStack.java
index 4165637..bafab8c 100644
--- a/core/src/main/java/com/android/volley/toolbox/AsyncHttpStack.java
+++ b/src/main/java/com/android/volley/toolbox/AsyncHttpStack.java
@@ -28,12 +28,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicReference;
-/**
- * Asynchronous extension of the {@link BaseHttpStack} class.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** Asynchronous extension of the {@link BaseHttpStack} class. */
public abstract class AsyncHttpStack extends BaseHttpStack {
private ExecutorService mBlockingExecutor;
private ExecutorService mNonBlockingExecutor;
diff --git a/core/src/main/java/com/android/volley/toolbox/Authenticator.java b/src/main/java/com/android/volley/toolbox/Authenticator.java
index 2ba43db..2ba43db 100644
--- a/core/src/main/java/com/android/volley/toolbox/Authenticator.java
+++ b/src/main/java/com/android/volley/toolbox/Authenticator.java
diff --git a/core/src/main/java/com/android/volley/toolbox/BaseHttpStack.java b/src/main/java/com/android/volley/toolbox/BaseHttpStack.java
index 99a9899..99a9899 100644
--- a/core/src/main/java/com/android/volley/toolbox/BaseHttpStack.java
+++ b/src/main/java/com/android/volley/toolbox/BaseHttpStack.java
diff --git a/core/src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java b/src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java
index cdedaff..55892a0 100644
--- a/core/src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java
+++ b/src/main/java/com/android/volley/toolbox/BasicAsyncNetwork.java
@@ -29,7 +29,6 @@ import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.RequestTask;
import com.android.volley.VolleyError;
-import com.android.volley.toolbox.NetworkUtility.RetryInfo;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
@@ -37,12 +36,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
-/**
- * A network performing Volley requests over an {@link HttpStack}.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** A network performing Volley requests over an {@link HttpStack}. */
public class BasicAsyncNetwork extends AsyncNetwork {
private final AsyncHttpStack mAsyncStack;
@@ -132,39 +126,13 @@ public class BasicAsyncNetwork extends AsyncNetwork {
@Nullable HttpResponse httpResponse,
@Nullable byte[] responseContents) {
try {
- RetryInfo retryInfo =
- NetworkUtility.shouldRetryException(
- request, exception, requestStartMs, httpResponse, responseContents);
- // RetryPolicy#retry may need a background thread, so invoke in the blocking executor.
- getBlockingExecutor()
- .execute(new InvokeRetryPolicyTask<>(request, retryInfo, callback));
+ NetworkUtility.handleException(
+ request, exception, requestStartMs, httpResponse, responseContents);
} catch (VolleyError volleyError) {
callback.onError(volleyError);
+ return;
}
- }
-
- private class InvokeRetryPolicyTask<T> extends RequestTask<T> {
- final Request<T> request;
- final RetryInfo retryInfo;
- final OnRequestComplete callback;
-
- InvokeRetryPolicyTask(Request<T> request, RetryInfo retryInfo, OnRequestComplete callback) {
- super(request);
- this.request = request;
- this.retryInfo = retryInfo;
- this.callback = callback;
- }
-
- @Override
- public void run() {
- try {
- NetworkUtility.attemptRetryOnException(request, retryInfo);
- // attemptRetryOnException didn't throw, so proceed with the next attempt.
- performRequest(request, callback);
- } catch (VolleyError e) {
- callback.onError(e);
- }
- }
+ performRequest(request, callback);
}
@Override
diff --git a/core/src/main/java/com/android/volley/toolbox/BasicNetwork.java b/src/main/java/com/android/volley/toolbox/BasicNetwork.java
index 552e628..06427fe 100644
--- a/core/src/main/java/com/android/volley/toolbox/BasicNetwork.java
+++ b/src/main/java/com/android/volley/toolbox/BasicNetwork.java
@@ -22,7 +22,6 @@ import com.android.volley.Network;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.VolleyError;
-import com.android.volley.toolbox.NetworkUtility.RetryInfo;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
@@ -141,11 +140,8 @@ public class BasicNetwork implements Network {
} catch (IOException e) {
// This will either throw an exception, breaking us from the loop, or will loop
// again and retry the request.
- RetryInfo retryInfo =
- NetworkUtility.shouldRetryException(
- request, e, requestStart, httpResponse, responseContents);
- // We should already be on a background thread, so we can invoke the retry inline.
- NetworkUtility.attemptRetryOnException(request, retryInfo);
+ NetworkUtility.handleException(
+ request, e, requestStart, httpResponse, responseContents);
}
}
}
diff --git a/core/src/main/java/com/android/volley/toolbox/ByteArrayPool.java b/src/main/java/com/android/volley/toolbox/ByteArrayPool.java
index 0134fa2..0134fa2 100644
--- a/core/src/main/java/com/android/volley/toolbox/ByteArrayPool.java
+++ b/src/main/java/com/android/volley/toolbox/ByteArrayPool.java
diff --git a/core/src/main/java/com/android/volley/toolbox/ClearCacheRequest.java b/src/main/java/com/android/volley/toolbox/ClearCacheRequest.java
index 856ef80..856ef80 100644
--- a/core/src/main/java/com/android/volley/toolbox/ClearCacheRequest.java
+++ b/src/main/java/com/android/volley/toolbox/ClearCacheRequest.java
diff --git a/core/src/main/java/com/android/volley/toolbox/DiskBasedCache.java b/src/main/java/com/android/volley/toolbox/DiskBasedCache.java
index d4310e0..d4310e0 100644
--- a/core/src/main/java/com/android/volley/toolbox/DiskBasedCache.java
+++ b/src/main/java/com/android/volley/toolbox/DiskBasedCache.java
diff --git a/core/src/main/java/com/android/volley/toolbox/FileSupplier.java b/src/main/java/com/android/volley/toolbox/FileSupplier.java
index 70898a6..70898a6 100644
--- a/core/src/main/java/com/android/volley/toolbox/FileSupplier.java
+++ b/src/main/java/com/android/volley/toolbox/FileSupplier.java
diff --git a/core/src/main/java/com/android/volley/toolbox/HttpClientStack.java b/src/main/java/com/android/volley/toolbox/HttpClientStack.java
index 1e9e4b0..1e9e4b0 100644
--- a/core/src/main/java/com/android/volley/toolbox/HttpClientStack.java
+++ b/src/main/java/com/android/volley/toolbox/HttpClientStack.java
diff --git a/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java b/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java
index 0b29e80..0b29e80 100644
--- a/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java
+++ b/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java
diff --git a/core/src/main/java/com/android/volley/toolbox/HttpResponse.java b/src/main/java/com/android/volley/toolbox/HttpResponse.java
index 595f926..595f926 100644
--- a/core/src/main/java/com/android/volley/toolbox/HttpResponse.java
+++ b/src/main/java/com/android/volley/toolbox/HttpResponse.java
diff --git a/core/src/main/java/com/android/volley/toolbox/HttpStack.java b/src/main/java/com/android/volley/toolbox/HttpStack.java
index 85179a7..85179a7 100644
--- a/core/src/main/java/com/android/volley/toolbox/HttpStack.java
+++ b/src/main/java/com/android/volley/toolbox/HttpStack.java
diff --git a/core/src/main/java/com/android/volley/toolbox/HurlStack.java b/src/main/java/com/android/volley/toolbox/HurlStack.java
index 35c6a72..35c6a72 100644
--- a/core/src/main/java/com/android/volley/toolbox/HurlStack.java
+++ b/src/main/java/com/android/volley/toolbox/HurlStack.java
diff --git a/core/src/main/java/com/android/volley/toolbox/ImageLoader.java b/src/main/java/com/android/volley/toolbox/ImageLoader.java
index eece2cf..eece2cf 100644
--- a/core/src/main/java/com/android/volley/toolbox/ImageLoader.java
+++ b/src/main/java/com/android/volley/toolbox/ImageLoader.java
diff --git a/core/src/main/java/com/android/volley/toolbox/ImageRequest.java b/src/main/java/com/android/volley/toolbox/ImageRequest.java
index 32b5aa3..32b5aa3 100644
--- a/core/src/main/java/com/android/volley/toolbox/ImageRequest.java
+++ b/src/main/java/com/android/volley/toolbox/ImageRequest.java
diff --git a/core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java b/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java
index 9f56746..86ed9e9 100644
--- a/core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java
+++ b/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java
@@ -26,10 +26,7 @@ import java.io.UnsupportedEncodingException;
import org.json.JSONArray;
import org.json.JSONException;
-/**
- * A request for retrieving a {@link JSONArray} response body at a given URL, allowing for an
- * optional {@link JSONArray} to be passed in as part of the request body.
- */
+/** A request for retrieving a {@link JSONArray} response body at a given URL. */
public class JsonArrayRequest extends JsonRequest<JSONArray> {
/**
@@ -63,7 +60,7 @@ public class JsonArrayRequest extends JsonRequest<JSONArray> {
super(
method,
url,
- jsonRequest != null ? jsonRequest.toString() : null,
+ (jsonRequest == null) ? null : jsonRequest.toString(),
listener,
errorListener);
}
diff --git a/core/src/main/java/com/android/volley/toolbox/JsonObjectRequest.java b/src/main/java/com/android/volley/toolbox/JsonObjectRequest.java
index eccb54b..8dca0ec 100644
--- a/core/src/main/java/com/android/volley/toolbox/JsonObjectRequest.java
+++ b/src/main/java/com/android/volley/toolbox/JsonObjectRequest.java
@@ -35,55 +35,42 @@ public class JsonObjectRequest extends JsonRequest<JSONObject> {
/**
* Creates a new request.
*
+ * @param method the HTTP method to use
* @param url URL to fetch the JSON from
+ * @param jsonRequest A {@link JSONObject} to post with the request. Null indicates no
+ * parameters will be posted along with request.
* @param listener Listener to receive the JSON response
* @param errorListener Error listener, or null to ignore errors.
*/
public JsonObjectRequest(
- String url, Listener<JSONObject> listener, @Nullable ErrorListener errorListener) {
- super(Method.GET, url, null, listener, errorListener);
- }
-
- /**
- * Constructor which defaults to <code>GET</code> if <code>jsonRequest</code> is <code>null
- * </code> , <code>POST</code> otherwise.
- *
- * @deprecated Use {@link #JsonObjectRequest(int, String, JSONObject, Listener, ErrorListener)}.
- */
- @Deprecated
- public JsonObjectRequest(
+ int method,
String url,
@Nullable JSONObject jsonRequest,
Listener<JSONObject> listener,
@Nullable ErrorListener errorListener) {
super(
- jsonRequest == null ? Method.GET : Method.POST,
+ method,
url,
- jsonRequest != null ? jsonRequest.toString() : null,
+ (jsonRequest == null) ? null : jsonRequest.toString(),
listener,
errorListener);
}
/**
- * Creates a new request.
+ * Constructor which defaults to <code>GET</code> if <code>jsonRequest</code> is <code>null
+ * </code> , <code>POST</code> otherwise.
*
- * @param method the HTTP method to use
- * @param url URL to fetch the JSON from
- * @param jsonRequest A {@link JSONObject} to post with the request. Null indicates no
- * parameters will be posted along with request.
- * @param listener Listener to receive the JSON response
- * @param errorListener Error listener, or null to ignore errors.
+ * @see #JsonObjectRequest(int, String, JSONObject, Listener, ErrorListener)
*/
public JsonObjectRequest(
- int method,
String url,
@Nullable JSONObject jsonRequest,
Listener<JSONObject> listener,
@Nullable ErrorListener errorListener) {
- super(
- method,
+ this(
+ jsonRequest == null ? Method.GET : Method.POST,
url,
- jsonRequest != null ? jsonRequest.toString() : null,
+ jsonRequest,
listener,
errorListener);
}
diff --git a/core/src/main/java/com/android/volley/toolbox/JsonRequest.java b/src/main/java/com/android/volley/toolbox/JsonRequest.java
index c2d1fad..bc035ae 100644
--- a/core/src/main/java/com/android/volley/toolbox/JsonRequest.java
+++ b/src/main/java/com/android/volley/toolbox/JsonRequest.java
@@ -61,16 +61,6 @@ public abstract class JsonRequest<T> extends Request<T> {
this(Method.DEPRECATED_GET_OR_POST, url, requestBody, listener, errorListener);
}
- /**
- * Creates a new request.
- *
- * @param method the HTTP method to use
- * @param url URL to fetch the JSON from
- * @param requestBody The content to post as the body of the request. Null indicates no
- * parameters will be posted along with request.
- * @param listener Listener to receive the JSON response
- * @param errorListener Error listener, or null to ignore errors.
- */
public JsonRequest(
int method,
String url,
diff --git a/core/src/main/java/com/android/volley/toolbox/NetworkImageView.java b/src/main/java/com/android/volley/toolbox/NetworkImageView.java
index a24b3e2..a24b3e2 100644
--- a/core/src/main/java/com/android/volley/toolbox/NetworkImageView.java
+++ b/src/main/java/com/android/volley/toolbox/NetworkImageView.java
diff --git a/core/src/main/java/com/android/volley/toolbox/NetworkUtility.java b/src/main/java/com/android/volley/toolbox/NetworkUtility.java
index 58a3bb3..44d5904 100644
--- a/core/src/main/java/com/android/volley/toolbox/NetworkUtility.java
+++ b/src/main/java/com/android/volley/toolbox/NetworkUtility.java
@@ -42,7 +42,7 @@ import java.util.List;
* Utility class for methods that are shared between {@link BasicNetwork} and {@link
* BasicAsyncNetwork}
*/
-final class NetworkUtility {
+public final class NetworkUtility {
private static final int SLOW_REQUEST_THRESHOLD_MS = 3000;
private NetworkUtility() {}
@@ -113,45 +113,30 @@ final class NetworkUtility {
/**
* Attempts to prepare the request for a retry. If there are no more attempts remaining in the
- * request's retry policy, the provided exception is thrown.
- *
- * <p>Must be invoked from a background thread, as client implementations of RetryPolicy#retry
- * may make blocking calls.
+ * request's retry policy, a timeout exception is thrown.
*
* @param request The request to use.
*/
- static void attemptRetryOnException(final Request<?> request, final RetryInfo retryInfo)
+ private static void attemptRetryOnException(
+ final String logPrefix, final Request<?> request, final VolleyError exception)
throws VolleyError {
final RetryPolicy retryPolicy = request.getRetryPolicy();
final int oldTimeout = request.getTimeoutMs();
try {
- retryPolicy.retry(retryInfo.errorToRetry);
+ retryPolicy.retry(exception);
} catch (VolleyError e) {
request.addMarker(
- String.format(
- "%s-timeout-giveup [timeout=%s]", retryInfo.logPrefix, oldTimeout));
+ String.format("%s-timeout-giveup [timeout=%s]", logPrefix, oldTimeout));
throw e;
}
- request.addMarker(String.format("%s-retry [timeout=%s]", retryInfo.logPrefix, oldTimeout));
- }
-
- static class RetryInfo {
- private final String logPrefix;
- private final VolleyError errorToRetry;
-
- private RetryInfo(String logPrefix, VolleyError errorToRetry) {
- this.logPrefix = logPrefix;
- this.errorToRetry = errorToRetry;
- }
+ request.addMarker(String.format("%s-retry [timeout=%s]", logPrefix, oldTimeout));
}
/**
* Based on the exception thrown, decides whether to attempt to retry, or to throw the error.
- *
- * <p>If this method returns without throwing, {@link #attemptRetryOnException} should be called
- * with the provided {@link RetryInfo} to consult the client's retry policy.
+ * Also handles logging.
*/
- static RetryInfo shouldRetryException(
+ static void handleException(
Request<?> request,
IOException exception,
long requestStartMs,
@@ -159,7 +144,7 @@ final class NetworkUtility {
@Nullable byte[] responseContents)
throws VolleyError {
if (exception instanceof SocketTimeoutException) {
- return new RetryInfo("socket", new TimeoutError());
+ attemptRetryOnException("socket", request, new TimeoutError());
} else if (exception instanceof MalformedURLException) {
throw new RuntimeException("Bad URL " + request.getUrl(), exception);
} else {
@@ -168,9 +153,11 @@ final class NetworkUtility {
statusCode = httpResponse.getStatusCode();
} else {
if (request.shouldRetryConnectionErrors()) {
- return new RetryInfo("connection", new NoConnectionError());
+ attemptRetryOnException("connection", request, new NoConnectionError());
+ return;
+ } else {
+ throw new NoConnectionError(exception);
}
- throw new NoConnectionError(exception);
}
VolleyLog.e("Unexpected response code %d for %s", statusCode, request.getUrl());
NetworkResponse networkResponse;
@@ -186,21 +173,24 @@ final class NetworkUtility {
responseHeaders);
if (statusCode == HttpURLConnection.HTTP_UNAUTHORIZED
|| statusCode == HttpURLConnection.HTTP_FORBIDDEN) {
- return new RetryInfo("auth", new AuthFailureError(networkResponse));
- }
- if (statusCode >= 400 && statusCode <= 499) {
+ attemptRetryOnException("auth", request, new AuthFailureError(networkResponse));
+ } else if (statusCode >= 400 && statusCode <= 499) {
// Don't retry other client errors.
throw new ClientError(networkResponse);
- }
- if (statusCode >= 500 && statusCode <= 599) {
+ } else if (statusCode >= 500 && statusCode <= 599) {
if (request.shouldRetryServerErrors()) {
- return new RetryInfo("server", new ServerError(networkResponse));
+ attemptRetryOnException(
+ "server", request, new ServerError(networkResponse));
+ } else {
+ throw new ServerError(networkResponse);
}
+ } else {
+ // 3xx? No reason to retry.
+ throw new ServerError(networkResponse);
}
- // Server error and client has opted out of retries, or 3xx. No reason to retry.
- throw new ServerError(networkResponse);
+ } else {
+ attemptRetryOnException("network", request, new NetworkError());
}
- return new RetryInfo("network", new NetworkError());
}
}
}
diff --git a/core/src/main/java/com/android/volley/toolbox/NoAsyncCache.java b/src/main/java/com/android/volley/toolbox/NoAsyncCache.java
index 1fda58f..aa4aeea 100644
--- a/core/src/main/java/com/android/volley/toolbox/NoAsyncCache.java
+++ b/src/main/java/com/android/volley/toolbox/NoAsyncCache.java
@@ -3,12 +3,7 @@ package com.android.volley.toolbox;
import com.android.volley.AsyncCache;
import com.android.volley.Cache;
-/**
- * An AsyncCache that doesn't cache anything.
- *
- * <p><b>WARNING</b>: This API is experimental and subject to breaking changes. Please see
- * https://github.com/google/volley/wiki/Asynchronous-Volley for more details.
- */
+/** An AsyncCache that doesn't cache anything. */
public class NoAsyncCache extends AsyncCache {
@Override
public void get(String key, OnGetCompleteCallback callback) {
diff --git a/core/src/main/java/com/android/volley/toolbox/NoCache.java b/src/main/java/com/android/volley/toolbox/NoCache.java
index 51f9945..51f9945 100644
--- a/core/src/main/java/com/android/volley/toolbox/NoCache.java
+++ b/src/main/java/com/android/volley/toolbox/NoCache.java
diff --git a/core/src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java b/src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java
index bdcc45e..bdcc45e 100644
--- a/core/src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java
+++ b/src/main/java/com/android/volley/toolbox/PoolingByteArrayOutputStream.java
diff --git a/core/src/main/java/com/android/volley/toolbox/RequestFuture.java b/src/main/java/com/android/volley/toolbox/RequestFuture.java
index f9cbce2..f9cbce2 100644
--- a/core/src/main/java/com/android/volley/toolbox/RequestFuture.java
+++ b/src/main/java/com/android/volley/toolbox/RequestFuture.java
diff --git a/core/src/main/java/com/android/volley/toolbox/StringRequest.java b/src/main/java/com/android/volley/toolbox/StringRequest.java
index df7b386..df7b386 100644
--- a/core/src/main/java/com/android/volley/toolbox/StringRequest.java
+++ b/src/main/java/com/android/volley/toolbox/StringRequest.java
diff --git a/core/src/main/java/com/android/volley/toolbox/Threads.java b/src/main/java/com/android/volley/toolbox/Threads.java
index 66c3e41..66c3e41 100644
--- a/core/src/main/java/com/android/volley/toolbox/Threads.java
+++ b/src/main/java/com/android/volley/toolbox/Threads.java
diff --git a/core/src/main/java/com/android/volley/toolbox/UrlRewriter.java b/src/main/java/com/android/volley/toolbox/UrlRewriter.java
index 8bbb770..8bbb770 100644
--- a/core/src/main/java/com/android/volley/toolbox/UrlRewriter.java
+++ b/src/main/java/com/android/volley/toolbox/UrlRewriter.java
diff --git a/core/src/main/java/com/android/volley/toolbox/Volley.java b/src/main/java/com/android/volley/toolbox/Volley.java
index 6ab34bb..bc65c9c 100644
--- a/core/src/main/java/com/android/volley/toolbox/Volley.java
+++ b/src/main/java/com/android/volley/toolbox/Volley.java
@@ -21,7 +21,6 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.http.AndroidHttpClient;
import android.os.Build;
-import androidx.annotation.NonNull;
import com.android.volley.Network;
import com.android.volley.RequestQueue;
import java.io.File;
@@ -38,7 +37,6 @@ public class Volley {
* @param stack A {@link BaseHttpStack} to use for the network, or null for default.
* @return A started {@link RequestQueue} instance.
*/
- @NonNull
public static RequestQueue newRequestQueue(Context context, BaseHttpStack stack) {
BasicNetwork network;
if (stack == null) {
@@ -80,7 +78,6 @@ public class Volley {
*/
@Deprecated
@SuppressWarnings("deprecation")
- @NonNull
public static RequestQueue newRequestQueue(Context context, HttpStack stack) {
if (stack == null) {
return newRequestQueue(context, (BaseHttpStack) null);
@@ -88,7 +85,6 @@ public class Volley {
return newRequestQueue(context, new BasicNetwork(stack));
}
- @NonNull
private static RequestQueue newRequestQueue(Context context, Network network) {
final Context appContext = context.getApplicationContext();
// Use a lazy supplier for the cache directory so that newRequestQueue() can be called on
@@ -116,7 +112,6 @@ public class Volley {
* @param context A {@link Context} to use for creating the cache dir.
* @return A started {@link RequestQueue} instance.
*/
- @NonNull
public static RequestQueue newRequestQueue(Context context) {
return newRequestQueue(context, (BaseHttpStack) null);
}
diff --git a/core/src/test/java/com/android/volley/AsyncRequestQueueTest.java b/src/test/java/com/android/volley/AsyncRequestQueueTest.java
index aef4f01..54ff0a1 100644
--- a/core/src/test/java/com/android/volley/AsyncRequestQueueTest.java
+++ b/src/test/java/com/android/volley/AsyncRequestQueueTest.java
@@ -16,9 +16,6 @@
package com.android.volley;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -26,8 +23,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
-import com.android.volley.AsyncCache.OnGetCompleteCallback;
-import com.android.volley.AsyncCache.OnWriteCompleteCallback;
import com.android.volley.mock.ShadowSystemClock;
import com.android.volley.toolbox.NoAsyncCache;
import com.android.volley.toolbox.StringRequest;
@@ -39,7 +34,6 @@ import java.util.concurrent.ScheduledExecutorService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -51,13 +45,37 @@ public class AsyncRequestQueueTest {
@Mock private AsyncNetwork mMockNetwork;
@Mock private ScheduledExecutorService mMockScheduledExecutor;
- private final ResponseDelivery mDelivery = new ImmediateResponseDelivery();
private AsyncRequestQueue queue;
@Before
public void setUp() throws Exception {
+ ResponseDelivery mDelivery = new ImmediateResponseDelivery();
initMocks(this);
- queue = createRequestQueue(new NoAsyncCache());
+ queue =
+ new AsyncRequestQueue.Builder(mMockNetwork)
+ .setAsyncCache(new NoAsyncCache())
+ .setResponseDelivery(mDelivery)
+ .setExecutorFactory(
+ new AsyncRequestQueue.ExecutorFactory() {
+ @Override
+ public ExecutorService createNonBlockingExecutor(
+ BlockingQueue<Runnable> taskQueue) {
+ return MoreExecutors.newDirectExecutorService();
+ }
+
+ @Override
+ public ExecutorService createBlockingExecutor(
+ BlockingQueue<Runnable> taskQueue) {
+ return MoreExecutors.newDirectExecutorService();
+ }
+
+ @Override
+ public ScheduledExecutorService
+ createNonBlockingScheduledExecutor() {
+ return mMockScheduledExecutor;
+ }
+ })
+ .build();
}
@Test
@@ -143,58 +161,4 @@ public class AsyncRequestQueueTest {
verifyNoMoreInteractions(listener);
queue.stop();
}
-
- @Test
- public void requestsQueuedBeforeCacheInitialization_asyncCache() {
- // Create a new queue with a mock cache in order to verify the initialization.
- AsyncCache mockAsyncCache = mock(AsyncCache.class);
- AsyncRequestQueue queue = createRequestQueue(mockAsyncCache);
- queue.start();
-
- ArgumentCaptor<OnWriteCompleteCallback> callbackCaptor =
- ArgumentCaptor.forClass(OnWriteCompleteCallback.class);
- verify(mockAsyncCache).initialize(callbackCaptor.capture());
-
- StringRequest req = mock(StringRequest.class);
- req.setShouldCache(true);
- when(req.getCacheKey()).thenReturn("cache-key");
- queue.add(req);
-
- // Cache should not be read before initialization completes.
- verify(mockAsyncCache, never()).get(anyString(), any(OnGetCompleteCallback.class));
-
- callbackCaptor.getValue().onWriteComplete();
-
- // Once the write completes, the request should be kicked off (in the form of a cache
- // lookup).
- verify(mockAsyncCache).get(eq("cache-key"), any(OnGetCompleteCallback.class));
-
- queue.stop();
- }
-
- private AsyncRequestQueue createRequestQueue(AsyncCache asyncCache) {
- return new AsyncRequestQueue.Builder(mMockNetwork)
- .setResponseDelivery(mDelivery)
- .setAsyncCache(asyncCache)
- .setExecutorFactory(
- new AsyncRequestQueue.ExecutorFactory() {
- @Override
- public ExecutorService createNonBlockingExecutor(
- BlockingQueue<Runnable> taskQueue) {
- return MoreExecutors.newDirectExecutorService();
- }
-
- @Override
- public ExecutorService createBlockingExecutor(
- BlockingQueue<Runnable> taskQueue) {
- return MoreExecutors.newDirectExecutorService();
- }
-
- @Override
- public ScheduledExecutorService createNonBlockingScheduledExecutor() {
- return mMockScheduledExecutor;
- }
- })
- .build();
- }
}
diff --git a/core/src/test/java/com/android/volley/CacheDispatcherTest.java b/src/test/java/com/android/volley/CacheDispatcherTest.java
index aef6785..aef6785 100644
--- a/core/src/test/java/com/android/volley/CacheDispatcherTest.java
+++ b/src/test/java/com/android/volley/CacheDispatcherTest.java
diff --git a/core/src/test/java/com/android/volley/NetworkDispatcherTest.java b/src/test/java/com/android/volley/NetworkDispatcherTest.java
index 74dfe8a..74dfe8a 100644
--- a/core/src/test/java/com/android/volley/NetworkDispatcherTest.java
+++ b/src/test/java/com/android/volley/NetworkDispatcherTest.java
diff --git a/core/src/test/java/com/android/volley/NetworkResponseTest.java b/src/test/java/com/android/volley/NetworkResponseTest.java
index 70210da..70210da 100644
--- a/core/src/test/java/com/android/volley/NetworkResponseTest.java
+++ b/src/test/java/com/android/volley/NetworkResponseTest.java
diff --git a/core/src/test/java/com/android/volley/RequestQueueIntegrationTest.java b/src/test/java/com/android/volley/RequestQueueIntegrationTest.java
index a2bfbc6..a2bfbc6 100644
--- a/core/src/test/java/com/android/volley/RequestQueueIntegrationTest.java
+++ b/src/test/java/com/android/volley/RequestQueueIntegrationTest.java
diff --git a/core/src/test/java/com/android/volley/RequestQueueTest.java b/src/test/java/com/android/volley/RequestQueueTest.java
index ba9b0f8..ba9b0f8 100644
--- a/core/src/test/java/com/android/volley/RequestQueueTest.java
+++ b/src/test/java/com/android/volley/RequestQueueTest.java
diff --git a/core/src/test/java/com/android/volley/RequestTest.java b/src/test/java/com/android/volley/RequestTest.java
index cced39f..cced39f 100644
--- a/core/src/test/java/com/android/volley/RequestTest.java
+++ b/src/test/java/com/android/volley/RequestTest.java
diff --git a/core/src/test/java/com/android/volley/ResponseDeliveryTest.java b/src/test/java/com/android/volley/ResponseDeliveryTest.java
index 6e71c3b..6e71c3b 100644
--- a/core/src/test/java/com/android/volley/ResponseDeliveryTest.java
+++ b/src/test/java/com/android/volley/ResponseDeliveryTest.java
diff --git a/cronet/src/test/java/com/android/volley/cronet/CronetHttpStackTest.java b/src/test/java/com/android/volley/cronet/CronetHttpStackTest.java
index cedb6ff..cedb6ff 100644
--- a/cronet/src/test/java/com/android/volley/cronet/CronetHttpStackTest.java
+++ b/src/test/java/com/android/volley/cronet/CronetHttpStackTest.java
diff --git a/core/src/test/java/com/android/volley/mock/MockAsyncStack.java b/src/test/java/com/android/volley/mock/MockAsyncStack.java
index 5ea8343..5ea8343 100644
--- a/core/src/test/java/com/android/volley/mock/MockAsyncStack.java
+++ b/src/test/java/com/android/volley/mock/MockAsyncStack.java
diff --git a/core/src/test/java/com/android/volley/mock/MockHttpStack.java b/src/test/java/com/android/volley/mock/MockHttpStack.java
index b86e7a0..b86e7a0 100644
--- a/core/src/test/java/com/android/volley/mock/MockHttpStack.java
+++ b/src/test/java/com/android/volley/mock/MockHttpStack.java
diff --git a/core/src/test/java/com/android/volley/mock/MockRequest.java b/src/test/java/com/android/volley/mock/MockRequest.java
index 6fc26b4..6fc26b4 100644
--- a/core/src/test/java/com/android/volley/mock/MockRequest.java
+++ b/src/test/java/com/android/volley/mock/MockRequest.java
diff --git a/core/src/test/java/com/android/volley/mock/ShadowSystemClock.java b/src/test/java/com/android/volley/mock/ShadowSystemClock.java
index 6d75d4b..6d75d4b 100644
--- a/core/src/test/java/com/android/volley/mock/ShadowSystemClock.java
+++ b/src/test/java/com/android/volley/mock/ShadowSystemClock.java
diff --git a/testing/src/main/java/com/android/volley/mock/TestRequest.java b/src/test/java/com/android/volley/mock/TestRequest.java
index f397f01..f397f01 100644
--- a/testing/src/main/java/com/android/volley/mock/TestRequest.java
+++ b/src/test/java/com/android/volley/mock/TestRequest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java b/src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java
index dbd6535..dbd6535 100644
--- a/core/src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java
+++ b/src/test/java/com/android/volley/toolbox/AdaptedHttpStackTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java b/src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java
index 982eda2..982eda2 100644
--- a/core/src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java
+++ b/src/test/java/com/android/volley/toolbox/AndroidAuthenticatorTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java b/src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java
index 1049ad0..1049ad0 100644
--- a/core/src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java
+++ b/src/test/java/com/android/volley/toolbox/BaseHttpStackTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java b/src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java
index 91d4062..91d4062 100644
--- a/core/src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java
+++ b/src/test/java/com/android/volley/toolbox/BasicAsyncNetworkTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/BasicNetworkTest.java b/src/test/java/com/android/volley/toolbox/BasicNetworkTest.java
index 3630379..3630379 100644
--- a/core/src/test/java/com/android/volley/toolbox/BasicNetworkTest.java
+++ b/src/test/java/com/android/volley/toolbox/BasicNetworkTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java b/src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java
index 62da207..62da207 100644
--- a/core/src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java
+++ b/src/test/java/com/android/volley/toolbox/ByteArrayPoolTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/CacheTest.java b/src/test/java/com/android/volley/toolbox/CacheTest.java
index 22dae22..22dae22 100644
--- a/core/src/test/java/com/android/volley/toolbox/CacheTest.java
+++ b/src/test/java/com/android/volley/toolbox/CacheTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java b/src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java
index db6e491..db6e491 100644
--- a/core/src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java
+++ b/src/test/java/com/android/volley/toolbox/DiskBasedCacheTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/HttpClientStackTest.java b/src/test/java/com/android/volley/toolbox/HttpClientStackTest.java
index 2a451dc..2a451dc 100644
--- a/core/src/test/java/com/android/volley/toolbox/HttpClientStackTest.java
+++ b/src/test/java/com/android/volley/toolbox/HttpClientStackTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java b/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java
index 7780c3e..7780c3e 100644
--- a/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java
+++ b/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java b/src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java
index 6794af8..6794af8 100644
--- a/core/src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java
+++ b/src/test/java/com/android/volley/toolbox/HttpStackConformanceTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/HurlStackTest.java b/src/test/java/com/android/volley/toolbox/HurlStackTest.java
index 7508244..7508244 100644
--- a/core/src/test/java/com/android/volley/toolbox/HurlStackTest.java
+++ b/src/test/java/com/android/volley/toolbox/HurlStackTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/ImageLoaderTest.java b/src/test/java/com/android/volley/toolbox/ImageLoaderTest.java
index 59a0b1b..59a0b1b 100644
--- a/core/src/test/java/com/android/volley/toolbox/ImageLoaderTest.java
+++ b/src/test/java/com/android/volley/toolbox/ImageLoaderTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/ImageRequestTest.java b/src/test/java/com/android/volley/toolbox/ImageRequestTest.java
index 6b50319..6b50319 100644
--- a/core/src/test/java/com/android/volley/toolbox/ImageRequestTest.java
+++ b/src/test/java/com/android/volley/toolbox/ImageRequestTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java b/src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java
index 70bb2ea..70bb2ea 100644
--- a/core/src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java
+++ b/src/test/java/com/android/volley/toolbox/JsonRequestCharsetTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/JsonRequestTest.java b/src/test/java/com/android/volley/toolbox/JsonRequestTest.java
index 44c0ad9..44c0ad9 100644
--- a/core/src/test/java/com/android/volley/toolbox/JsonRequestTest.java
+++ b/src/test/java/com/android/volley/toolbox/JsonRequestTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java b/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
index fd2073e..fd2073e 100644
--- a/core/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
+++ b/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java b/src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java
index 266edcd..266edcd 100644
--- a/core/src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java
+++ b/src/test/java/com/android/volley/toolbox/PoolingByteArrayOutputStreamTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/RequestFutureTest.java b/src/test/java/com/android/volley/toolbox/RequestFutureTest.java
index 5b5c975..5b5c975 100644
--- a/core/src/test/java/com/android/volley/toolbox/RequestFutureTest.java
+++ b/src/test/java/com/android/volley/toolbox/RequestFutureTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/RequestQueueTest.java b/src/test/java/com/android/volley/toolbox/RequestQueueTest.java
index 1899b71..1899b71 100644
--- a/core/src/test/java/com/android/volley/toolbox/RequestQueueTest.java
+++ b/src/test/java/com/android/volley/toolbox/RequestQueueTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/RequestTest.java b/src/test/java/com/android/volley/toolbox/RequestTest.java
index 0911ad6..0911ad6 100644
--- a/core/src/test/java/com/android/volley/toolbox/RequestTest.java
+++ b/src/test/java/com/android/volley/toolbox/RequestTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/ResponseTest.java b/src/test/java/com/android/volley/toolbox/ResponseTest.java
index 44438fa..44438fa 100644
--- a/core/src/test/java/com/android/volley/toolbox/ResponseTest.java
+++ b/src/test/java/com/android/volley/toolbox/ResponseTest.java
diff --git a/core/src/test/java/com/android/volley/toolbox/StringRequestTest.java b/src/test/java/com/android/volley/toolbox/StringRequestTest.java
index 0ecb06b..0ecb06b 100644
--- a/core/src/test/java/com/android/volley/toolbox/StringRequestTest.java
+++ b/src/test/java/com/android/volley/toolbox/StringRequestTest.java
diff --git a/core/src/test/java/com/android/volley/utils/CacheTestUtils.java b/src/test/java/com/android/volley/utils/CacheTestUtils.java
index 5980712..5980712 100644
--- a/core/src/test/java/com/android/volley/utils/CacheTestUtils.java
+++ b/src/test/java/com/android/volley/utils/CacheTestUtils.java
diff --git a/core/src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java b/src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java
index 67e5923..67e5923 100644
--- a/core/src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java
+++ b/src/test/java/com/android/volley/utils/ImmediateResponseDelivery.java
diff --git a/core/src/test/resources/org.robolectric.Config.properties b/src/test/resources/org.robolectric.Config.properties
index 9daf692..9daf692 100644
--- a/core/src/test/resources/org.robolectric.Config.properties
+++ b/src/test/resources/org.robolectric.Config.properties
diff --git a/testing/build.gradle b/testing/build.gradle
deleted file mode 100644
index b374088..0000000
--- a/testing/build.gradle
+++ /dev/null
@@ -1,4 +0,0 @@
-dependencies {
- implementation project(":core")
-}
-
diff --git a/testing/src/main/AndroidManifest.xml b/testing/src/main/AndroidManifest.xml
deleted file mode 100644
index 24b1376..0000000
--- a/testing/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.android.volley.testing" />