Skip to content

Package: LongEncodingAlgorithm

LongEncodingAlgorithm

nameinstructionbranchcomplexitylinemethod
LongEncodingAlgorithm()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
convertFromCharacters(char[], int, int)
M: 22 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
convertToCharacters(Object, StringBuffer)
M: 18 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
convertToCharactersFromLongArray(long[], StringBuffer)
M: 27 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
decodeFromBytes(byte[], int, int)
M: 0 C: 14
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
decodeFromBytesToLongArray(long[], int, byte[], int, int)
M: 0 C: 93
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
decodeFromInputStream(InputStream)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
decodeFromInputStreamToIntArray(InputStream)
M: 121 C: 0
0%
M: 8 C: 0
0%
M: 5 C: 0
0%
M: 16 C: 0
0%
M: 1 C: 0
0%
encodeToBytes(Object, int, int, byte[], int)
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
encodeToBytesFromLongArray(long[], int, int, byte[], int)
M: 0 C: 102
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
encodeToOutputStream(Object, OutputStream)
M: 18 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
encodeToOutputStreamFromLongArray(long[], OutputStream)
M: 75 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
generateArrayFromList(List)
M: 22 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
getOctetLengthFromPrimitiveLength(int)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPrimtiveLengthFromOctetLength(int)
M: 14 C: 8
36%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 2 C: 2
50%
M: 0 C: 1
100%

Coverage

1: /*
2: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3: *
4: * Copyright (c) 2004-2018 Oracle and/or its affiliates. All rights reserved.
5: *
6: * Oracle licenses this file to You under the Apache License, Version 2.0
7: * (the "License"); you may not use this file except in compliance with
8: * the License. You may obtain a copy of the License at
9: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18:
19: package com.sun.xml.fastinfoset.algorithm;
20:
21: import java.io.EOFException;
22: import java.io.IOException;
23: import java.io.InputStream;
24: import java.io.OutputStream;
25: import java.nio.CharBuffer;
26: import java.util.ArrayList;
27: import java.util.List;
28: import org.jvnet.fastinfoset.EncodingAlgorithmException;
29: import com.sun.xml.fastinfoset.CommonResourceBundle;
30:
31:
32: public class LongEncodingAlgorithm extends IntegerEncodingAlgorithm {
33:
34: public int getPrimtiveLengthFromOctetLength(int octetLength) throws EncodingAlgorithmException {
35:• if (octetLength % LONG_SIZE != 0) {
36: throw new EncodingAlgorithmException(CommonResourceBundle.getInstance().
37: getString("message.lengthNotMultipleOfLong", new Object[]{Integer.valueOf(LONG_SIZE)}));
38: }
39:
40: return octetLength / LONG_SIZE;
41: }
42:
43: public int getOctetLengthFromPrimitiveLength(int primitiveLength) {
44: return primitiveLength * LONG_SIZE;
45: }
46:
47: public final Object decodeFromBytes(byte[] b, int start, int length) throws EncodingAlgorithmException {
48: long[] data = new long[getPrimtiveLengthFromOctetLength(length)];
49: decodeFromBytesToLongArray(data, 0, b, start, length);
50:
51: return data;
52: }
53:
54: public final Object decodeFromInputStream(InputStream s) throws IOException {
55: return decodeFromInputStreamToIntArray(s);
56: }
57:
58:
59: public void encodeToOutputStream(Object data, OutputStream s) throws IOException {
60:• if (!(data instanceof long[])) {
61: throw new IllegalArgumentException(CommonResourceBundle.getInstance().getString("message.dataNotLongArray"));
62: }
63:
64: final long[] ldata = (long[])data;
65:
66: encodeToOutputStreamFromLongArray(ldata, s);
67: }
68:
69:
70: public Object convertFromCharacters(char[] ch, int start, int length) {
71: final CharBuffer cb = CharBuffer.wrap(ch, start, length);
72: final List longList = new ArrayList();
73:
74: matchWhiteSpaceDelimnatedWords(cb,
75: new WordListener() {
76: public void word(int start, int end) {
77: String lStringValue = cb.subSequence(start, end).toString();
78: longList.add(Long.valueOf(lStringValue));
79: }
80: }
81: );
82:
83: return generateArrayFromList(longList);
84: }
85:
86: public void convertToCharacters(Object data, StringBuffer s) {
87:• if (!(data instanceof long[])) {
88: throw new IllegalArgumentException(CommonResourceBundle.getInstance().getString("message.dataNotLongArray"));
89: }
90:
91: final long[] ldata = (long[])data;
92:
93: convertToCharactersFromLongArray(ldata, s);
94: }
95:
96:
97: public final void decodeFromBytesToLongArray(long[] ldata, int istart, byte[] b, int start, int length) {
98: final int size = length / LONG_SIZE;
99:• for (int i = 0; i < size; i++) {
100: ldata[istart++] =
101: ((long)(b[start++] & 0xFF) << 56) |
102: ((long)(b[start++] & 0xFF) << 48) |
103: ((long)(b[start++] & 0xFF) << 40) |
104: ((long)(b[start++] & 0xFF) << 32) |
105: ((long)(b[start++] & 0xFF) << 24) |
106: ((long)(b[start++] & 0xFF) << 16) |
107: ((long)(b[start++] & 0xFF) << 8) |
108: (long)(b[start++] & 0xFF);
109: }
110: }
111:
112: public final long[] decodeFromInputStreamToIntArray(InputStream s) throws IOException {
113: final List longList = new ArrayList();
114: final byte[] b = new byte[LONG_SIZE];
115:
116: while (true) {
117: int n = s.read(b);
118:• if (n != LONG_SIZE) {
119:• if (n == -1) {
120: break;
121: }
122:
123:• while(n != LONG_SIZE) {
124: final int m = s.read(b, n, LONG_SIZE - n);
125:• if (m == -1) {
126: throw new EOFException();
127: }
128: n += m;
129: }
130: }
131:
132: final long l =
133: (((long) b[0] << 56) +
134: ((long) (b[1] & 0xFF) << 48) +
135: ((long) (b[2] & 0xFF) << 40) +
136: ((long) (b[3] & 0xFF) << 32) +
137: ((long) (b[4] & 0xFF) << 24) +
138: ((b[5] & 0xFF) << 16) +
139: ((b[6] & 0xFF) << 8) +
140: ((b[7] & 0xFF) << 0));
141:
142: longList.add(Long.valueOf(l));
143: }
144:
145: return generateArrayFromList(longList);
146: }
147:
148:
149: public final void encodeToOutputStreamFromLongArray(long[] ldata, OutputStream s) throws IOException {
150:• for (int i = 0; i < ldata.length; i++) {
151: final long bits = ldata[i];
152: s.write((int)((bits >>> 56) & 0xFF));
153: s.write((int)((bits >>> 48) & 0xFF));
154: s.write((int)((bits >>> 40) & 0xFF));
155: s.write((int)((bits >>> 32) & 0xFF));
156: s.write((int)((bits >>> 24) & 0xFF));
157: s.write((int)((bits >>> 16) & 0xFF));
158: s.write((int)((bits >>> 8) & 0xFF));
159: s.write((int)(bits & 0xFF));
160: }
161: }
162:
163: public final void encodeToBytes(Object array, int astart, int alength, byte[] b, int start) {
164: encodeToBytesFromLongArray((long[])array, astart, alength, b, start);
165: }
166:
167: public final void encodeToBytesFromLongArray(long[] ldata, int lstart, int llength, byte[] b, int start) {
168: final int lend = lstart + llength;
169:• for (int i = lstart; i < lend; i++) {
170: final long bits = ldata[i];
171: b[start++] = (byte)((bits >>> 56) & 0xFF);
172: b[start++] = (byte)((bits >>> 48) & 0xFF);
173: b[start++] = (byte)((bits >>> 40) & 0xFF);
174: b[start++] = (byte)((bits >>> 32) & 0xFF);
175: b[start++] = (byte)((bits >>> 24) & 0xFF);
176: b[start++] = (byte)((bits >>> 16) & 0xFF);
177: b[start++] = (byte)((bits >>> 8) & 0xFF);
178: b[start++] = (byte)(bits & 0xFF);
179: }
180: }
181:
182:
183: public final void convertToCharactersFromLongArray(long[] ldata, StringBuffer s) {
184: final int end = ldata.length - 1;
185:• for (int i = 0; i <= end; i++) {
186: s.append(Long.toString(ldata[i]));
187:• if (i != end) {
188: s.append(' ');
189: }
190: }
191: }
192:
193:
194: public final long[] generateArrayFromList(List array) {
195: long[] ldata = new long[array.size()];
196:• for (int i = 0; i < ldata.length; i++) {
197: ldata[i] = ((Long)array.get(i)).longValue();
198: }
199:
200: return ldata;
201: }
202: }