• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alibaba / jetcache / #405

16 Apr 2024 05:58AM UTC coverage: 0.0% (-88.9%) from 88.866%
#405

push

areyouok
add encoding to fix coverage report

0 of 5353 relevant lines covered (0.0%)

0.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/jetcache-anno/src/main/java/com/alicp/jetcache/anno/support/DefaultCacheNameGenerator.java
1
/**
2
 * Created on 2018/3/22.
3
 */
4
package com.alicp.jetcache.anno.support;
5

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

8
import java.lang.reflect.Field;
9
import java.lang.reflect.Method;
10
import java.util.concurrent.ConcurrentHashMap;
11
import java.util.regex.Pattern;
12

13
/**
14
 * @author huangli
15
 */
16
public class DefaultCacheNameGenerator implements CacheNameGenerator {
17

18
    protected final String[] hiddenPackages;
19

20
    protected final ConcurrentHashMap<Method, String> cacheNameMap = new ConcurrentHashMap();
×
21

22
    public DefaultCacheNameGenerator(String[] hiddenPackages) {
×
23
        this.hiddenPackages = hiddenPackages;
×
24
    }
×
25

26
    @Override
27
    public String generateCacheName(Method method, Object targetObject) {
28
        String cacheName = cacheNameMap.get(method);
×
29

30
        if (cacheName == null) {
×
31
            final StringBuilder sb = new StringBuilder();
×
32

33
            String className = method.getDeclaringClass().getName();
×
34
            sb.append(ClassUtil.getShortClassName(removeHiddenPackage(hiddenPackages, className)));
×
35
            sb.append('.');
×
36
            sb.append(method.getName());
×
37
            sb.append('(');
×
38

39
            for(Class<?> c : method.getParameterTypes()){
×
40
                getDescriptor(sb, c , hiddenPackages);
×
41
            }
42

43
            sb.append(')');
×
44

45
            String str = sb.toString();
×
46
            cacheNameMap.put(method, str);
×
47
            return str;
×
48
        }
49

50
        return cacheName;
×
51
    }
52

53
    @Override
54
    public String generateCacheName(Field field) {
55
        StringBuilder sb = new StringBuilder();
×
56
        String className = field.getDeclaringClass().getName();
×
57
        className = removeHiddenPackage(hiddenPackages, className);
×
58
        className = ClassUtil.getShortClassName(className);
×
59
        sb.append(className);
×
60
        sb.append(".").append(field.getName());
×
61
        return sb.toString();
×
62
    }
63

64
    @SuppressWarnings("PMD.AvoidPatternCompileInMethodRule")
65
    protected String removeHiddenPackage(String[] hiddenPackages, String packageOrFullClassName) {
66
        if (hiddenPackages != null && packageOrFullClassName != null) {
×
67
            for (String p : hiddenPackages) {
×
68
                if (p != null && packageOrFullClassName.startsWith(p)) {
×
69
                    packageOrFullClassName = Pattern.compile(p, Pattern.LITERAL).matcher(
×
70
                            packageOrFullClassName).replaceFirst("");
×
71
                    if (packageOrFullClassName.length() > 0 && packageOrFullClassName.charAt(0) == '.') {
×
72
                        packageOrFullClassName = packageOrFullClassName.substring(1);
×
73
                    }
74
                    return packageOrFullClassName;
×
75
                }
76
            }
77
        }
78
        return packageOrFullClassName;
×
79
    }
80

81
    protected void getDescriptor(final StringBuilder sb, final Class<?> c, String[] hiddenPackages) {
82
        Class<?> d = c;
×
83
        while (true) {
84
            if (d.isPrimitive()) {
×
85
                char car;
86
                if (d == Integer.TYPE) {
×
87
                    car = 'I';
×
88
                } else if (d == Void.TYPE) {
×
89
                    car = 'V';
×
90
                } else if (d == Boolean.TYPE) {
×
91
                    car = 'Z';
×
92
                } else if (d == Byte.TYPE) {
×
93
                    car = 'B';
×
94
                } else if (d == Character.TYPE) {
×
95
                    car = 'C';
×
96
                } else if (d == Short.TYPE) {
×
97
                    car = 'S';
×
98
                } else if (d == Double.TYPE) {
×
99
                    car = 'D';
×
100
                } else if (d == Float.TYPE) {
×
101
                    car = 'F';
×
102
                } else /* if (d == Long.TYPE) */{
103
                    car = 'J';
×
104
                }
105
                sb.append(car);
×
106
                return;
×
107
            } else if (d.isArray()) {
×
108
                sb.append('[');
×
109
                d = d.getComponentType();
×
110
            } else {
111
                sb.append('L');
×
112
                String name = d.getName();
×
113
                name = removeHiddenPackage(hiddenPackages, name);
×
114
                name = ClassUtil.getShortClassName(name);
×
115
                sb.append(name);
×
116
                sb.append(';');
×
117
                return;
×
118
            }
119
        }
120
    }
121
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc