Android Open Source - BagOfPix Request Async Task






From Project

Back to project page BagOfPix.

License

The source code is released under:

MIT License

If you think the Android project BagOfPix listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2010-present Facebook.//from  www . ja v  a 2 s .  c  om
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.facebook;

import android.annotation.TargetApi;
import android.os.AsyncTask;
import android.os.Handler;
import android.util.Log;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Executor;

/**
 * Defines an AsyncTask suitable for executing a Request in the background. May be subclassed
 * by applications having unique threading model needs.
 */
@TargetApi(3)
public class RequestAsyncTask extends AsyncTask<Void, Void, List<Response>> {
    private static final String TAG = RequestAsyncTask.class.getCanonicalName();
    private static Method executeOnExecutorMethod;

    private final HttpURLConnection connection;
    private final RequestBatch requests;

    private Exception exception;

    static {
        for (Method method : AsyncTask.class.getMethods()) {
            if ("executeOnExecutor".equals(method.getName())) {
                Class<?>[] parameters = method.getParameterTypes();
                if ((parameters.length == 2) && (parameters[0] == Executor.class) && parameters[1].isArray()) {
                    executeOnExecutorMethod = method;
                    break;
                }
            }
        }
    }

    /**
     * Constructor. Serialization of the requests will be done in the background, so any serialization-
     * related errors will be returned via the Response.getException() method.
     *
     * @param requests the requests to execute
     */
    public RequestAsyncTask(Request... requests) {
        this(null, new RequestBatch(requests));
    }

    /**
     * Constructor. Serialization of the requests will be done in the background, so any serialization-
     * related errors will be returned via the Response.getException() method.
     *
     * @param requests the requests to execute
     */
    public RequestAsyncTask(Collection<Request> requests) {
        this(null, new RequestBatch(requests));
    }

    /**
     * Constructor. Serialization of the requests will be done in the background, so any serialization-
     * related errors will be returned via the Response.getException() method.
     *
     * @param requests the requests to execute
     */
    public RequestAsyncTask(RequestBatch requests) {
        this(null, requests);
    }

    /**
     * Constructor that allows specification of an HTTP connection to use for executing
     * the requests. No validation is done that the contents of the connection actually
     * reflect the serialized requests, so it is the caller's responsibility to ensure
     * that it will correctly generate the desired responses.
     *
     * @param connection the HTTP connection to use to execute the requests
     * @param requests   the requests to execute
     */
    public RequestAsyncTask(HttpURLConnection connection, Request... requests) {
        this(connection, new RequestBatch(requests));
    }

    /**
     * Constructor that allows specification of an HTTP connection to use for executing
     * the requests. No validation is done that the contents of the connection actually
     * reflect the serialized requests, so it is the caller's responsibility to ensure
     * that it will correctly generate the desired responses.
     *
     * @param connection the HTTP connection to use to execute the requests
     * @param requests   the requests to execute
     */
    public RequestAsyncTask(HttpURLConnection connection, Collection<Request> requests) {
        this(connection, new RequestBatch(requests));
    }

    /**
     * Constructor that allows specification of an HTTP connection to use for executing
     * the requests. No validation is done that the contents of the connection actually
     * reflect the serialized requests, so it is the caller's responsibility to ensure
     * that it will correctly generate the desired responses.
     *
     * @param connection the HTTP connection to use to execute the requests
     * @param requests   the requests to execute
     */
    public RequestAsyncTask(HttpURLConnection connection, RequestBatch requests) {
        this.requests = requests;
        this.connection = connection;
    }

    protected final Exception getException() {
        return exception;
    }

    protected final RequestBatch getRequests() {
        return requests;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{RequestAsyncTask: ").append(" connection: ").append(connection)
                .append(", requests: ").append(requests).append("}").toString();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        if (requests.getCallbackHandler() == null) {
            // We want any callbacks to go to a handler on this thread unless a handler has already been specified.
            requests.setCallbackHandler(new Handler());
        }
    }

    @Override
    protected void onPostExecute(List<Response> result) {
        super.onPostExecute(result);

        if (exception != null) {
            Log.d(TAG, String.format("onPostExecute: exception encountered during request: %s", exception.getMessage()));
        }
    }

    @Override
    protected List<Response> doInBackground(Void... params) {
        try {
            if (connection == null) {
                return requests.executeAndWait();
            } else {
                return Request.executeConnectionAndWait(connection, requests);
            }
        } catch (Exception e) {
            exception = e;
            return null;
        }
    }

    RequestAsyncTask executeOnSettingsExecutor() {
        try {
            if (executeOnExecutorMethod != null) {
                executeOnExecutorMethod.invoke(this, Settings.getExecutor(), null);
                return this;
            }
        } catch (InvocationTargetException e) {
            // fall-through
        } catch (IllegalAccessException e) {
            // fall-through
        }

        this.execute();
        return this;
    }
}




Java Source Code List

com.example.bagofpix.CreateStory.java
com.example.bagofpix.DBHandler.java
com.example.bagofpix.DBReader.java
com.example.bagofpix.ImportPhoto.java
com.example.bagofpix.MainActivity.java
com.example.bagofpix.Photo.java
com.example.bagofpix.Story.java
com.example.bagofpix.ViewStory.java
com.facebook.AccessTokenSource.java
com.facebook.AccessToken.java
com.facebook.AppEventsConstants.java
com.facebook.AppEventsLogger.java
com.facebook.AppLinkData.java
com.facebook.AuthorizationClient.java
com.facebook.FacebookAuthorizationException.java
com.facebook.FacebookDialogException.java
com.facebook.FacebookException.java
com.facebook.FacebookGraphObjectException.java
com.facebook.FacebookOperationCanceledException.java
com.facebook.FacebookRequestError.java
com.facebook.FacebookSdkVersion.java
com.facebook.FacebookServiceException.java
com.facebook.GetTokenClient.java
com.facebook.HttpMethod.java
com.facebook.InsightsLogger.java
com.facebook.LegacyHelper.java
com.facebook.LoggingBehavior.java
com.facebook.LoginActivity.java
com.facebook.NativeAppCallAttachmentStore.java
com.facebook.NativeAppCallContentProvider.java
com.facebook.NonCachingTokenCachingStrategy.java
com.facebook.RequestAsyncTask.java
com.facebook.RequestBatch.java
com.facebook.Request.java
com.facebook.Response.java
com.facebook.SessionDefaultAudience.java
com.facebook.SessionLoginBehavior.java
com.facebook.SessionState.java
com.facebook.Session.java
com.facebook.Settings.java
com.facebook.SharedPreferencesTokenCachingStrategy.java
com.facebook.TestSession.java
com.facebook.TokenCachingStrategy.java
com.facebook.UiLifecycleHelper.java
com.facebook.android.AsyncFacebookRunner.java
com.facebook.android.DialogError.java
com.facebook.android.FacebookError.java
com.facebook.android.Facebook.java
com.facebook.android.FbDialog.java
com.facebook.android.Util.java
com.facebook.internal.AnalyticsEvents.java
com.facebook.internal.CacheableRequestBatch.java
com.facebook.internal.FileLruCache.java
com.facebook.internal.ImageDownloader.java
com.facebook.internal.ImageRequest.java
com.facebook.internal.ImageResponseCache.java
com.facebook.internal.ImageResponse.java
com.facebook.internal.Logger.java
com.facebook.internal.NativeProtocol.java
com.facebook.internal.PlatformServiceClient.java
com.facebook.internal.ServerProtocol.java
com.facebook.internal.SessionAuthorizationType.java
com.facebook.internal.SessionTracker.java
com.facebook.internal.UrlRedirectCache.java
com.facebook.internal.Utility.java
com.facebook.internal.Validate.java
com.facebook.internal.WorkQueue.java
com.facebook.internal.package-info.java
com.facebook.model.CreateGraphObject.java
com.facebook.model.GraphLocation.java
com.facebook.model.GraphMultiResult.java
com.facebook.model.GraphObjectList.java
com.facebook.model.GraphObject.java
com.facebook.model.GraphPlace.java
com.facebook.model.GraphUser.java
com.facebook.model.JsonUtil.java
com.facebook.model.OpenGraphAction.java
com.facebook.model.OpenGraphObject.java
com.facebook.model.PropertyName.java
com.facebook.widget.FacebookDialog.java
com.facebook.widget.FacebookFragment.java
com.facebook.widget.FriendPickerFragment.java
com.facebook.widget.GraphObjectAdapter.java
com.facebook.widget.GraphObjectCursor.java
com.facebook.widget.GraphObjectPagingLoader.java
com.facebook.widget.LoginButton.java
com.facebook.widget.PickerFragment.java
com.facebook.widget.PlacePickerFragment.java
com.facebook.widget.ProfilePictureView.java
com.facebook.widget.SimpleGraphObjectCursor.java
com.facebook.widget.UserSettingsFragment.java
com.facebook.widget.WebDialog.java