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

wuwen5 / hessian / 17882005206

20 Sep 2025 01:06PM UTC coverage: 70.892% (+1.5%) from 69.377%
17882005206

push

github

web-flow
refactor: code clean (#50)

* refactor: code clean

* refactor: code clean,remove hessian1 code

* refactor: fix HessianDebugState

1780 of 2691 branches covered (66.15%)

Branch coverage included in aggregate %.

4226 of 5781 relevant lines covered (73.1%)

3.17 hits per line

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

46.67
hessian2-codec/src/main/java/io/github/wuwen5/hessian/io/SqlDateDeserializer.java
1
/*
2
 * Copyright (c) 2001-2004 Caucho Technology, Inc.  All rights reserved.
3
 *
4
 * The Apache Software License, Version 1.1
5
 *
6
 * Redistribution and use in source and binary forms, with or without
7
 * modification, are permitted provided that the following conditions
8
 * are met:
9
 *
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 *
13
 * 2. Redistributions in binary form must reproduce the above copyright
14
 *    notice, this list of conditions and the following disclaimer in
15
 *    the documentation and/or other materials provided with the
16
 *    distribution.
17
 *
18
 * 3. The end-user documentation included with the redistribution, if
19
 *    any, must include the following acknowlegement:
20
 *       "This product includes software developed by the
21
 *        Caucho Technology (http://www.caucho.com/)."
22
 *    Alternately, this acknowlegement may appear in the software itself,
23
 *    if and wherever such third-party acknowlegements normally appear.
24
 *
25
 * 4. The names "Hessian", "Resin", and "Caucho" must not be used to
26
 *    endorse or promote products derived from this software without prior
27
 *    written permission. For written permission, please contact
28
 *    info@caucho.com.
29
 *
30
 * 5. Products derived from this software may not be called "Resin"
31
 *    nor may "Resin" appear in their names without prior written
32
 *    permission of Caucho Technology.
33
 *
34
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
35
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
36
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
37
 * DISCLAIMED.  IN NO EVENT SHALL CAUCHO TECHNOLOGY OR ITS CONTRIBUTORS
38
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
39
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
40
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
41
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
42
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
43
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
44
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45
 *
46
 * @author Scott Ferguson
47
 */
48

49
package io.github.wuwen5.hessian.io;
50

51
import io.github.wuwen5.hessian.HessianException;
52
import java.io.IOException;
53
import java.lang.reflect.Constructor;
54

55
/**
56
 * Deserializing a string valued object
57
 */
58
public class SqlDateDeserializer extends BaseDeserializer {
59
    private final Class<?> cl;
60
    private final Constructor<?> constructor;
61

62
    public SqlDateDeserializer(Class<?> cl) {
2✔
63
        try {
64
            this.cl = cl;
3✔
65
            constructor = cl.getConstructor(long.class);
10✔
66
        } catch (NoSuchMethodException e) {
×
67
            throw new HessianException(e);
×
68
        }
1✔
69
    }
1✔
70

71
    @Override
72
    public Class<?> getType() {
73
        return cl;
3✔
74
    }
75

76
    @Override
77
    public Object readMap(AbstractHessianDecoder in) throws IOException {
78
        int ref = in.addRef(null);
×
79

80
        long initValue = Long.MIN_VALUE;
×
81

82
        while (!in.isEnd()) {
×
83
            String key = in.readString();
×
84

85
            if ("value".equals(key)) {
×
86
                initValue = in.readUTCDate();
×
87
            } else {
88
                in.readString();
×
89
            }
90
        }
×
91

92
        in.readMapEnd();
×
93

94
        Object value = create(initValue);
×
95

96
        in.setRef(ref, value);
×
97

98
        return value;
×
99
    }
100

101
    @Override
102
    public Object readObject(AbstractHessianDecoder in, Object[] fields) throws IOException {
103
        String[] fieldNames = (String[]) fields;
3✔
104

105
        int ref = in.addRef(null);
4✔
106

107
        long initValue = Long.MIN_VALUE;
2✔
108

109
        for (String key : fieldNames) {
16✔
110
            if ("value".equals(key)) {
4!
111
                initValue = in.readUTCDate();
4✔
112
            } else {
113
                in.readObject();
×
114
            }
115
        }
116

117
        Object value = create(initValue);
4✔
118

119
        in.setRef(ref, value);
4✔
120

121
        return value;
2✔
122
    }
123

124
    private Object create(long initValue) throws IOException {
125
        if (initValue == Long.MIN_VALUE) {
4!
126
            throw new IOException(cl.getName() + " expects name.");
×
127
        }
128

129
        try {
130
            return constructor.newInstance(initValue);
11✔
131
        } catch (Exception e) {
×
132
            throw new IOExceptionWrapper(e);
×
133
        }
134
    }
135
}
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