Class ETagWebRequestor
- java.lang.Object
-
- com.restfb.DefaultWebRequestor
-
- com.restfb.ETagWebRequestor
-
- All Implemented Interfaces:
WebRequestor
public class ETagWebRequestor extends DefaultWebRequestor
WebRequestor with ETag-support.The
ETagWebRequestor
caches all GET-requests with an ETag header field in aSoftHashMap
and uses the ETag on the next request asIf-None-Match
header field if the same URL is requested.Is the response status code 304 (NOT MODIFIED) the old response from cache is used.
Attention: even 304 responses count as request at Facebook and so they count against the throttling limits. Facebook suggests to use them for data that change only frequently
Further information regarding ETag at Facebook can be found here: https://developers.facebook.com/blog/post/627/
Attention 2: If excessively used with a lot of URLs, the
SoftHashMap
can lead to a performance degradation
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ETagWebRequestor.ETagResponse
-
Nested classes/interfaces inherited from class com.restfb.DefaultWebRequestor
DefaultWebRequestor.HttpMethod
-
Nested classes/interfaces inherited from interface com.restfb.WebRequestor
WebRequestor.Request, WebRequestor.Response
-
-
Constructor Summary
Constructors Constructor Description ETagWebRequestor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
customizeConnection(HttpURLConnection connection)
Hook method which allows subclasses to easily customize theconnection
s created byDefaultWebRequestor.executeGet(com.restfb.WebRequestor.Request)
andDefaultWebRequestor.executePost(com.restfb.WebRequestor.Request)
- for example, setting a custom read timeout or request header.protected WebRequestor.Response
fetchResponse(HttpURLConnection httpUrlConnection)
boolean
isUseCache()
return if cache is used.static void
setMapSupplier(Supplier<Map<String,ETagWebRequestor.ETagResponse>> mapSupplier)
Override the mapSupplier, it needs to be some implementation of theMap
interface.void
setUseCache(boolean useCache)
activate/deactivate the ETag-Cache for the next request.-
Methods inherited from class com.restfb.DefaultWebRequestor
closeQuietly, closeQuietly, createFormFieldName, executeDelete, executeGet, executePost, fillHeaderAndDebugInfo, getCurrentHeaders, getDebugHeaderInfo, initHeaderAccessToken, isAutocloseBinaryAttachmentStream, openConnection, setAutocloseBinaryAttachmentStream, write
-
-
-
-
Constructor Detail
-
ETagWebRequestor
public ETagWebRequestor()
-
-
Method Detail
-
customizeConnection
protected void customizeConnection(HttpURLConnection connection)
Description copied from class:DefaultWebRequestor
Hook method which allows subclasses to easily customize theconnection
s created byDefaultWebRequestor.executeGet(com.restfb.WebRequestor.Request)
andDefaultWebRequestor.executePost(com.restfb.WebRequestor.Request)
- for example, setting a custom read timeout or request header.This implementation is a no-op.
- Overrides:
customizeConnection
in classDefaultWebRequestor
- Parameters:
connection
- The connection to customize.
-
fetchResponse
protected WebRequestor.Response fetchResponse(HttpURLConnection httpUrlConnection) throws IOException
- Overrides:
fetchResponse
in classDefaultWebRequestor
- Throws:
IOException
-
isUseCache
public boolean isUseCache()
return if cache is used.- Returns:
true
if ETag-Cache is used,false
if not
-
setUseCache
public void setUseCache(boolean useCache)
activate/deactivate the ETag-Cache for the next request.when deactivated, the ETag-Cache is *not* deleted
- Parameters:
useCache
- flag to dis/enable the cache during runtime
-
setMapSupplier
public static void setMapSupplier(Supplier<Map<String,ETagWebRequestor.ETagResponse>> mapSupplier)
Override the mapSupplier, it needs to be some implementation of theMap
interface.You have to set this before the
ETagWebRequestor
object is created. While building it, the mapSupplier is used- Parameters:
mapSupplier
- the supplier, that returns a new Map,
-
-