FileDocCategorySizeDatePackage
MemoryCache.javaAPI DocExample1297Sun Dec 12 10:55:18 GMT 2004None

MemoryCache.java

import java.net.*;
import java.io.*;
import java.util.*;
import java.util.concurrent.*;

public class MemoryCache extends ResponseCache {
  
  private Map<URI, SimpleCacheResponse> responses 
   = new ConcurrentHashMap<URI, SimpleCacheResponse>();
  private int maxEntries = 100;  
  
  public MemoryCache() {
    this(100);
  }
  
  public MemoryCache(int maxEntries) {
    this.maxEntries = maxEntries;
  }
  
  public CacheRequest put(URI uri, URLConnection uc)
   throws IOException {
     
     if (responses.size() >= maxEntries) return null;
     
     String cacheControl = uc.getHeaderField("Cache-Control");
     if (cacheControl != null && cacheControl.indexOf("no-cache") >= 0) {
       return null;
     }
   
     SimpleCacheRequest request = new SimpleCacheRequest();
     SimpleCacheResponse response = new SimpleCacheResponse(request, uc);
   
     responses.put(uri, response);
     return request;
    
  }

  public CacheResponse get(URI uri, String requestMethod, 
   Map<String,List<String>> requestHeaders)
   throws IOException {
     
     SimpleCacheResponse response = responses.get(uri);
     if (response != null && response.isExpired()) { // check expiration date
       responses.remove(response);
       response = null;
     }
     return response;
     
  }
  
}