Skip to content

Commit

Permalink
Add CacheNameGenerator, now you can custom your own CacheNameGenerato…
Browse files Browse the repository at this point in the history
…r by overwriting SpringConfigProvider:

@bean
public SpringConfigProvider springConfigProvider() {
    return new SpringConfigProvider(){
        public CacheNameGenerator createCacheNameGenerator(String[] hiddenPackages){
            return MyCacheNameGenerator();
        }
    };
}
  • Loading branch information
areyouok committed Mar 22, 2018
1 parent 6d482af commit c729e7f
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.alicp.jetcache.anno.CreateCache;
import com.alicp.jetcache.anno.method.CacheConfigUtil;
import com.alicp.jetcache.anno.method.ClassUtil;
import com.alicp.jetcache.anno.support.CacheNameGenerator;
import com.alicp.jetcache.anno.support.CachedAnnoConfig;
import com.alicp.jetcache.anno.support.GlobalCacheConfig;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
Expand Down Expand Up @@ -78,13 +79,9 @@ private void init() {

String cacheName = cac.getName();
if (CacheConsts.UNDEFINED_STRING.equalsIgnoreCase(cacheName)) {
StringBuilder sb = new StringBuilder();
String className = field.getDeclaringClass().getName();
className = ClassUtil.removeHiddenPackage(globalCacheConfig.getHiddenPackages(),className);
className = ClassUtil.getShortClassName(className);
sb.append(className);
sb.append(".").append(field.getName());
cacheName = sb.toString();
String[] hiddenPackages = globalCacheConfig.getHiddenPackages();
CacheNameGenerator g = globalCacheConfig.getConfigProvider().createCacheNameGenerator(hiddenPackages);
cacheName = g.generateCacheName(field);
}
cache = globalCacheConfig.getCacheContext().__createOrGetCache(cac, ann.area(), cacheName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ private Cache createCacheByCachedConfig(CachedAnnoConfig ac, Method method, Stri
String area = ac.getArea();
String cacheName = ac.getName();
if (CacheConsts.UNDEFINED_STRING.equalsIgnoreCase(cacheName)) {
cacheName = ClassUtil.generateCacheName(method, hiddenPackages);
cacheName = configProvider.createCacheNameGenerator(hiddenPackages).generateCacheName(method);
}
Cache cache = __createOrGetCache(ac, area, cacheName);
return cache;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* Created on 2018/3/22.
*/
package com.alicp.jetcache.anno.support;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
* @author <a href="mailto:areyouok@gmail.com">huangli</a>
*/
public interface CacheNameGenerator {

String generateCacheName(Method method);

String generateCacheName(Field field);
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ public Function<Object, Object> parseKeyConvertor(String convertor) {
throw new CacheConfigException("not supported:" + convertor);
}

public CacheNameGenerator createCacheNameGenerator(String[] hiddenPackages) {
return new DefaultCacheNameGenerator(hiddenPackages);
}

public CacheContext newContext(GlobalCacheConfig globalCacheConfig) {
return new CacheContext(globalCacheConfig);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Created on 2018/3/22.
*/
package com.alicp.jetcache.anno.support;

import com.alicp.jetcache.anno.method.ClassUtil;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
* @author <a href="mailto:areyouok@gmail.com">huangli</a>
*/
public class DefaultCacheNameGenerator implements CacheNameGenerator {

private String[] hiddenPackages;

public DefaultCacheNameGenerator(String[] hiddenPackages) {
this.hiddenPackages = hiddenPackages;
}

@Override
public String generateCacheName(Method method) {
return ClassUtil.generateCacheName(method, hiddenPackages);
}

@Override
public String generateCacheName(Field field) {
StringBuilder sb = new StringBuilder();
String className = field.getDeclaringClass().getName();
className = ClassUtil.removeHiddenPackage(hiddenPackages, className);
className = ClassUtil.getShortClassName(className);
sb.append(className);
sb.append(".").append(field.getName());
return sb.toString();
}
}

0 comments on commit c729e7f

Please sign in to comment.