diff options
Diffstat (limited to 'src/main/java/com/amazon/carbonado/raw')
5 files changed, 71 insertions, 40 deletions
diff --git a/src/main/java/com/amazon/carbonado/raw/DataDecoder.java b/src/main/java/com/amazon/carbonado/raw/DataDecoder.java index 34fa6e3..635b52e 100644 --- a/src/main/java/com/amazon/carbonado/raw/DataDecoder.java +++ b/src/main/java/com/amazon/carbonado/raw/DataDecoder.java @@ -24,17 +24,16 @@ import java.io.IOException; import com.amazon.carbonado.CorruptEncodingException;
-import static com.amazon.carbonado.raw.DataEncoder.*;
+import static com.amazon.carbonado.raw.EncodingConstants.*;
/**
* A very low-level class that decodes key components encoded by methods of
* {@link DataEncoder}.
*
* @author Brian S O'Neill
+ * @see KeyDecoder
*/
public class DataDecoder {
- static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
-
/**
* Decodes a signed integer from exactly 4 bytes.
*
diff --git a/src/main/java/com/amazon/carbonado/raw/DataEncoder.java b/src/main/java/com/amazon/carbonado/raw/DataEncoder.java index 6eebc93..e8383b9 100644 --- a/src/main/java/com/amazon/carbonado/raw/DataEncoder.java +++ b/src/main/java/com/amazon/carbonado/raw/DataEncoder.java @@ -21,6 +21,8 @@ package com.amazon.carbonado.raw; import java.io.IOException;
import java.io.OutputStream;
+import static com.amazon.carbonado.raw.EncodingConstants.*;
+
/**
* A very low-level class that supports encoding of primitive data. For
* encoding data into keys, see {@link KeyEncoder}.
@@ -29,21 +31,9 @@ import java.io.OutputStream; * @see DataDecoder
*/
public class DataEncoder {
- // Note: Most of these methods are inherited by KeyEncoder, which is why
+ // Note: Most of these methods are also used by KeyEncoder, which is why
// they are encoded for supporting proper ordering.
- /** Byte to use for null, low ordering */
- static final byte NULL_BYTE_LOW = 0;
-
- /** Byte to use for null, high ordering */
- static final byte NULL_BYTE_HIGH = (byte)~NULL_BYTE_LOW;
-
- /** Byte to use for not-null, low ordering */
- static final byte NOT_NULL_BYTE_HIGH = (byte)128;
-
- /** Byte to use for not-null, high ordering */
- static final byte NOT_NULL_BYTE_LOW = (byte)~NOT_NULL_BYTE_HIGH;
-
/**
* Encodes the given signed integer into exactly 4 bytes.
*
diff --git a/src/main/java/com/amazon/carbonado/raw/EncodingConstants.java b/src/main/java/com/amazon/carbonado/raw/EncodingConstants.java new file mode 100644 index 0000000..997e491 --- /dev/null +++ b/src/main/java/com/amazon/carbonado/raw/EncodingConstants.java @@ -0,0 +1,43 @@ +/*
+ * Copyright 2008 Amazon Technologies, Inc. or its affiliates.
+ * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
+ * of Amazon Technologies, Inc. or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.amazon.carbonado.raw;
+
+/**
+ *
+ *
+ * @author Brian S O'Neill
+ */
+class EncodingConstants {
+ static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
+
+ /** Byte to use for null, low ordering */
+ static final byte NULL_BYTE_LOW = 0;
+
+ /** Byte to use for null, high ordering */
+ static final byte NULL_BYTE_HIGH = (byte)~NULL_BYTE_LOW;
+
+ /** Byte to use for not-null, low ordering */
+ static final byte NOT_NULL_BYTE_HIGH = (byte)128;
+
+ /** Byte to use for not-null, high ordering */
+ static final byte NOT_NULL_BYTE_LOW = (byte)~NOT_NULL_BYTE_HIGH;
+
+ /** Byte to terminate variable data encoded for ascending order */
+ static final byte TERMINATOR = (byte)1;
+}
diff --git a/src/main/java/com/amazon/carbonado/raw/KeyDecoder.java b/src/main/java/com/amazon/carbonado/raw/KeyDecoder.java index a3254b1..4f78738 100644 --- a/src/main/java/com/amazon/carbonado/raw/KeyDecoder.java +++ b/src/main/java/com/amazon/carbonado/raw/KeyDecoder.java @@ -20,16 +20,16 @@ package com.amazon.carbonado.raw; import com.amazon.carbonado.CorruptEncodingException;
-import static com.amazon.carbonado.raw.KeyEncoder.*;
+import static com.amazon.carbonado.raw.EncodingConstants.*;
/**
* A very low-level class that decodes key components encoded by methods of
* {@link KeyEncoder}.
*
* @author Brian S O'Neill
+ * @see DataDecoder
*/
-public class KeyDecoder extends DataDecoder {
-
+public class KeyDecoder {
/**
* Decodes a signed integer from exactly 4 bytes, as encoded for descending
* order.
@@ -41,7 +41,7 @@ public class KeyDecoder extends DataDecoder { public static int decodeIntDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- return ~decodeInt(src, srcOffset);
+ return ~DataDecoder.decodeInt(src, srcOffset);
}
/**
@@ -77,7 +77,7 @@ public class KeyDecoder extends DataDecoder { public static long decodeLongDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- return ~decodeLong(src, srcOffset);
+ return ~DataDecoder.decodeLong(src, srcOffset);
}
/**
@@ -273,7 +273,7 @@ public class KeyDecoder extends DataDecoder { public static float decodeFloatDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- int bits = decodeFloatBits(src, srcOffset);
+ int bits = DataDecoder.decodeFloatBits(src, srcOffset);
if (bits >= 0) {
bits ^= 0x7fffffff;
}
@@ -290,7 +290,7 @@ public class KeyDecoder extends DataDecoder { public static Float decodeFloatObjDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- int bits = decodeFloatBits(src, srcOffset);
+ int bits = DataDecoder.decodeFloatBits(src, srcOffset);
if (bits >= 0) {
bits ^= 0x7fffffff;
}
@@ -307,7 +307,7 @@ public class KeyDecoder extends DataDecoder { public static double decodeDoubleDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- long bits = decodeDoubleBits(src, srcOffset);
+ long bits = DataDecoder.decodeDoubleBits(src, srcOffset);
if (bits >= 0) {
bits ^= 0x7fffffffffffffffL;
}
@@ -324,7 +324,7 @@ public class KeyDecoder extends DataDecoder { public static Double decodeDoubleObjDesc(byte[] src, int srcOffset)
throws CorruptEncodingException
{
- long bits = decodeDoubleBits(src, srcOffset);
+ long bits = DataDecoder.decodeDoubleBits(src, srcOffset);
if (bits >= 0) {
bits ^= 0x7fffffffffffffffL;
}
diff --git a/src/main/java/com/amazon/carbonado/raw/KeyEncoder.java b/src/main/java/com/amazon/carbonado/raw/KeyEncoder.java index 5b11586..8d374a1 100644 --- a/src/main/java/com/amazon/carbonado/raw/KeyEncoder.java +++ b/src/main/java/com/amazon/carbonado/raw/KeyEncoder.java @@ -18,6 +18,8 @@ package com.amazon.carbonado.raw;
+import static com.amazon.carbonado.raw.EncodingConstants.*;
+
/**
* A very low-level class that supports encoding of primitive data into unique,
* sortable byte array keys. If the data to encode is of a variable size, then
@@ -29,12 +31,9 @@ package com.amazon.carbonado.raw; *
* @author Brian S O'Neill
* @see KeyDecoder
+ * @see DataEncoder
*/
-public class KeyEncoder extends DataEncoder {
-
- /** Byte to terminate variable data encoded for ascending order */
- static final byte TERMINATOR = (byte)1;
-
+public class KeyEncoder {
/**
* Encodes the given signed integer into exactly 4 bytes for descending
* order.
@@ -44,7 +43,7 @@ public class KeyEncoder extends DataEncoder { * @param dstOffset offset into destination array
*/
public static void encodeDesc(int value, byte[] dst, int dstOffset) {
- encode(~value, dst, dstOffset);
+ DataEncoder.encode(~value, dst, dstOffset);
}
/**
@@ -63,7 +62,7 @@ public class KeyEncoder extends DataEncoder { return 1;
} else {
dst[dstOffset] = NOT_NULL_BYTE_LOW;
- encode(~value.intValue(), dst, dstOffset + 1);
+ DataEncoder.encode(~value.intValue(), dst, dstOffset + 1);
return 5;
}
}
@@ -76,7 +75,7 @@ public class KeyEncoder extends DataEncoder { * @param dstOffset offset into destination array
*/
public static void encodeDesc(long value, byte[] dst, int dstOffset) {
- encode(~value, dst, dstOffset);
+ DataEncoder.encode(~value, dst, dstOffset);
}
/**
@@ -95,7 +94,7 @@ public class KeyEncoder extends DataEncoder { return 1;
} else {
dst[dstOffset] = NOT_NULL_BYTE_LOW;
- encode(~value.longValue(), dst, dstOffset + 1);
+ DataEncoder.encode(~value.longValue(), dst, dstOffset + 1);
return 9;
}
}
@@ -141,7 +140,7 @@ public class KeyEncoder extends DataEncoder { * @param dstOffset offset into destination array
*/
public static void encodeDesc(short value, byte[] dst, int dstOffset) {
- encode((short) ~value, dst, dstOffset);
+ DataEncoder.encode((short) ~value, dst, dstOffset);
}
/**
@@ -160,7 +159,7 @@ public class KeyEncoder extends DataEncoder { return 1;
} else {
dst[dstOffset] = NOT_NULL_BYTE_LOW;
- encode((short) ~value.shortValue(), dst, dstOffset + 1);
+ DataEncoder.encode((short) ~value.shortValue(), dst, dstOffset + 1);
return 3;
}
}
@@ -173,7 +172,7 @@ public class KeyEncoder extends DataEncoder { * @param dstOffset offset into destination array
*/
public static void encodeDesc(char value, byte[] dst, int dstOffset) {
- encode((char) ~value, dst, dstOffset);
+ DataEncoder.encode((char) ~value, dst, dstOffset);
}
/**
@@ -192,7 +191,7 @@ public class KeyEncoder extends DataEncoder { return 1;
} else {
dst[dstOffset] = NOT_NULL_BYTE_LOW;
- encode((char) ~value.charValue(), dst, dstOffset + 1);
+ DataEncoder.encode((char) ~value.charValue(), dst, dstOffset + 1);
return 3;
}
}
@@ -252,7 +251,7 @@ public class KeyEncoder extends DataEncoder { */
public static void encodeDesc(Float value, byte[] dst, int dstOffset) {
if (value == null) {
- encode(~0x7fffffff, dst, dstOffset);
+ DataEncoder.encode(~0x7fffffff, dst, dstOffset);
} else {
encodeDesc(value.floatValue(), dst, dstOffset);
}
@@ -292,7 +291,7 @@ public class KeyEncoder extends DataEncoder { */
public static void encodeDesc(Double value, byte[] dst, int dstOffset) {
if (value == null) {
- encode(~0x7fffffffffffffffL, dst, dstOffset);
+ DataEncoder.encode(~0x7fffffffffffffffL, dst, dstOffset);
} else {
encodeDesc(value.doubleValue(), dst, dstOffset);
}
|