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

alibaba / jetcache / #448

23 May 2026 01:38PM UTC coverage: 89.341% (+0.4%) from 88.921%
#448

push

areyouok
fix: init fail if Kryo not in classpath

0 of 4 new or added lines in 1 file covered. (0.0%)

27 existing lines in 9 files now uncovered.

5029 of 5629 relevant lines covered (89.34%)

0.89 hits per line

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

95.35
/jetcache-anno/src/main/java/com/alicp/jetcache/anno/support/DefaultEncoderParser.java
1
/**
2
 * Created on 2019/6/7.
3
 */
4
package com.alicp.jetcache.anno.support;
5

6
import com.alicp.jetcache.CacheConfigException;
7
import com.alicp.jetcache.anno.SerialPolicy;
8
import com.alicp.jetcache.support.JavaValueDecoder;
9
import com.alicp.jetcache.support.JavaValueEncoder;
10
import com.alicp.jetcache.support.Kryo5ValueDecoder;
11
import com.alicp.jetcache.support.Kryo5ValueEncoder;
12
import com.alicp.jetcache.support.KryoValueDecoder;
13
import com.alicp.jetcache.support.KryoValueEncoder;
14

15
import java.net.URI;
16
import java.util.HashMap;
17
import java.util.Map;
18
import java.util.function.Function;
19

20
/**
21
 * @author huangli
22
 */
23
public class DefaultEncoderParser implements EncoderParser {
1✔
24
    protected static Map<String, String> parseQueryParameters(String query) {
25
        Map<String, String> m = new HashMap<>();
1✔
26
        if (query != null) {
1✔
27
            String[] pairs = query.split("&");
1✔
28
            for (String pair : pairs) {
1✔
29
                int idx = pair.indexOf("=");
1✔
30
                String key = idx > 0 ? pair.substring(0, idx) : pair;
1✔
31
                String value = idx > 0 && pair.length() > idx + 1 ? pair.substring(idx + 1) : null;
1✔
32
                if (key != null && value != null) {
1✔
33
                    m.put(key, value);
1✔
34
                }
35
            }
36
        }
37
        return m;
1✔
38
    }
39

40
    JavaValueDecoder javaValueDecoder(boolean useIdentityNumber) {
41
        return new JavaValueDecoder(useIdentityNumber);
1✔
42
    }
43

44
    @Override
45
    public Function<Object, byte[]> parseEncoder(String valueEncoder) {
46
        if (valueEncoder == null) {
1✔
47
            throw new CacheConfigException("no serialPolicy");
1✔
48
        }
49
        valueEncoder = valueEncoder.trim();
1✔
50
        URI uri = URI.create(valueEncoder);
1✔
51
        valueEncoder = uri.getPath();
1✔
52
        boolean useIdentityNumber = isUseIdentityNumber(uri);
1✔
53
        if (SerialPolicy.KRYO.equalsIgnoreCase(valueEncoder)) {
1✔
54
            return new KryoValueEncoder(useIdentityNumber, KryoValueEncoder.DEFAULT_POOL);
1✔
55
        } else if (SerialPolicy.JAVA.equalsIgnoreCase(valueEncoder)) {
1✔
56
            return new JavaValueEncoder(useIdentityNumber);
1✔
57
        } else if (SerialPolicy.KRYO5.equalsIgnoreCase(valueEncoder)) {
1✔
58
            return new Kryo5ValueEncoder(useIdentityNumber, Kryo5ValueEncoder.DEFAULT_POOL);
×
59
        }/* else if (SerialPolicy.FASTJSON2.equalsIgnoreCase(valueEncoder)) {
60
            return new Fastjson2ValueEncoder(useIdentityNumber);
61
        } else if (SerialPolicy.JACKSON3.equalsIgnoreCase(valueEncoder)) {
62
            return new Jackson3ValueEncoder(useIdentityNumber);
63
        }*/ else {
64
            throw new CacheConfigException("not supported:" + valueEncoder);
1✔
65
        }
66
    }
67

68
    private boolean isUseIdentityNumber(URI uri) {
69
        Map<String, String> params = parseQueryParameters(uri.getQuery());
1✔
70
        boolean useIdentityNumber = true;
1✔
71
        if ("false".equalsIgnoreCase(params.get("useIdentityNumber"))) {
1✔
72
            useIdentityNumber = false;
1✔
73
        }
74
        return useIdentityNumber;
1✔
75
    }
76

77
    @Override
78
    public Function<byte[], Object> parseDecoder(String valueDecoder) {
79
        if (valueDecoder == null) {
1✔
80
            throw new CacheConfigException("no serialPolicy");
1✔
81
        }
82
        valueDecoder = valueDecoder.trim();
1✔
83
        URI uri = URI.create(valueDecoder);
1✔
84
        valueDecoder = uri.getPath();
1✔
85
        boolean useIdentityNumber = isUseIdentityNumber(uri);
1✔
86
        if (SerialPolicy.KRYO.equalsIgnoreCase(valueDecoder)) {
1✔
87
            return new KryoValueDecoder(useIdentityNumber, KryoValueEncoder.DEFAULT_POOL);
1✔
88
        } else if (SerialPolicy.JAVA.equalsIgnoreCase(valueDecoder)) {
1✔
89
            return javaValueDecoder(useIdentityNumber);
1✔
90
        } else if (SerialPolicy.KRYO5.equalsIgnoreCase(valueDecoder)) {
1✔
UNCOV
91
            return new Kryo5ValueDecoder(useIdentityNumber, Kryo5ValueEncoder.DEFAULT_POOL);
×
92
        }/* else if (SerialPolicy.FASTJSON2.equalsIgnoreCase(valueDecoder)) {
93
            return new Fastjson2ValueDecoder(useIdentityNumber);
94
        } else if (SerialPolicy.JACKSON3.equalsIgnoreCase(valueDecoder)) {
95
            return new Jackson3ValueDecoder(useIdentityNumber);
96
        }*/ else {
97
            throw new CacheConfigException("not supported:" + valueDecoder);
1✔
98
        }
99
    }
100
}
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

© 2026 Coveralls, Inc