Move scheme names to handlers
This commit is contained in:
parent
fde9712454
commit
e7d4c0fb33
@ -225,8 +225,18 @@ public class AsyncDrawableLoader implements AsyncDrawable.Loader {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@NonNull
|
||||
public Builder schemeHandler(@NonNull String scheme, @Nullable SchemeHandler schemeHandler) {
|
||||
schemeHandlers.put(scheme, schemeHandler);
|
||||
public Builder addSchemeHandler(@NonNull SchemeHandler schemeHandler) {
|
||||
|
||||
SchemeHandler previous;
|
||||
|
||||
for (String scheme : schemeHandler.schemes()) {
|
||||
previous = schemeHandlers.put(scheme, schemeHandler);
|
||||
if (previous != null) {
|
||||
throw new IllegalStateException(String.format("Multiple scheme handlers handle " +
|
||||
"the same scheme: `%s`, %s %s", scheme, previous, schemeHandler));
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -261,33 +271,13 @@ public class AsyncDrawableLoader implements AsyncDrawable.Loader {
|
||||
|
||||
// @since 2.0.0
|
||||
// put default scheme handlers (to mimic previous behavior)
|
||||
{
|
||||
|
||||
final boolean hasHttp = schemeHandlers.containsKey("http");
|
||||
final boolean hasHttps = schemeHandlers.containsKey("https");
|
||||
|
||||
if (!hasHttp || !hasHttps) {
|
||||
|
||||
if (schemeHandlers.size() == 0) {
|
||||
if (client == null) {
|
||||
client = new OkHttpClient();
|
||||
}
|
||||
|
||||
final NetworkSchemeHandler handler = NetworkSchemeHandler.create(client);
|
||||
if (!hasHttp) {
|
||||
schemeHandlers.put("http", handler);
|
||||
}
|
||||
if (!hasHttps) {
|
||||
schemeHandlers.put("https", handler);
|
||||
}
|
||||
}
|
||||
|
||||
if (!schemeHandlers.containsKey("file")) {
|
||||
schemeHandlers.put("file", FileSchemeHandler.createWithAssets(resources.getAssets()));
|
||||
}
|
||||
|
||||
if (!schemeHandlers.containsKey("data")) {
|
||||
schemeHandlers.put("data", DataUriSchemeHandler.create());
|
||||
}
|
||||
addSchemeHandler(NetworkSchemeHandler.create(client));
|
||||
addSchemeHandler(FileSchemeHandler.createWithAssets(resources.getAssets()));
|
||||
addSchemeHandler(DataUriSchemeHandler.create());
|
||||
}
|
||||
|
||||
// add default media decoders if not specified
|
||||
|
@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
@ -57,4 +59,10 @@ public class DataUriSchemeHandler extends SchemeHandler {
|
||||
public void cancel(@NonNull String raw) {
|
||||
// no op
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<String> schemes() {
|
||||
return Collections.singleton("data");
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,8 @@ import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -98,4 +100,10 @@ public class FileSchemeHandler extends SchemeHandler {
|
||||
public void cancel(@NonNull String raw) {
|
||||
// no op
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<String> schemes() {
|
||||
return Collections.singleton("file");
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.Call;
|
||||
@ -78,4 +80,10 @@ public class NetworkSchemeHandler extends SchemeHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<String> schemes() {
|
||||
return Arrays.asList("http", "https");
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@ -13,4 +15,7 @@ public abstract class SchemeHandler {
|
||||
public abstract ImageItem handle(@NonNull String raw, @NonNull Uri uri);
|
||||
|
||||
public abstract void cancel(@NonNull String raw);
|
||||
|
||||
@NonNull
|
||||
public abstract Collection<String> schemes();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user