# Class CachedDataService

java.lang.Object
com.codename1.io.ConnectionRequest
com.codename1.io.services.CachedDataService

All Implemented Interfaces:
  `IOProgressListener`

public final class CachedDataService extends ConnectionRequest
Simple service that allows downloading and caching data locally. When the data is requested again the server is queried with a conditional get query.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ConnectionRequest

  `ConnectionRequest.CachingMode, ConnectionRequest.SSLCertificate`

- ## Field Summary

  ### Fields inherited from class ConnectionRequest

  `PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_REDUNDANT`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object o)`
  `protected void`
  `handleErrorResponseCode(int code, String message)`
  Handles a server response code that is not 200 and not a redirect (unless redirect handling is disabled)
  `protected void`
  `handleException(Exception err)`
  Handles an exception thrown when performing a network operation, the default implementation shows a retry dialog.
  `int`
  `hashCode()`
  `protected void`
  `readHeaders(Object connection)`
  Allows reading the headers from the connection by calling the getHeader() method.
  `protected void`
  `readResponse(InputStream input)`
  Callback for the server response with the input stream from the server.
  `static void`
  `register()`
  Makes sure the cached data class is properly registered as an externalizable.
  `static void`
  `updateData(CachedData d, ActionListener callback)`
  Checks that the cached data is up to date and if a newer version exits it updates the data in place

  ### Methods inherited from class ConnectionRequest

  `addArgument, addArgument, addArgument, addArgumentArray, addArgumentNoEncoding, addArgumentNoEncoding, addArgumentNoEncodingArray, addArguments, addExceptionListener, addRequestHeader, addResponseCodeListener, addResponseListener, buildRequestBody, cacheUnmodified, canGetSSLCertificates, checkSSLCertificates, cookieReceived, cookieSent, createRequestURL, downloadImageToFileSystem, downloadImageToFileSystem, downloadImageToFileSystem, downloadImageToFileSystem, downloadImageToFileSystem, downloadImageToFileSystem, downloadImageToStorage, downloadImageToStorage, downloadImageToStorage, downloadImageToStorage, downloadImageToStorage, downloadImageToStorage, fetchJSON, fetchJSONAsync, fireResponseListener, getCachedData, getCacheMode, getContentLength, getContentType, getCookieHeader, getDefaultCacheMode, getDefaultUserAgent, getDestinationFile, getDestinationStorage, getDisposeOnCompletion, getHeader, getHeaderFieldNames, getHeaders, getHttpMethod, getPriority, getReadTimeout, getRequestBody, getRequestBodyData, getResponseCode, getResponseContentType, getResponseData, getResponseErrorMessage, getResposeCode, getShowOnInit, getSilentRetryCount, getSSLCertificates, getTimeout, getUrl, getUserAgent, getYield, handleIOException, handleRuntimeException, hasResponseListeners, initConnection, initCookieHeader, ioStreamUpdate, isCheckSSLCertificates, isCookiesEnabled, isCookiesEnabledDefault, isDefaultFollowRedirects, isDuplicateSupported, isFailSilently, isFollowRedirects, isHandleErrorCodesInGlobalErrorHandler, isInsecure, isKilled, isNativeCookieSharingSupported, isPausable, isPaused, isPost, isReadRequest, isReadResponseForErrors, isReadResponseForErrorsDefault, isReadTimeoutSupported, isRedirecting, isWriteRequest, kill, onRedirect, pause, postResponse, purgeCache, purgeCacheDirectory, readErrorCodeHeaders, removeAllArguments, removeArgument, removeExceptionListener, removeResponseCodeListener, removeResponseListener, resume, retry, setCacheMode, setCheckSSLCertificates, setChunkedStreamingMode, setContentType, setCookieHeader, setCookiesEnabled, setCookiesEnabledDefault, setDefaultCacheMode, setDefaultFollowRedirects, setDefaultUserAgent, setDestinationFile, setDestinationStorage, setDisposeOnCompletion, setDuplicateSupported, setFailSilently, setFollowRedirects, setHandleErrorCodesInGlobalErrorHandler, setHttpMethod, setInsecure, setKilled, setPaused, setPost, setPriority, setReadRequest, setReadResponseForErrors, setReadResponseForErrorsDefault, setReadTimeout, setRequestBody, setRequestBody, setShowOnInit, setSilentRetryCount, setTimeout, setUrl, setUseNativeCookieStore, setUserAgent, setWriteRequest, shouldAutoCloseResponse, shouldConvertPostToGetOnRedirect, shouldStop, shouldWriteUTFAsGetBytes, validate`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### register

    public static void register()
    Makes sure the cached data class is properly registered as an externalizable. This must be invoked for caching to work

  - ### updateData

    public static void updateData(CachedData d, ActionListener callback)

    Checks that the cached data is up to date and if a newer version exits it updates the data in place

    ###### Parameters

    - `d`: the data to check

    - `callback`: optional callback to be invoked on request completion

  - ### equals

    public boolean equals(Object o)
    Description copied from class: `ConnectionRequest`
    Overrides:
      `equals` in class `ConnectionRequest`

  - ### hashCode

    public int hashCode()
    Description copied from class: `ConnectionRequest`
    Overrides:
      `hashCode` in class `ConnectionRequest`

  - ### handleException

    protected void handleException(Exception err)

    Handles an exception thrown when performing a network operation, the default implementation shows a retry dialog.

    ###### Parameters

    - `err`: the exception thrown
    Overrides:
      `handleException` in class `ConnectionRequest`

  - ### handleErrorResponseCode

    protected void handleErrorResponseCode(int code, String message)

    Handles a server response code that is not 200 and not a redirect (unless redirect handling is disabled)

    ###### Parameters

    - `code`: the response code from the server

    - `message`: the response message from the server

    Overrides:
      `handleErrorResponseCode` in class `ConnectionRequest`

  - ### readHeaders

    protected void readHeaders(Object connection) throws IOException

    Allows reading the headers from the connection by calling the getHeader() method.

    ###### Parameters

    - `connection`: used when invoking getHeader

    ###### Throws

    - `java.io.IOException`: thrown on failure
    Overrides:
      `readHeaders` in class `ConnectionRequest`
    Throws:
      `IOException`

  - ### readResponse

    protected void readResponse(InputStream input) throws IOException

    Callback for the server response with the input stream from the server. This method is invoked on the network thread

    ###### Parameters

    - `input`: the input stream containing the response

    ###### Throws

    - `IOException`: when a read input occurs
    Overrides:
      `readResponse` in class `ConnectionRequest`
    Throws:
      `IOException`