Revision 48102
Added by Claudio Atzori almost 7 years ago
RepoInternalController.java | ||
---|---|---|
9 | 9 |
import javax.servlet.http.HttpServletRequest; |
10 | 10 |
import javax.servlet.http.HttpServletResponse; |
11 | 11 |
|
12 |
import com.google.common.cache.Cache; |
|
12 | 13 |
import org.apache.commons.io.IOUtils; |
13 | 14 |
import org.apache.commons.lang.StringUtils; |
14 | 15 |
import org.apache.commons.lang.exception.ExceptionUtils; |
15 | 16 |
import org.apache.commons.logging.Log; |
16 | 17 |
import org.apache.commons.logging.LogFactory; |
18 |
import org.springframework.cache.annotation.CacheEvict; |
|
19 |
import org.springframework.cache.annotation.Cacheable; |
|
17 | 20 |
import org.springframework.http.HttpStatus; |
18 | 21 |
import org.springframework.stereotype.Controller; |
19 | 22 |
import org.springframework.ui.ModelMap; |
... | ... | |
47 | 50 |
import eu.dnetlib.miscutils.functional.xml.ApplyXslt; |
48 | 51 |
import eu.dnetlib.msro.workflows.sarasvati.loader.WorkflowExecutor; |
49 | 52 |
import eu.dnetlib.msro.workflows.util.WorkflowsConstants; |
50 |
import net.sf.ehcache.Cache; |
|
51 |
import net.sf.ehcache.Element; |
|
52 | 53 |
|
53 | 54 |
@Controller |
54 | 55 |
public class RepoInternalController { |
... | ... | |
65 | 66 |
@Resource |
66 | 67 |
private RepoUIUtils repoUIUtils; |
67 | 68 |
|
68 |
@Resource(name = "repoUIJsonCache") |
|
69 |
private Cache repoUIJsonCache; |
|
70 |
|
|
71 | 69 |
private static final Log log = LogFactory.getLog(RepoInternalController.class); |
72 | 70 |
|
73 | 71 |
@RequestMapping(value = "/ui/browseRepoField.do") |
... | ... | |
75 | 73 |
return serviceLocator.getService(DatasourceManagerService.class).browseField(field); |
76 | 74 |
} |
77 | 75 |
|
78 |
@SuppressWarnings("unchecked")
|
|
76 |
@Cacheable(cacheNames = "repoUIJsonCache", key = "#param, #value", condition = "#refresh == false")
|
|
79 | 77 |
@RequestMapping(value = "/ui/listApis.do") |
80 | 78 |
public @ResponseBody List<SearchInterfacesEntry> listApis( |
81 | 79 |
@RequestParam(value = "param", required = true) final String param, |
82 | 80 |
@RequestParam(value = "value", required = true) final String value, |
83 | 81 |
@RequestParam(value = "refresh", required = false) final String refresh) throws Exception { |
84 | 82 |
|
85 |
final String cacheKey = "list@@@" + param + "@@@" + value; |
|
86 |
|
|
87 |
final Element elem = repoUIJsonCache.get(cacheKey); |
|
88 |
|
|
89 |
if ((elem != null) && (refresh == null)) { |
|
90 |
return (List<SearchInterfacesEntry>) elem.getObjectValue(); |
|
91 |
} else { |
|
92 |
log.info("Refreshing " + cacheKey + " cache..."); |
|
93 |
final List<SearchInterfacesEntry> list = serviceLocator.getService(DatasourceManagerService.class).searchInterface(param, value); |
|
94 |
repoUIJsonCache.put(new Element(cacheKey, list)); |
|
95 |
return list; |
|
96 |
} |
|
83 |
return serviceLocator.getService(DatasourceManagerService.class).searchInterface(param, value); |
|
97 | 84 |
} |
98 | 85 |
|
99 | 86 |
@RequestMapping(value = "/ui/listRepositories.map") |
... | ... | |
106 | 93 |
return serviceLocator.getService(DatasourceManagerService.class).simpleListDatasourcesByType(type); |
107 | 94 |
} |
108 | 95 |
|
96 |
@CacheEvict("repoUIJsonCache") |
|
109 | 97 |
@RequestMapping(value = "/ui/validateRepo.do") |
110 | 98 |
public @ResponseBody String listRepositories(@RequestParam(value = "id", required = true) final String id, |
111 | 99 |
@RequestParam(value = "b", required = true) final boolean b) throws Exception { |
... | ... | |
117 | 105 |
final String newId = b ? serviceLocator.getService(ISRegistryService.class).validateProfile(id) |
118 | 106 |
: serviceLocator.getService(ISRegistryService.class).invalidateProfile(id); |
119 | 107 |
|
120 |
repoUIJsonCache.removeAll(); |
|
121 |
|
|
122 | 108 |
return newId; |
123 | 109 |
} |
124 | 110 |
|
... | ... | |
191 | 177 |
return serviceLocator.getService(DatasourceManagerService.class).deleteInterface(repoId, ifaceId); |
192 | 178 |
} |
193 | 179 |
|
180 |
@CacheEvict("repoUIJsonCache") |
|
194 | 181 |
@RequestMapping("/ui/repoApiCompliance.update") |
195 | 182 |
public @ResponseBody boolean updateRepoApiCompliance(@RequestParam(value = "id", required = true) final String repoId, |
196 | 183 |
@RequestParam(value = "iface", required = true) final String ifaceId, |
... | ... | |
200 | 187 |
|
201 | 188 |
serviceLocator.getService(DatasourceManagerService.class).overrideCompliance(repoId, ifaceId, compliance); |
202 | 189 |
|
203 |
repoUIJsonCache.removeAll(); |
|
204 |
|
|
205 | 190 |
return true; |
206 | 191 |
} |
207 | 192 |
|
193 |
@CacheEvict("repoUIJsonCache") |
|
208 | 194 |
@RequestMapping("/ui/repoApiCompliance.reset") |
209 | 195 |
public @ResponseBody boolean resetRepoApiCompliance(@RequestParam(value = "id", required = true) final String repoId, |
210 | 196 |
@RequestParam(value = "iface", required = true) final String ifaceId) throws Exception { |
... | ... | |
213 | 199 |
|
214 | 200 |
serviceLocator.getService(DatasourceManagerService.class).overrideCompliance(repoId, ifaceId, null); |
215 | 201 |
|
216 |
repoUIJsonCache.removeAll(); |
|
217 |
|
|
218 | 202 |
return true; |
219 | 203 |
} |
220 | 204 |
|
Also available in: Unified diff
simplier cache management