You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/08/18 15:05:29 UTC
[1/3] cayenne git commit: CAY-2103 cayenne-crypto: support for
mapping non-String and non-binary types
Repository: cayenne
Updated Branches:
refs/heads/master 09f01c007 -> 5a6326534
CAY-2103 cayenne-crypto: support for mapping non-String and non-binary types
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/c7ae3e1e
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/c7ae3e1e
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/c7ae3e1e
Branch: refs/heads/master
Commit: c7ae3e1eef487452b9be908ec1d76c247c58a27d
Parents: 1095966
Author: Andrei Tomashpolskiy <no...@gmail.com>
Authored: Thu Aug 18 17:42:31 2016 +0300
Committer: Andrei Tomashpolskiy <no...@gmail.com>
Committed: Thu Aug 18 17:42:31 2016 +0300
----------------------------------------------------------------------
.../apache/cayenne/crypto/transformer/value/IntegerConverter.java | 2 +-
.../org/apache/cayenne/crypto/transformer/value/LongConverter.java | 2 +-
.../apache/cayenne/crypto/transformer/value/ShortConverter.java | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c7ae3e1e/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/IntegerConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/IntegerConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/IntegerConverter.java
index 327c29f..3fad8ca 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/IntegerConverter.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/IntegerConverter.java
@@ -42,7 +42,7 @@ public class IntegerConverter implements BytesConverter<Integer> {
static byte[] getBytes(int k) {
- if (k <= Short.MAX_VALUE) {
+ if (k >= Short.MIN_VALUE && k <= Short.MAX_VALUE) {
return ShortConverter.getBytes((short) k);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c7ae3e1e/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LongConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LongConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LongConverter.java
index 5863f3e..7720065 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LongConverter.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LongConverter.java
@@ -49,7 +49,7 @@ public class LongConverter implements BytesConverter<Long> {
static byte[] getBytes(long k) {
- if (k <= Integer.MAX_VALUE) {
+ if (k >= Integer.MIN_VALUE && k <= Integer.MAX_VALUE) {
return IntegerConverter.getBytes((int) k);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c7ae3e1e/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/ShortConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/ShortConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/ShortConverter.java
index c0d8905..0faad7d 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/ShortConverter.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/ShortConverter.java
@@ -41,7 +41,7 @@ public class ShortConverter implements BytesConverter<Short> {
static byte[] getBytes(short k) {
- if (k <= Byte.MAX_VALUE) {
+ if (k >= Byte.MIN_VALUE && k <= Byte.MAX_VALUE) {
return ByteConverter.getBytes((byte) k);
}
[3/3] cayenne git commit: Merge branch '105'
Posted by aa...@apache.org.
Merge branch '105'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5a632653
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5a632653
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5a632653
Branch: refs/heads/master
Commit: 5a63265345b1ba83418f89a8f59d903a71d295f0
Parents: 09f01c0 d9f64a7
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Thu Aug 18 18:01:35 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Thu Aug 18 18:01:35 2016 +0300
----------------------------------------------------------------------
.../value/DefaultValueTransformerFactory.java | 6 +++
.../transformer/value/DoubleConverter.java | 35 ++++++++++++++++
.../transformer/value/FloatConverter.java | 35 ++++++++++++++++
.../transformer/value/IntegerConverter.java | 2 +-
.../crypto/transformer/value/LongConverter.java | 2 +-
.../transformer/value/ShortConverter.java | 2 +-
.../transformer/value/DoubleConverterTest.java | 43 ++++++++++++++++++++
.../transformer/value/FloatConverterTest.java | 43 ++++++++++++++++++++
8 files changed, 165 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[2/3] cayenne git commit: CAY-2103 cayenne-crypto: support for
mapping non-String and non-binary types
Posted by aa...@apache.org.
CAY-2103 cayenne-crypto: support for mapping non-String and non-binary types
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/d9f64a7c
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/d9f64a7c
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/d9f64a7c
Branch: refs/heads/master
Commit: d9f64a7cc0ec99bfdb3284d78c7e776d80b8133a
Parents: c7ae3e1
Author: Andrei Tomashpolskiy <no...@gmail.com>
Authored: Thu Aug 18 17:42:39 2016 +0300
Committer: Andrei Tomashpolskiy <no...@gmail.com>
Committed: Thu Aug 18 17:42:39 2016 +0300
----------------------------------------------------------------------
.../value/DefaultValueTransformerFactory.java | 6 +++
.../transformer/value/DoubleConverter.java | 35 ++++++++++++++++
.../transformer/value/FloatConverter.java | 35 ++++++++++++++++
.../transformer/value/DoubleConverterTest.java | 43 ++++++++++++++++++++
.../transformer/value/FloatConverterTest.java | 43 ++++++++++++++++++++
5 files changed, 162 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d9f64a7c/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
index 2d68972..aa4e83c 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
@@ -144,6 +144,12 @@ public class DefaultValueTransformerFactory implements ValueTransformerFactory {
map.put("byte[]", BytesToBytesConverter.INSTANCE);
map.put(String.class.getName(), Utf8StringConverter.INSTANCE);
+ map.put(Double.class.getName(), DoubleConverter.INSTANCE);
+ map.put(Double.TYPE.getName(), DoubleConverter.INSTANCE);
+
+ map.put(Float.class.getName(), FloatConverter.INSTANCE);
+ map.put(Float.TYPE.getName(), FloatConverter.INSTANCE);
+
map.put(Long.class.getName(), LongConverter.INSTANCE);
map.put(Long.TYPE.getName(), LongConverter.INSTANCE);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d9f64a7c/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DoubleConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DoubleConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DoubleConverter.java
new file mode 100644
index 0000000..1de0eee
--- /dev/null
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DoubleConverter.java
@@ -0,0 +1,35 @@
+package org.apache.cayenne.crypto.transformer.value;
+
+/**
+ * Converts between double and byte[]
+ *
+ * @since 4.0
+ */
+public class DoubleConverter implements BytesConverter<Double> {
+
+ public static final BytesConverter<Double> INSTANCE = new DoubleConverter();
+ private static final int BYTES = 8;
+
+ static double getDouble(byte[] bytes) {
+
+ if (bytes.length > BYTES) {
+ throw new IllegalArgumentException("byte[] is too large for a single double value: " + bytes.length);
+ }
+
+ return Double.longBitsToDouble(LongConverter.getLong(bytes));
+ }
+
+ static byte[] getBytes(Double d) {
+ return LongConverter.getBytes(Double.doubleToLongBits(d));
+ }
+
+ @Override
+ public Double fromBytes(byte[] bytes) {
+ return getDouble(bytes);
+ }
+
+ @Override
+ public byte[] toBytes(Double value) {
+ return getBytes(value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d9f64a7c/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/FloatConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/FloatConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/FloatConverter.java
new file mode 100644
index 0000000..ad35014
--- /dev/null
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/FloatConverter.java
@@ -0,0 +1,35 @@
+package org.apache.cayenne.crypto.transformer.value;
+
+/**
+ * Converts between float and byte[]
+ *
+ * @since 4.0
+ */
+public class FloatConverter implements BytesConverter<Float> {
+
+ public static final BytesConverter<Float> INSTANCE = new FloatConverter();
+ private static final int BYTES = 4;
+
+ static float getFloat(byte[] bytes) {
+
+ if (bytes.length > BYTES) {
+ throw new IllegalArgumentException("byte[] is too large for a single float value: " + bytes.length);
+ }
+
+ return Float.intBitsToFloat(IntegerConverter.getInt(bytes));
+ }
+
+ static byte[] getBytes(float f) {
+ return IntegerConverter.getBytes(Float.floatToRawIntBits(f));
+ }
+
+ @Override
+ public Float fromBytes(byte[] bytes) {
+ return getFloat(bytes);
+ }
+
+ @Override
+ public byte[] toBytes(Float value) {
+ return getBytes(value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d9f64a7c/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/DoubleConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/DoubleConverterTest.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/DoubleConverterTest.java
new file mode 100644
index 0000000..d25ca31
--- /dev/null
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/DoubleConverterTest.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.crypto.transformer.value;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DoubleConverterTest {
+
+ @Test
+ public void testConverter() {
+ Double originalValue = 36.6d;
+ DoubleConverter converter = new DoubleConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_Negative() {
+ Double originalValue = -36.6d;
+ DoubleConverter converter = new DoubleConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_MaxValue() {
+ Double originalValue = Double.MAX_VALUE;
+ DoubleConverter converter = new DoubleConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_MinValue() {
+ Double originalValue = Double.MIN_VALUE;
+ DoubleConverter converter = new DoubleConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_Zero() {
+ Double originalValue = 0d;
+ DoubleConverter converter = new DoubleConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/d9f64a7c/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/FloatConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/FloatConverterTest.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/FloatConverterTest.java
new file mode 100644
index 0000000..7b367be
--- /dev/null
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/FloatConverterTest.java
@@ -0,0 +1,43 @@
+package org.apache.cayenne.crypto.transformer.value;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class FloatConverterTest {
+
+ @Test
+ public void testConverter() {
+ Float originalValue = 36.6f;
+ FloatConverter converter = new FloatConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_Negative() {
+ Float originalValue = -36.6f;
+ FloatConverter converter = new FloatConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_MaxValue() {
+ Float originalValue = Float.MAX_VALUE;
+ FloatConverter converter = new FloatConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_MinValue() {
+ Float originalValue = Float.MIN_VALUE;
+ FloatConverter converter = new FloatConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+
+ @Test
+ public void testConverter_Zero() {
+ Float originalValue = 0f;
+ FloatConverter converter = new FloatConverter();
+ assertEquals(originalValue, converter.fromBytes(converter.toBytes(originalValue)));
+ }
+}