package com.bumptech.glide.load.resource.file; import com.bumptech.glide.load.Encoder; import com.bumptech.glide.load.ResourceDecoder; import com.bumptech.glide.load.ResourceEncoder; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.model.StreamEncoder; import com.bumptech.glide.load.resource.NullResourceEncoder; import com.bumptech.glide.provider.DataLoadProvider; import java.io.File; import java.io.InputStream; /** * An {@link com.bumptech.glide.provider.DataLoadProvider} that provides encoders and decoders for for obtaining a * cache file from {@link java.io.InputStream} data. */ public class StreamFileDataLoadProvider implements DataLoadProvider { private static final ErrorSourceDecoder ERROR_DECODER = new ErrorSourceDecoder(); private final ResourceDecoder cacheDecoder; private final Encoder encoder; public StreamFileDataLoadProvider() { cacheDecoder = new FileDecoder(); encoder = new StreamEncoder(); } @Override public ResourceDecoder getCacheDecoder() { return cacheDecoder; } @Override public ResourceDecoder getSourceDecoder() { return ERROR_DECODER; } @Override public Encoder getSourceEncoder() { return encoder; } @Override public ResourceEncoder getEncoder() { return NullResourceEncoder.get(); } private static class ErrorSourceDecoder implements ResourceDecoder { @Override public Resource decode(InputStream source, int width, int height) { throw new Error("You cannot decode a File from an InputStream by default," + " try either #diskCacheStratey(DiskCacheStrategy.SOURCE) to avoid this call or" + " #decoder(ResourceDecoder) to replace this Decoder"); } @Override public String getId() { return ""; } } }