private Object generateKey(Object[] arguments) { return this.generator.generate(null, null, arguments); }
private Cache.ValueWrapper getCacheForCurrentUser(){ Object[] params = { Context.getLocale(), Context.getAuthenticatedUser() }; Object key = (new SimpleKeyGenerator()).generate(null, null, params); return cacheManager.getCache("userSearchLocales").get(key); }
@Override public Object generate(Object target, Method method, Object... params) { if (params.length == 0) { String methodName = method.getName(); String methodReturnType = method.getReturnType().getName(); String parameters = Stream.of(method.getParameters()).map(Parameter::getName).collect(Collectors.joining()); return (methodName.hashCode() + methodReturnType.hashCode() + parameters.hashCode()) / 2; } else { return super.generate(target, method, params); } }
@Override public Object generate(Object target, Method method, Object... params) { final int prime = 257; Object value = super.generate(target, method, params); CacheKeyHint hint = method.getAnnotation(CacheKeyHint.class); if (hint != null) { return value.hashCode() * prime + hint.value().hashCode(); } else { return value.hashCode(); } } }