Android Open Source - android-http Http Ordered Async Assisiter Example Activity






From Project

Back to project page android-http.

License

The source code is released under:

Apache License

If you think the Android project android-http 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 2013, the diamond:dogs|group
 *///from  w ww.j  av  a  2 s. c  o m
package at.diamonddogs.example.http.activity;

import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.widget.TextView;
import android.widget.Toast;
import at.diamonddogs.data.dataobjects.WebRequest;
import at.diamonddogs.data.dataobjects.WebRequest.Type;
import at.diamonddogs.example.http.R;
import at.diamonddogs.example.http.dataobject.Weather;
import at.diamonddogs.example.http.processor.WeatherProcessor;
import at.diamonddogs.service.net.HttpOrderedAsyncAssister;
import at.diamonddogs.service.net.HttpOrderedAsyncAssister.HttpOrderedAsyncHandler2;
import at.diamonddogs.service.net.HttpOrderedAsyncAssister.HttpOrderedAsyncRequest;
import at.diamonddogs.service.net.HttpOrderedAsyncAssister.NextWebRequestDelegate;
import at.diamonddogs.service.net.HttpOrderedAsyncAssister.NoNextWebRequestDelegate;
import at.diamonddogs.service.processor.HeadRequestProcessor;
import at.diamonddogs.service.processor.ServiceProcessorMessageUtil;

/**
 * A simple example that illustrates how asynchronous {@link WebRequest}s can be
 * executed in order, according to certain conditions.
 */
public class HttpOrderedAsyncAssisiterExampleActivity extends Activity {

  private static final Logger LOGGER = LoggerFactory.getLogger(HttpServiceAssisterExampleActivity.class.getSimpleName());

  private HttpOrderedAsyncAssister assister;

  /**
   * Text view to display a weather string
   */
  private TextView text;

  /**
   * Text view to display the temperature
   */
  private TextView temperature;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.httporderedasyncassisterexampleactivity);
    assister = new HttpOrderedAsyncAssister(this);
    text = (TextView) findViewById(R.id.httporderedasyncassisiterexampleactivity_text);
    temperature = (TextView) findViewById(R.id.httporderedasyncassisiterexampleactivity_temperature);
  }

  /**
   * {@inheritDoc}
   */

  @Override
  protected void onResume() {
    super.onResume();
    assister.bindService();
    String weatherUrl = getWeatherUrl("Austria", "Vienna");
    LOGGER.info("URL: " + weatherUrl);
    WebRequest headRequest = getHeadRequest();
    // @formatter:off
    HttpOrderedAsyncRequest initialRequest = new HttpOrderedAsyncRequest(
        headRequest,
        new WeatherHandler(assister),
        new NextWebRequestDelegate() {
          @Override
          public HttpOrderedAsyncRequest getNextWebRequest(Message message) {
            Map<String, List<String>> header = (Map<String, List<String>>) message.obj;
            if (header != null) {
              if (header.containsKey("Content-Type") && header.get("Content-Type").get(0).equals("application/json; charset=utf-8")) {
                LOGGER.error("Content-Type is application/json; charset=utf-8, will run actual WebRequest now!");
                return new HttpOrderedAsyncRequest(
                    getWeatherRequest(),
                    new WeatherHandler(assister),
                    new NoNextWebRequestDelegate(),
                    new WeatherProcessor()
                );
              } else {
              LOGGER.error("Content-Type is notapplication/json; charset=utf-8 but " + header.get("Content-Type") + " not running any successive WebRequests!");
                return null;
              }
            } else {
              LOGGER.error("Headers are null, not sending WebRequest");
              return null;
            }
          }
        },
        new HeadRequestProcessor()
    );
    // @formatter:on
    assister.runRequests(initialRequest);
  }

  private WebRequest getHeadRequest() {
    WebRequest webRequest = new WebRequest();
    webRequest.setUrl(getWeatherUrl("Austria", "Vienna"));
    webRequest.setRequestType(Type.HEAD);

    // default header request processor
    webRequest.setProcessorId(HeadRequestProcessor.ID);

    // required for HEAD request
    webRequest.addHeaderField("Accept-Encoding", "gzip, deflate");
    return webRequest;
  }

  private WebRequest getWeatherRequest() {
    WebRequest webRequest = new WebRequest();
    webRequest.setUrl(getWeatherUrl("Austria", "Vienna"));
    webRequest.setRequestType(Type.GET);

    // default header request processor
    webRequest.setProcessorId(WeatherProcessor.ID);

    return webRequest;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  protected void onPause() {
    super.onPause();
    assister.unbindService();
  }

  /**
   * Formats the openweathermap.org weather URL
   * 
   * @param country
   *            the country
   * @param city
   *            the city
   * @return the weather url for country & city
   */
  private String getWeatherUrl(String country, String city) {
    Uri u = Uri.parse("http://api.openweathermap.org/data/2.5/weather/");
    // @formatter:off
    u = u.buildUpon()
      .appendQueryParameter("q", city + "," + country)
      .appendQueryParameter("units", "metric")
    .build();
    // @formatter:on
    return u.toString();
  }

  /**
   * This handler receives a callback once the web request has been processed.
   */
  private class WeatherHandler extends HttpOrderedAsyncHandler2 {
    /**
     * @param arg0
     */
    public WeatherHandler(HttpOrderedAsyncAssister arg0) {
      super(arg0);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean onNextWebRequestComplete(Message msg) {
      if (ServiceProcessorMessageUtil.isFromProcessor(msg, HeadRequestProcessor.ID)) {
        return ServiceProcessorMessageUtil.isSuccessful(msg);
      } else {
        return false;
      }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void onWebRequestChainCompleted(Message msg) {
      if (ServiceProcessorMessageUtil.isFromProcessor(msg, WeatherProcessor.ID)) {
        if (ServiceProcessorMessageUtil.isSuccessful(msg)) {
          Weather w = (Weather) msg.obj;
          text.setText(w.getText());
          temperature.setText(String.valueOf(w.getTemperature()));
        } else {
          Toast.makeText(HttpOrderedAsyncAssisiterExampleActivity.this, "Error fetching weather", Toast.LENGTH_LONG).show();
        }
      }
    }
  }
}




Java Source Code List

at.diamonddogs.android.support.v4.util.LruCache.java
at.diamonddogs.builder.WebRequestBuilderConfiguration.java
at.diamonddogs.builder.WebRequestBuilderDefaultConfig.java
at.diamonddogs.builder.WebRequestBuilder.java
at.diamonddogs.contentprovider.AbstractDefaultContentProvider.java
at.diamonddogs.contentprovider.CacheContentProvider.java
at.diamonddogs.data.adapter.ReplyAdapter.java
at.diamonddogs.data.adapter.database.DataBaseAdapterCacheInformation.java
at.diamonddogs.data.adapter.database.DatabaseAdapter.java
at.diamonddogs.data.adapter.database.Query.java
at.diamonddogs.data.adapter.parcelable.ParcelableAdapterTempFile.java
at.diamonddogs.data.adapter.parcelable.ParcelableAdapterWebReply.java
at.diamonddogs.data.adapter.parcelable.ParcelableAdapterWebRequest.java
at.diamonddogs.data.adapter.parcelable.ParcelableAdapter.java
at.diamonddogs.data.adapter.soap.SoapByteArrayAdapter.java
at.diamonddogs.data.adapter.soap.SoapReplyAdapter.java
at.diamonddogs.data.adapter.soap.SoapRequestAdapter.java
at.diamonddogs.data.dataobjects.CacheInformation.java
at.diamonddogs.data.dataobjects.NonTimeCriticalTaskQueueDefaultConfiguration.java
at.diamonddogs.data.dataobjects.NonTimeCriticalTask.java
at.diamonddogs.data.dataobjects.NonTimeCriticalWebRequest.java
at.diamonddogs.data.dataobjects.Reply.java
at.diamonddogs.data.dataobjects.Request.java
at.diamonddogs.data.dataobjects.SoapReply.java
at.diamonddogs.data.dataobjects.SoapRequest.java
at.diamonddogs.data.dataobjects.TempFile.java
at.diamonddogs.data.dataobjects.WebReply.java
at.diamonddogs.data.dataobjects.WebRequest.java
at.diamonddogs.data.parser.JSONArrayProxy.java
at.diamonddogs.data.parser.JSONObjectProxy.java
at.diamonddogs.data.parser.ParserProxy.java
at.diamonddogs.example.http.activity.CachingExampleActivity.java
at.diamonddogs.example.http.activity.HttpExampleActivity.java
at.diamonddogs.example.http.activity.HttpOrderedAsyncAssisiterExampleActivity.java
at.diamonddogs.example.http.activity.HttpServiceAssisterExampleActivity.java
at.diamonddogs.example.http.activity.ImageLoadingExampleListActivity.java
at.diamonddogs.example.http.activity.NonTimeCriticalExampleActivity.java
at.diamonddogs.example.http.activity.StartActivity.java
at.diamonddogs.example.http.dataobject.Example.java
at.diamonddogs.example.http.dataobject.NonTimeCriticalExampleConfiguration.java
at.diamonddogs.example.http.dataobject.Tripple.java
at.diamonddogs.example.http.dataobject.Weather.java
at.diamonddogs.example.http.dataobject.WebComic.java
at.diamonddogs.example.http.factory.NonTimeCriticalExampleConfigFactory.java
at.diamonddogs.example.http.processor.RssProcessor.java
at.diamonddogs.example.http.processor.WeatherProcessor.java
at.diamonddogs.example.http.processor.WebComicProcessor.java
at.diamonddogs.example.http.view.adapter.ImageLoadingExampleAdapter.java
at.diamonddogs.exception.CacheManagerException.java
at.diamonddogs.exception.DatabaseAdapterException.java
at.diamonddogs.exception.ProcessorExeception.java
at.diamonddogs.exception.ServiceException.java
at.diamonddogs.exception.WebClientException.java
at.diamonddogs.net.WebClientDefaultHttpClient.java
at.diamonddogs.net.WebClientFactory.java
at.diamonddogs.net.WebClientHttpURLConnection.java
at.diamonddogs.net.WebClient.java
at.diamonddogs.net.ssl.CustomSSLSocketFactory.java
at.diamonddogs.net.ssl.CustomX509TrustManager.java
at.diamonddogs.net.ssl.SSLHelper.java
at.diamonddogs.nontimecritical.NonTimeCriticalTaskManager.java
at.diamonddogs.nontimecritical.NonTimeCriticalTaskQueueConfigurationDefaultFactory.java
at.diamonddogs.nontimecritical.NonTimeCriticalTaskQueue.java
at.diamonddogs.service.CacheService.java
at.diamonddogs.service.importservice.GenericImportService.java
at.diamonddogs.service.importservice.ImportServiceContract.java
at.diamonddogs.service.importservice.ImportService.java
at.diamonddogs.service.importservice.OrderedImportServiceContract.java
at.diamonddogs.service.importservice.OrderedImportService.java
at.diamonddogs.service.net.HttpOrderedAsyncAssister.java
at.diamonddogs.service.net.HttpServiceAssister.java
at.diamonddogs.service.net.HttpService.java
at.diamonddogs.service.net.ServiceProcessorIdGenerator.java
at.diamonddogs.service.processor.AdjustableImageProcessor.java
at.diamonddogs.service.processor.DataProcessor.java
at.diamonddogs.service.processor.DummyProcessor.java
at.diamonddogs.service.processor.HeadRequestProcessor.java
at.diamonddogs.service.processor.ImageProcessor.java
at.diamonddogs.service.processor.JSONArrayProcessor.java
at.diamonddogs.service.processor.JSONProcessor.java
at.diamonddogs.service.processor.RawDataProcessor.java
at.diamonddogs.service.processor.ServiceProcessorMessageUtil.java
at.diamonddogs.service.processor.ServiceProcessor.java
at.diamonddogs.service.processor.SoapProcessor.java
at.diamonddogs.service.processor.StreamProcessor.java
at.diamonddogs.service.processor.SynchronousProcessor.java
at.diamonddogs.service.processor.SynchronousXmlProcessorNoDom.java
at.diamonddogs.service.processor.XMLProcessorNoDom.java
at.diamonddogs.service.processor.XMLProcessor.java
at.diamonddogs.service.processor.XMLXPathProcessor.java
at.diamonddogs.util.AndroidUtils.java
at.diamonddogs.util.CacheManager.java
at.diamonddogs.util.ConnectivityHelper.java
at.diamonddogs.util.SoapUtil.java
at.diamonddogs.util.Utils.java
at.diamonddogs.util.WorkerQueue.java
org.apache.commons.codec.CharEncoding.java
org.apache.commons.codec.binary.Hex.java
org.apache.commons.codec.binary.StringUtils.java