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

alibaba / jetcache / #447

23 May 2026 01:52AM UTC coverage: 88.921% (-0.4%) from 89.31%
#447

push

areyouok
feat: allow customize DecodeFilter for kryo decoder

54 of 59 new or added lines in 8 files covered. (91.53%)

24 existing lines in 8 files now uncovered.

4976 of 5596 relevant lines covered (88.92%)

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✔
NEW
58
            return new Kryo5ValueEncoder(useIdentityNumber, Kryo5ValueEncoder.DEFAULT_POOL);
×
59
        }/* else if (SerialPolicy.FASTJSON2.equalsIgnoreCase(valueEncoder)) {
60
            return new Fastjson2ValueEncoder(useIdentityNumber);
61
        }*/ else {
62
            throw new CacheConfigException("not supported:" + valueEncoder);
1✔
63
        }
64
    }
65

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

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