• 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

36.84
hessian2-codec/src/main/java/io/github/wuwen5/hessian/io/ArrayDeserializer.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 java.io.IOException;
52
import java.lang.reflect.Array;
53
import java.util.ArrayList;
54
import java.util.List;
55

56
/**
57
 * Deserializing a Java array
58
 */
59
public class ArrayDeserializer extends AbstractListDeserializer {
60
    private final Class<?> componentType;
61
    private Class<?> type;
62

63
    public ArrayDeserializer(Class<?> componentType) {
2✔
64
        this.componentType = componentType;
3✔
65

66
        if (this.componentType != null) {
3!
67
            try {
68
                type = Array.newInstance(this.componentType, 0).getClass();
7✔
69
            } catch (Exception ignored) {
×
70
            }
1✔
71
        }
72

73
        if (type == null) {
3!
74
            type = Object[].class;
×
75
        }
76
    }
1✔
77

78
    @Override
79
    public Class<?> getType() {
80
        return type;
3✔
81
    }
82

83
    /**
84
     * Reads the array.
85
     */
86
    @Override
87
    public Object readList(AbstractHessianDecoder in, int length) throws IOException {
88
        if (length >= 0) {
×
89
            Object[] data = createArray(length);
×
90

91
            in.addRef(data);
×
92

93
            for (int i = 0; i < data.length; i++) {
×
94
                data[i] = componentType == null ? in.readObject() : in.readObject(componentType);
×
95
            }
96

97
            in.readListEnd();
×
98

99
            return data;
×
100
        } else {
101
            List<Object> list = new ArrayList<>();
×
102

103
            in.addRef(list);
×
104

105
            while (!in.isEnd()) {
×
106
                list.add(componentType == null ? in.readObject() : in.readObject(componentType));
×
107
            }
108

109
            in.readListEnd();
×
110

111
            Object[] data = createArray(list.size());
×
112
            for (int i = 0; i < data.length; i++) {
×
113
                data[i] = list.get(i);
×
114
            }
115

116
            return data;
×
117
        }
118
    }
119

120
    /**
121
     * Reads the array.
122
     */
123
    @Override
124
    public Object readLengthList(AbstractHessianDecoder in, int length) throws IOException {
125
        Object[] data = createArray(length);
4✔
126

127
        in.addRef(data);
4✔
128

129
        for (int i = 0; i < data.length; i++) {
8✔
130
            data[i] = componentType == null ? in.readObject() : in.readObject(componentType);
10!
131
        }
132

133
        return data;
2✔
134
    }
135

136
    protected Object[] createArray(int length) {
137
        if (componentType != null) {
3!
138
            return (Object[]) Array.newInstance(componentType, length);
6✔
139
        } else {
140
            return new Object[length];
×
141
        }
142
    }
143

144
    @Override
145
    public String toString() {
146
        return "ArrayDeserializer[" + componentType + "]";
×
147
    }
148
}
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