View Javadoc
1   package org.kuali.common.devops.cache;
2   
3   import static org.kuali.common.util.base.Precondition.checkNotBlank;
4   import static org.springframework.beans.BeanUtils.copyProperties;
5   
6   import java.util.Set;
7   
8   import javax.validation.ConstraintViolation;
9   
10  import org.kuali.common.core.build.ViolationsBuilder;
11  import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
12  import org.kuali.common.http.model.HttpContext;
13  import org.kuali.common.http.model.HttpWaitResult;
14  import org.kuali.common.http.service.DefaultHttpService;
15  import org.kuali.common.http.service.HttpService;
16  import org.kuali.common.util.nullify.NullUtils;
17  
18  import com.google.common.cache.CacheLoader;
19  
20  @IdiotProofImmutable
21  public final class UrlLoader extends CacheLoader<String, HttpWaitResult> {
22  
23  	private final HttpContext context;
24  	private final HttpService service;
25  
26  	@Override
27  	public HttpWaitResult load(String url) {
28  		checkNotBlank(url, "url");
29  		HttpContext.Builder builder = HttpContext.builder();
30  		copyProperties(context, builder);
31  		builder.setUrl(url);
32  		HttpContext context = builder.build();
33  		return service.wait(context);
34  	}
35  
36  	private UrlLoader(Builder builder) {
37  		this.context = builder.context;
38  		this.service = builder.service;
39  	}
40  
41  	public static UrlLoader newUrlLoader() {
42  		return builder().build();
43  	}
44  
45  	public static UrlLoader newUrlLoader(HttpContext context) {
46  		return builder().context(context).build();
47  	}
48  
49  	public static UrlLoader newUrlLoader(HttpContext context, HttpService service) {
50  		return builder().context(context).service(service).build();
51  	}
52  
53  	public static Builder builder() {
54  		return new Builder();
55  	}
56  
57  	public static class Builder extends ViolationsBuilder<UrlLoader> {
58  
59  		private HttpContext context = HttpContext.builder(NullUtils.NONE).build();
60  		private HttpService service = new DefaultHttpService();
61  
62  		@Override
63  		public Set<ConstraintViolation<UrlLoader>> violations() {
64  			return violations(make());
65  		}
66  
67  		@Override
68  		public UrlLoader build() {
69  			return validate(make());
70  		}
71  
72  		private UrlLoader make() {
73  			return new UrlLoader(this);
74  		}
75  
76  		public Builder context(HttpContext context) {
77  			this.context = context;
78  			return this;
79  		}
80  
81  		public Builder service(HttpService service) {
82  			this.service = service;
83  			return this;
84  		}
85  
86  		public HttpContext getContext() {
87  			return context;
88  		}
89  
90  		public void setContext(HttpContext context) {
91  			this.context = context;
92  		}
93  
94  		public HttpService getService() {
95  			return service;
96  		}
97  
98  		public void setService(HttpService service) {
99  			this.service = service;
100 		}
101 
102 	}
103 
104 	public HttpContext getContext() {
105 		return context;
106 	}
107 
108 	public HttpService getService() {
109 		return service;
110 	}
111 
112 }