use of java.net.ResponseCache in project robovm by robovm.
the class URLConnectionTest method backdoorUrlToUri.
/**
* Exercises HttpURLConnection to convert URL to a URI. Unlike URL#toURI,
* HttpURLConnection recovers from URLs with unescaped but unsupported URI
* characters like '{' and '|' by escaping these characters.
*/
private URI backdoorUrlToUri(URL url) throws Exception {
final AtomicReference<URI> uriReference = new AtomicReference<URI>();
ResponseCache.setDefault(new ResponseCache() {
@Override
public CacheRequest put(URI uri, URLConnection connection) throws IOException {
return null;
}
@Override
public CacheResponse get(URI uri, String requestMethod, Map<String, List<String>> requestHeaders) throws IOException {
uriReference.set(uri);
throw new UnsupportedOperationException();
}
});
try {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.getResponseCode();
} catch (Exception expected) {
}
return uriReference.get();
}
use of java.net.ResponseCache in project android_frameworks_base by crdroidandroid.
the class HttpResponseCache method install.
/**
* Creates a new HTTP response cache and sets it as the system default cache.
*
* @param directory the directory to hold cache data.
* @param maxSize the maximum size of the cache in bytes.
* @return the newly-installed cache
* @throws IOException if {@code directory} cannot be used for this cache.
* Most applications should respond to this exception by logging a
* warning.
*/
public static synchronized HttpResponseCache install(File directory, long maxSize) throws IOException {
ResponseCache installed = ResponseCache.getDefault();
if (installed instanceof HttpResponseCache) {
HttpResponseCache installedResponseCache = (HttpResponseCache) installed;
// don't close and reopen if an equivalent cache is already installed
AndroidShimResponseCache trueResponseCache = installedResponseCache.delegate;
if (trueResponseCache.isEquivalent(directory, maxSize)) {
return installedResponseCache;
} else {
// The HttpResponseCache that owns this object is about to be replaced.
trueResponseCache.close();
}
}
AndroidShimResponseCache trueResponseCache = AndroidShimResponseCache.create(directory, maxSize);
HttpResponseCache newResponseCache = new HttpResponseCache(trueResponseCache);
ResponseCache.setDefault(newResponseCache);
return newResponseCache;
}
use of java.net.ResponseCache in project enroscar by stanfy.
the class ResponseCacheSwitcher method restoreUrlConnection.
public static void restoreUrlConnection(final URLConnection connection) {
final ResponseCache cache = ResponseCache.getDefault();
if (!(cache instanceof ResponseCacheSwitcher)) {
return;
}
final ResponseCacheSwitcher hub = (ResponseCacheSwitcher) cache;
final LinkedList<URLConnection> stack = hub.currentUrlConnection.get();
if (!stack.isEmpty() && stack.peek() == connection) {
stack.removeFirst();
} else {
final String message = "Bad call to restoreUrlConnection(): " + (stack.isEmpty() ? "stack is empty" : "connection does not match");
Log.w(TAG, message);
if (DebugFlags.STRICT_MODE) {
throw new RuntimeException(message);
}
}
}
use of java.net.ResponseCache in project j2objc by google.
the class URLConnectionTest method testResponseCacheReturnsNullOutputStream.
// TODO(tball): b/28067294
// public void testHostWithNul() throws Exception {
// URL url = new URL("http://host\u0000/");
// try {
// url.openStream();
// fail();
// } catch (UnknownHostException expected) {}
// }
/**
* Don't explode if the cache returns a null body. http://b/3373699
*/
public void testResponseCacheReturnsNullOutputStream() throws Exception {
final AtomicBoolean aborted = new AtomicBoolean();
ResponseCache.setDefault(new ResponseCache() {
@Override
public CacheResponse get(URI uri, String requestMethod, Map<String, List<String>> requestHeaders) throws IOException {
return null;
}
@Override
public CacheRequest put(URI uri, URLConnection connection) throws IOException {
return new CacheRequest() {
@Override
public void abort() {
aborted.set(true);
}
@Override
public OutputStream getBody() throws IOException {
return null;
}
};
}
});
server.enqueue(new MockResponse().setBody("abcdef"));
server.play();
HttpURLConnection connection = (HttpURLConnection) server.getUrl("/").openConnection();
InputStream in = connection.getInputStream();
assertEquals("abc", readAscii(in, 3));
in.close();
// The best behavior is ambiguous, but RI 6 doesn't abort here
assertFalse(aborted.get());
}
use of java.net.ResponseCache in project okhttp by square.
the class HttpResponseCache method install.
/**
* Creates a new HTTP response cache and sets it as the system default cache.
*
* @param directory the directory to hold cache data.
* @param maxSize the maximum size of the cache in bytes.
* @return the newly-installed cache
* @throws java.io.IOException if {@code directory} cannot be used for this cache. Most
* applications should respond to this exception by logging a warning.
*/
public static synchronized HttpResponseCache install(File directory, long maxSize) throws IOException {
ResponseCache installed = ResponseCache.getDefault();
if (installed instanceof HttpResponseCache) {
HttpResponseCache installedResponseCache = (HttpResponseCache) installed;
// don't close and reopen if an equivalent cache is already installed
AndroidShimResponseCache trueResponseCache = installedResponseCache.shimResponseCache;
if (trueResponseCache.isEquivalent(directory, maxSize)) {
return installedResponseCache;
} else {
// The HttpResponseCache that owns this object is about to be replaced.
trueResponseCache.close();
}
}
AndroidShimResponseCache trueResponseCache = AndroidShimResponseCache.create(directory, maxSize);
HttpResponseCache newResponseCache = new HttpResponseCache(trueResponseCache);
ResponseCache.setDefault(newResponseCache);
return newResponseCache;
}
Aggregations