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

evolvedbinary / elemental / 982

29 Apr 2025 08:34PM UTC coverage: 56.409% (+0.007%) from 56.402%
982

push

circleci

adamretter
[feature] Improve README.md badges

28451 of 55847 branches covered (50.94%)

Branch coverage included in aggregate %.

77468 of 131924 relevant lines covered (58.72%)

0.59 hits per line

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

72.73
/exist-core/src/main/java/org/exist/dom/persistent/CommentImpl.java
1
/*
2
 * Elemental
3
 * Copyright (C) 2024, Evolved Binary Ltd
4
 *
5
 * admin@evolvedbinary.com
6
 * https://www.evolvedbinary.com | https://www.elemental.xyz
7
 *
8
 * Use of this software is governed by the Business Source License 1.1
9
 * included in the LICENSE file and at www.mariadb.com/bsl11.
10
 *
11
 * Change Date: 2028-04-27
12
 *
13
 * On the date above, in accordance with the Business Source License, use
14
 * of this software will be governed by the Apache License, Version 2.0.
15
 *
16
 * Additional Use Grant: Production use of the Licensed Work for a permitted
17
 * purpose. A Permitted Purpose is any purpose other than a Competing Use.
18
 * A Competing Use means making the Software available to others in a commercial
19
 * product or service that: substitutes for the Software; substitutes for any
20
 * other product or service we offer using the Software that exists as of the
21
 * date we make the Software available; or offers the same or substantially
22
 * similar functionality as the Software.
23
 *
24
 * NOTE: Parts of this file contain code from 'The eXist-db Authors'.
25
 *       The original license header is included below.
26
 *
27
 * =====================================================================
28
 *
29
 * eXist-db Open Source Native XML Database
30
 * Copyright (C) 2001 The eXist-db Authors
31
 *
32
 * info@exist-db.org
33
 * http://www.exist-db.org
34
 *
35
 * This library is free software; you can redistribute it and/or
36
 * modify it under the terms of the GNU Lesser General Public
37
 * License as published by the Free Software Foundation; either
38
 * version 2.1 of the License, or (at your option) any later version.
39
 *
40
 * This library is distributed in the hope that it will be useful,
41
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
42
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43
 * Lesser General Public License for more details.
44
 *
45
 * You should have received a copy of the GNU Lesser General Public
46
 * License along with this library; if not, write to the Free Software
47
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
48
 */
49
package org.exist.dom.persistent;
50

51
import org.exist.numbering.NodeId;
52
import org.exist.storage.Signatures;
53
import org.exist.util.ByteConversion;
54
import org.exist.util.pool.NodePool;
55
import org.exist.xquery.Expression;
56
import org.w3c.dom.Comment;
57
import org.w3c.dom.Node;
58

59
import static java.nio.charset.StandardCharsets.UTF_8;
60

61
public class CommentImpl extends AbstractCharacterData<CommentImpl> implements Comment {
62

63
    public CommentImpl() {
64
        this((Expression) null);
×
65
    }
×
66

67
    public CommentImpl(final Expression expression) {
68
        super(expression, Node.COMMENT_NODE);
1✔
69
    }
1✔
70

71
    public CommentImpl(final String data) {
72
        this(null, data);
×
73
    }
×
74

75
    public CommentImpl(final Expression expression, final String data) {
76
        super(expression, Node.COMMENT_NODE, data);
×
77
    }
×
78

79
    public CommentImpl(final char[] data, final int start, final int howmany) {
80
        this(null, data, start, howmany);
×
81
    }
×
82

83
    public CommentImpl(final Expression expression, final char[] data, final int start, final int howmany) {
84
        super(expression, Node.COMMENT_NODE, data, start, howmany);
1✔
85
    }
1✔
86

87
    @Override
88
    public String toString() {
89
        return "<!-- " + cdata.toString() + " -->";
×
90
    }
91

92
    /**
93
     * Serializes a (persistent DOM) Comment to a byte array
94
     *
95
     * data = signature nodeIdUnitsLength nodeId cdata
96
     *
97
     * signature = [byte] 0x60
98
     *
99
     * nodeIdUnitsLength = [short] (2 bytes) The number of units of the comment's NodeId
100
     * nodeId = {@link org.exist.numbering.DLNBase#serialize(byte[], int)}
101
     *
102
     * cdata = jUtf8
103
     *
104
     * jUtf8 = {@link java.io.DataOutputStream#writeUTF(java.lang.String)}
105
     */
106
    @Override
107
    public byte[] serialize() {
108
        final String s = cdata.toString();
1✔
109
        final byte[] cd = s.getBytes(UTF_8);
1✔
110

111
        final int nodeIdLen = nodeId.size();
1✔
112
        final byte[] data = new byte[StoredNode.LENGTH_SIGNATURE_LENGTH + NodeId.LENGTH_NODE_ID_UNITS +
1✔
113
            +nodeIdLen + cd.length];
1✔
114
        int pos = 0;
1✔
115
        data[pos] = (byte) (Signatures.Comm << 0x5);
1✔
116
        pos += StoredNode.LENGTH_SIGNATURE_LENGTH;
1✔
117
        ByteConversion.shortToByte((short) nodeId.units(), data, pos);
1✔
118
        pos += NodeId.LENGTH_NODE_ID_UNITS;
1✔
119
        nodeId.serialize(data, pos);
1✔
120
        pos += nodeIdLen;
1✔
121
        System.arraycopy(cd, 0, data, pos, cd.length);
1✔
122
        return data;
1✔
123
    }
124

125
    public static StoredNode deserialize(final byte[] data, final int start, final int len,
126
                                         final DocumentImpl doc, final boolean pooled) {
127
        int pos = start;
1✔
128
        pos += LENGTH_SIGNATURE_LENGTH;
1✔
129
        final int dlnLen = ByteConversion.byteToShort(data, pos);
1✔
130
        pos += NodeId.LENGTH_NODE_ID_UNITS;
1✔
131
        final NodeId dln = doc.getBrokerPool().getNodeFactory().createFromData(dlnLen, data, pos);
1✔
132
        int nodeIdLen = dln.size();
1✔
133
        pos += nodeIdLen;
1✔
134
        final String cdata = new String(data, pos, len - (pos - start), UTF_8);
1✔
135
        //OK : we have the necessary material to build the comment
136
        final CommentImpl comment;
137
        if(pooled) {
1!
138
            comment = (CommentImpl) NodePool.getInstance().borrowNode(Node.COMMENT_NODE);
×
139
        } else {
×
140
            comment = new CommentImpl((Expression) null);
1✔
141
        }
142
        comment.setNodeId(dln);
1✔
143
        comment.appendData(cdata);
1✔
144
        return comment;
1✔
145
    }
146
}
147

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