package com.bumptech.glide.load.model.stream; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.model.ModelLoaderFactory; import com.bumptech.glide.load.model.MultiModelLoaderFactory; import java.io.InputStream; import java.net.URL; /** * A wrapper class that translates {@link java.net.URL} objects into {@link * com.bumptech.glide.load.model.GlideUrl} objects and then uses the wrapped {@link * com.bumptech.glide.load.model.ModelLoader} for {@link com.bumptech.glide.load.model.GlideUrl}s to * load the data. */ public class UrlLoader implements ModelLoader<URL, InputStream> { private final ModelLoader<GlideUrl, InputStream> glideUrlLoader; public UrlLoader(ModelLoader<GlideUrl, InputStream> glideUrlLoader) { this.glideUrlLoader = glideUrlLoader; } @Override public LoadData<InputStream> buildLoadData(URL model, int width, int height, Options options) { return glideUrlLoader.buildLoadData(new GlideUrl(model), width, height, options); } @Override public boolean handles(URL model) { return true; } /** * Factory for loading {@link InputStream}s from {@link URL}s. */ public static class StreamFactory implements ModelLoaderFactory<URL, InputStream> { @Override public ModelLoader<URL, InputStream> build(MultiModelLoaderFactory multiFactory) { return new UrlLoader(multiFactory.build(GlideUrl.class, InputStream.class)); } @Override public void teardown() { // Do nothing. } } }