1 package org.kuali.common.devops.cache; 2 3 import static org.apache.commons.io.FileUtils.touch; 4 import static org.kuali.common.util.base.Exceptions.illegalState; 5 6 import java.io.File; 7 import java.io.IOException; 8 import java.util.List; 9 10 import org.kuali.common.http.model.HttpRequestResult; 11 import org.kuali.common.http.model.HttpWaitResult; 12 13 import com.fasterxml.jackson.annotation.JsonIgnore; 14 import com.fasterxml.jackson.databind.ObjectMapper; 15 import com.fasterxml.jackson.datatype.guava.GuavaModule; 16 17 public class UrlFileCache extends PersistentCache<File, HttpWaitResult> { 18 19 private final ObjectMapper mapper = getObjectMapper(); 20 21 @Override 22 public void store(File file, HttpWaitResult result) { 23 try { 24 touch(file); 25 mapper.writer().withDefaultPrettyPrinter().writeValue(file, result); 26 } catch (IOException e) { 27 throw illegalState(e); 28 } 29 } 30 31 @Override 32 public HttpWaitResult load(File file) { 33 try { 34 return mapper.readValue(file, HttpWaitResult.class); 35 } catch (IOException e) { 36 throw illegalState(e); 37 } 38 } 39 40 protected ObjectMapper getObjectMapper() { 41 ObjectMapper mapper = new ObjectMapper(); 42 mapper.registerModule(new GuavaModule()); 43 mapper.addMixInAnnotations(HttpWaitResult.class, MixIn.class); 44 return mapper; 45 } 46 47 private static final class MixIn { 48 @JsonIgnore 49 private List<HttpRequestResult> requestResults; 50 51 } 52 53 }