You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/10/13 11:54:45 UTC

[2/5] cayenne git commit: CAY-2370 ValueObjectType for byte[] fails lookup with tests

CAY-2370 ValueObjectType for byte[] fails lookup with tests


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/f731a4a3
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/f731a4a3
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/f731a4a3

Branch: refs/heads/master
Commit: f731a4a3f353c03c2d3728742c7b34b93deb9526
Parents: d226eee
Author: Arseni Bulatski <an...@gmail.com>
Authored: Wed Oct 11 13:33:40 2017 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Wed Oct 11 13:33:40 2017 +0300

----------------------------------------------------------------------
 .../access/types/ValueObjectTypeFactory.java    |  9 +-
 .../types/ValueObjectTypeFactoryOrderTest.java  | 73 +++++++++++++++
 .../types/ValueObjectTypeFactoryTest.java       | 96 ++++++++++++++++++++
 3 files changed, 174 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/f731a4a3/cayenne-server/src/main/java/org/apache/cayenne/access/types/ValueObjectTypeFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ValueObjectTypeFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ValueObjectTypeFactory.java
index f67b621..bdcf863 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ValueObjectTypeFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ValueObjectTypeFactory.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.access.types;
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.util.Objects;
 
 /**
  * @since 4.0
@@ -52,12 +53,12 @@ public class ValueObjectTypeFactory implements ExtendedTypeFactory {
 
     static class ExtendedTypeConverter<T, E> implements ExtendedType<T> {
 
-        private ExtendedType<E> extendedType;
-        private ValueObjectType<T, E> valueObjectType;
+        ExtendedType<E> extendedType;
+        ValueObjectType<T, E> valueObjectType;
 
         ExtendedTypeConverter(ExtendedType<E> extendedType, ValueObjectType<T, E> valueObjectType) {
-            this.extendedType = extendedType;
-            this.valueObjectType = valueObjectType;
+            this.extendedType = Objects.requireNonNull(extendedType);
+            this.valueObjectType = Objects.requireNonNull(valueObjectType);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/cayenne/blob/f731a4a3/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryOrderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryOrderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryOrderTest.java
new file mode 100644
index 0000000..94ed3b7
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryOrderTest.java
@@ -0,0 +1,73 @@
+package org.apache.cayenne.access.types;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class ValueObjectTypeFactoryOrderTest {
+    ExtendedTypeMap map;
+    DefaultValueObjectTypeRegistry registry;
+    ValueObjectTypeFactory factory;
+    ValueObjectType valueObjectType1, valueObjectType2;
+    ExtendedType tstType1, tstType2;
+
+    @Before
+    public void setUpRegistry(){
+        valueObjectType1 = mock(ValueObjectType.class);
+        when(valueObjectType1.getValueType()).thenReturn(UUID.class);
+        when(valueObjectType1.getTargetType()).thenReturn(byte[].class);
+
+        valueObjectType2 = mock(ValueObjectType.class);
+        when(valueObjectType2.getValueType()).thenReturn(UUID.class);
+        when(valueObjectType2.getTargetType()).thenReturn(String.class);
+
+        map = new ExtendedTypeMap();
+
+        tstType1 = mock(ExtendedType.class);
+        when(tstType1.getClassName()).thenReturn("byte[]");
+        map.registerType(tstType1);
+
+        tstType2 = new MockExtendedType(String.class);
+        map.registerType(tstType2);
+    }
+
+    @Test
+    public void testByteFirstOrder(){
+        List<ValueObjectType<?, ?>> list = new ArrayList<>();
+        list.add(valueObjectType1);
+        list.add(valueObjectType2);
+
+        registry = new DefaultValueObjectTypeRegistry(list);
+
+        factory = new ValueObjectTypeFactory(map,registry);
+
+        ValueObjectTypeFactory.ExtendedTypeConverter converter = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(UUID.class);
+        assertNotNull(converter);
+        assertNotSame(tstType1, converter.extendedType);
+        assertSame(tstType2,converter.extendedType);
+    }
+
+    @Test
+    public void testStringFirstOrder(){
+        List<ValueObjectType<?, ?>> list = new ArrayList<>();
+        list.add(valueObjectType2);
+        list.add(valueObjectType1);
+
+        registry = new DefaultValueObjectTypeRegistry(list);
+
+        factory = new ValueObjectTypeFactory(map,registry);
+
+        ValueObjectTypeFactory.ExtendedTypeConverter converter = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(UUID.class);
+        assertNotNull(converter);
+        assertNotSame(tstType2, converter.extendedType);
+        assertSame(tstType1,converter.extendedType);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/f731a4a3/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryTest.java
new file mode 100644
index 0000000..caf4d59
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/types/ValueObjectTypeFactoryTest.java
@@ -0,0 +1,96 @@
+package org.apache.cayenne.access.types;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class ValueObjectTypeFactoryTest {
+
+    ExtendedTypeMap map;
+    DefaultValueObjectTypeRegistry registry;
+    ValueObjectType valueObjectType1, valueObjectType2, valueObjectType3, valueObjectType4;
+    ExtendedType tstType1, tstType2, tstType3, tstType4;
+    ValueObjectTypeFactory factory;
+
+    @Before
+    public void setUpRegistry(){
+        valueObjectType1 = mock(ValueObjectType.class);
+        when(valueObjectType1.getValueType()).thenReturn(UUID.class);
+        when(valueObjectType1.getTargetType()).thenReturn(byte[].class);
+
+        valueObjectType2 = mock(ValueObjectType.class);
+        when(valueObjectType2.getValueType()).thenReturn(String.class);
+        when(valueObjectType2.getTargetType()).thenReturn(String.class);
+
+        valueObjectType3 = mock(ValueObjectType.class);
+        when(valueObjectType3.getValueType()).thenReturn(int.class);
+        when(valueObjectType3.getTargetType()).thenReturn(int.class);
+
+        valueObjectType4 = mock(ValueObjectType.class);
+        when(valueObjectType4.getValueType()).thenReturn(String[].class);
+        when(valueObjectType4.getTargetType()).thenReturn(String[].class);
+
+        List<ValueObjectType<?, ?>> list = new ArrayList<>();
+        list.add(valueObjectType1);
+        list.add(valueObjectType2);
+        list.add(valueObjectType3);
+        list.add(valueObjectType4);
+
+
+        registry = new DefaultValueObjectTypeRegistry(list);
+
+        map = new ExtendedTypeMap();
+
+        tstType1 = mock(ExtendedType.class);
+        when(tstType1.getClassName()).thenReturn("byte[]");
+        map.registerType(tstType1);
+
+        tstType2 = new MockExtendedType(String.class);
+        map.registerType(tstType2);
+
+        tstType3 = new MockExtendedType(int.class);
+        map.registerType(tstType3);
+
+        tstType4 = mock(ExtendedType.class);
+        when(tstType4.getClassName()).thenReturn(String[].class.getCanonicalName());
+        map.registerType(tstType4);
+
+        factory = new ValueObjectTypeFactory(map,registry);
+    }
+
+    @Test
+    public void testUUIDtoByteArray(){
+        ValueObjectTypeFactory.ExtendedTypeConverter converter1 = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(UUID.class);
+        assertNotNull(converter1);
+        assertSame(tstType1, converter1.extendedType);
+    }
+
+    @Test
+    public void testString(){
+        ValueObjectTypeFactory.ExtendedTypeConverter converter2 = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(String.class);
+        assertNotNull(converter2);
+        assertSame(tstType2, converter2.extendedType);
+    }
+
+    @Test
+    public void testInt(){
+        ValueObjectTypeFactory.ExtendedTypeConverter converter3 = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(int.class);
+        assertNotNull(converter3);
+        assertSame(tstType3, converter3.extendedType);
+    }
+
+    @Test
+    public void testStringArray(){
+        ValueObjectTypeFactory.ExtendedTypeConverter converter4 = (ValueObjectTypeFactory.ExtendedTypeConverter) factory.getType(String[].class);
+        assertNotNull(converter4);
+        assertSame(tstType4, converter4.extendedType);
+    }
+}