@NonNull public <Model, TResource, Transcode> List<Class<?>> getRegisteredResourceClasses( @NonNull Class<Model> modelClass, @NonNull Class<TResource> resourceClass, @NonNull Class<Transcode> transcodeClass) { List<Class<?>> result = modelToResourceClassCache.get(modelClass, resourceClass, transcodeClass); if (result == null) { result = new ArrayList<>(); List<Class<?>> dataClasses = modelLoaderRegistry.getDataClasses(modelClass); for (Class<?> dataClass : dataClasses) { List<? extends Class<?>> registeredResourceClasses = decoderRegistry.getResourceClasses(dataClass, resourceClass); for (Class<?> registeredResourceClass : registeredResourceClasses) { List<Class<Transcode>> registeredTranscodeClasses = transcoderRegistry .getTranscodeClasses(registeredResourceClass, transcodeClass); if (!registeredTranscodeClasses.isEmpty() && !result.contains(registeredResourceClass)) { result.add(registeredResourceClass); } } } modelToResourceClassCache.put( modelClass, resourceClass, transcodeClass, Collections.unmodifiableList(result)); } return result; }
public <Model, TResource, Transcode> List<Class<?>> getRegisteredResourceClasses( Class<Model> modelClass, Class<TResource> resourceClass, Class<Transcode> transcodeClass) { List<Class<?>> result = modelToResourceClassCache.get(modelClass, resourceClass); if (result == null) { result = new ArrayList<>(); List<Class<?>> dataClasses = modelLoaderRegistry.getDataClasses(modelClass); for (Class<?> dataClass : dataClasses) { List<? extends Class<?>> registeredResourceClasses = decoderRegistry.getResourceClasses(dataClass, resourceClass); for (Class<?> registeredResourceClass : registeredResourceClasses) { List<Class<Transcode>> registeredTranscodeClasses = transcoderRegistry .getTranscodeClasses(registeredResourceClass, transcodeClass); if (!registeredTranscodeClasses.isEmpty() && !result.contains(registeredResourceClass)) { result.add(registeredResourceClass); } } } modelToResourceClassCache.put(modelClass, resourceClass, Collections.unmodifiableList(result)); } return result; }