• 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

51.52
/exist-core/src/main/java/org/exist/dom/persistent/TextImpl.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.Namespaces;
52
import org.exist.numbering.NodeId;
53
import org.exist.storage.Signatures;
54
import org.exist.util.ByteArrayPool;
55
import org.exist.util.ByteConversion;
56
import org.exist.util.UTF8;
57
import org.exist.util.pool.NodePool;
58
import org.exist.xquery.Expression;
59
import org.w3c.dom.DOMException;
60
import org.w3c.dom.Node;
61
import org.w3c.dom.Text;
62
import org.w3c.dom.UserDataHandler;
63

64
/**
65
 * TextImpl.java
66
 *
67
 * @author wolf
68
 */
69
public class TextImpl extends AbstractCharacterData<TextImpl> implements Text {
70

71
    public TextImpl() {
72
        this((Expression) null);
×
73
    }
×
74

75
    public TextImpl(final Expression expression) {
76
        super(expression, Node.TEXT_NODE);
1✔
77
    }
1✔
78

79
    public TextImpl(final String data) {
80
        this((Expression) null, data);
1✔
81
    }
1✔
82

83
    public TextImpl(final Expression expression, final String data) {
84
        super(expression, Node.TEXT_NODE, data);
1✔
85
    }
1✔
86

87
    public TextImpl(final NodeId nodeId, final String data) {
88
        this(null, nodeId, data);
×
89
    }
×
90

91
    public TextImpl(final Expression expression, final NodeId nodeId, final String data) {
92
        super(expression, Node.TEXT_NODE, nodeId, data);
1✔
93
    }
1✔
94

95
    /**
96
     * Serializes a (persistent DOM) Text to a byte array
97
     *
98
     * data = signature nodeIdUnitsLength nodeId cdata
99
     *
100
     * signature = [byte] 0x0
101
     *
102
     * nodeIdUnitsLength = [short] (2 bytes) The number of units of the text's NodeId
103
     * nodeId = See {@link org.exist.numbering.DLNBase#serialize(byte[], int)}
104
     *
105
     * cdata = eUtf8
106
     *
107
     * eUtf8 = See {@link org.exist.util.UTF8#encode(java.lang.String, byte[], int)}
108
     *
109
     * @return the returned byte array after use must be returned to the ByteArrayPool
110
     *     by calling {@link ByteArrayPool#releaseByteArray(byte[])}
111
     */
112
    @Override
113
    public byte[] serialize() {
114
        final int nodeIdLen = nodeId.size();
1✔
115
        final byte[] data = ByteArrayPool.getByteArray(LENGTH_SIGNATURE_LENGTH + nodeIdLen +
1✔
116
            NodeId.LENGTH_NODE_ID_UNITS + cdata.UTF8Size());
1✔
117
        int pos = 0;
1✔
118
        data[pos] = (byte) (Signatures.Char << 0x5);
1✔
119
        pos += LENGTH_SIGNATURE_LENGTH;
1✔
120
        ByteConversion.shortToByte((short) nodeId.units(), data, pos);
1✔
121
        pos += NodeId.LENGTH_NODE_ID_UNITS;
1✔
122
        nodeId.serialize(data, pos);
1✔
123
        pos += nodeIdLen;
1✔
124
        cdata.UTF8Encode(data, pos);
1✔
125
        return data;
1✔
126
    }
127

128
    public static StoredNode deserialize(final byte[] data, final int start, final int len,
129
            final DocumentImpl doc, final boolean pooled) {
130
        final TextImpl text;
131
        if(pooled) {
1!
132
            text = (TextImpl) NodePool.getInstance().borrowNode(Node.TEXT_NODE);
×
133
        } else {
×
134
            text = new TextImpl(doc.getExpression());
1✔
135
        }
136
        int pos = start;
1✔
137
        pos += LENGTH_SIGNATURE_LENGTH;
1✔
138
        final int dlnLen = ByteConversion.byteToShort(data, pos);
1✔
139
        pos += NodeId.LENGTH_NODE_ID_UNITS;
1✔
140
        final NodeId dln = doc.getBrokerPool().getNodeFactory().createFromData(dlnLen, data, pos);
1✔
141
        text.setNodeId(dln);
1✔
142
        final int nodeIdLen = dln.size();
1✔
143
        pos += nodeIdLen;
1✔
144
        text.cdata = UTF8.decode(data, pos, len - (LENGTH_SIGNATURE_LENGTH +
1✔
145
            nodeIdLen + NodeId.LENGTH_NODE_ID_UNITS));
1✔
146
        return text;
1✔
147
    }
148

149
    @Override
150
    public String toString(final boolean top) {
151
        if(top) {
×
152
            return "<exist:text " + "xmlns:exist=\"" + Namespaces.EXIST_NS + "\" " + "exist:id=\"" +
×
153
                    getNodeId() + "\" exist:source=\"" + getOwnerDocument().getFileURI() + "\">" +
×
154
                    getData() + "</exist:text>";
×
155
        } else {
156
            return toString();
×
157
        }
158
    }
159

160
    @Override
161
    public String getWholeText() {
162
        return null;
×
163
    }
164

165
    @Override
166
    public boolean isElementContentWhitespace() {
167
        return false;
×
168
    }
169

170
    @Override
171
    public Text replaceWholeText(final String content) throws DOMException {
172
        return null;
×
173
    }
174

175
    @Override
176
    public Text splitText(final int offset) throws DOMException {
177
        return null;
×
178
    }
179

180
    @Override
181
    public String getBaseURI() {
182
        final Node parent = getParentNode();
×
183
        if(parent != null) {
×
184
            return parent.getBaseURI();
×
185
        } else {
186
            return null;
×
187
        }
188
    }
189

190
    @Override
191
    public short compareDocumentPosition(final Node other) throws DOMException {
192
        return 0;
×
193
    }
194

195
    @Override
196
    public String lookupPrefix(final String namespaceURI) {
197
        return null;
×
198
    }
199

200
    @Override
201
    public boolean isDefaultNamespace(final String namespaceURI) {
202
        return false;
×
203
    }
204

205
    @Override
206
    public String lookupNamespaceURI(final String prefix) {
207
        return null;
×
208
    }
209

210
    @Override
211
    public boolean isEqualNode(final Node arg) {
212
        return false;
×
213
    }
214

215
    @Override
216
    public Object getFeature(final String feature, final String version) {
217
        return null;
×
218
    }
219

220
    @Override
221
    public Object setUserData(final String key, final Object data, final UserDataHandler handler) {
222
        return null;
×
223
    }
224

225
    @Override
226
    public Object getUserData(final String key) {
227
        return null;
×
228
    }
229
}
230

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