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)));
+    }
+}