![JAR search and dependency download from the Maven repository](/logo.png)
com.bumptech.glide.provider.ResourceDecoderRegistry Maven / Gradle / Ivy
package com.bumptech.glide.provider;
import com.bumptech.glide.load.ResourceDecoder;
import com.bumptech.glide.util.Synthetic;
import java.util.ArrayList;
import java.util.List;
/**
* Contains an ordered list of {@link ResourceDecoder}s capable of decoding arbitrary data types
* into arbitrary resource types from highest priority decoders to lowest priority decoders.
*/
@SuppressWarnings("rawtypes")
public class ResourceDecoderRegistry {
private final List> decoders = new ArrayList<>();
@SuppressWarnings("unchecked")
public synchronized List> getDecoders(Class dataClass,
Class resourceClass) {
List> result = new ArrayList<>();
for (Entry, ?> entry : decoders) {
if (entry.handles(dataClass, resourceClass)) {
result.add((ResourceDecoder) entry.decoder);
}
}
// TODO: cache result list.
return result;
}
@SuppressWarnings("unchecked")
public synchronized List> getResourceClasses(Class dataClass,
Class resourceClass) {
List> result = new ArrayList<>();
for (Entry, ?> entry : decoders) {
if (entry.handles(dataClass, resourceClass)) {
result.add((Class) entry.resourceClass);
}
}
return result;
}
public synchronized void append(ResourceDecoder decoder, Class dataClass,
Class resourceClass) {
decoders.add(new Entry<>(dataClass, resourceClass, decoder));
}
public synchronized void prepend(ResourceDecoder decoder, Class dataClass,
Class resourceClass) {
decoders.add(0, new Entry<>(dataClass, resourceClass, decoder));
}
private static class Entry {
private final Class dataClass;
@Synthetic final Class resourceClass;
@Synthetic final ResourceDecoder decoder;
public Entry(Class dataClass, Class resourceClass, ResourceDecoder decoder) {
this.dataClass = dataClass;
this.resourceClass = resourceClass;
this.decoder = decoder;
}
public boolean handles(Class> dataClass, Class> resourceClass) {
return this.dataClass.isAssignableFrom(dataClass) && resourceClass
.isAssignableFrom(this.resourceClass);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy