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