/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.drawee.backends.volley; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import com.android.volley.toolbox.ImageLoader; import com.facebook.common.internal.Preconditions; import com.facebook.datasource.DataSource; import com.facebook.drawee.controller.AbstractDraweeControllerBuilder; import com.facebook.drawee.controller.ControllerListener; import com.facebook.drawee.interfaces.DraweeController; import java.util.Set; /** * Concrete implementation of Volley Drawee controller builder. * <p/> See {@link AbstractDraweeControllerBuilder} for more details. */ public class VolleyDraweeControllerBuilder extends AbstractDraweeControllerBuilder< VolleyDraweeControllerBuilder, Uri, Bitmap, Bitmap> { private final ImageLoader mImageLoader; private final VolleyDraweeControllerFactory mVolleyDraweeControllerFactory; public VolleyDraweeControllerBuilder( Context context, ImageLoader imageLoader, VolleyDraweeControllerFactory volleyDraweeControllerFactory, Set<ControllerListener> boundControllerListeners) { super(context, boundControllerListeners); mImageLoader = imageLoader; mVolleyDraweeControllerFactory = volleyDraweeControllerFactory; } @Override protected VolleyDraweeController obtainController() { DraweeController oldController = getOldController(); VolleyDraweeController controller; if (oldController instanceof VolleyDraweeController) { controller = (VolleyDraweeController) oldController; controller.initialize( obtainDataSourceSupplier(), generateUniqueControllerId(), getCallerContext()); } else { controller = mVolleyDraweeControllerFactory.newController( obtainDataSourceSupplier(), generateUniqueControllerId(), getCallerContext()); } return controller; } @Override protected DataSource<Bitmap> getDataSourceForRequest( final Uri imageRequest, final Object callerContext, final CacheLevel cacheLevel) { return new VolleyDataSource(mImageLoader, imageRequest, cacheLevel); } @Override public VolleyDraweeControllerBuilder setUri(Uri uri) { return setImageRequest(uri); } @Override public VolleyDraweeControllerBuilder setUri(String uriString) { Preconditions.checkNotNull(uriString); return setImageRequest(Uri.parse(uriString)); } @Override protected VolleyDraweeControllerBuilder getThis() { return this; } }