(no commit message)
[utils] / support / general / src / test / java / org / wamblee / persistence / PersistentFactoryTest.java
index 9f254c694f53cf6f0b6c55b3e6d904a25a2eceac..cb1c8acfd40534c32c165b9a8495fa029d5f5ac1 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2005-2010 the original author or authors.
+ * 
+ * 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 org.wamblee.persistence;
 
 import static junit.framework.Assert.*;
@@ -6,10 +21,11 @@ import javax.persistence.Id;
 import javax.persistence.Version;
 
 import org.junit.Test;
-import org.wamblee.persistence.PersistentFactory.Accessor;
 import org.wamblee.persistence.PersistentFactory.EntityAccessor;
-import org.wamblee.persistence.PersistentFactory.FieldAccessor;
-import org.wamblee.persistence.PersistentFactory.PropertyAccessor;
+import org.wamblee.persistence.PersistentFactory.EntityObjectAccessor;
+import org.wamblee.reflection.Accessor;
+import org.wamblee.reflection.FieldAccessor;
+import org.wamblee.reflection.PropertyAccessor;
 
 public class PersistentFactoryTest {
 
@@ -24,13 +40,13 @@ public class PersistentFactoryTest {
         public void setPk(int aPk) {
             pk = aPk;
         }
-        
-        private void privateSetter(int aPk) { 
+
+        private void privateSetter(int aPk) {
             pk = aPk;
         }
-        
-        private int privateGetter() { 
-            return pk; 
+
+        private int privateGetter() {
+            return pk;
         }
     }
 
@@ -46,7 +62,7 @@ public class PersistentFactoryTest {
             pk = aPk;
         }
     }
-    
+
     public static class X3 {
         private int pk;
 
@@ -71,13 +87,13 @@ public class PersistentFactoryTest {
         public void setVersion(int aVersion) {
             version = aVersion;
         }
-        
-        private void privateSetter(int aVersion) { 
+
+        private void privateSetter(int aVersion) {
             version = aVersion;
         }
-        
-        private int privateGetter() { 
-            return version; 
+
+        private int privateGetter() {
+            return version;
         }
     }
 
@@ -93,7 +109,7 @@ public class PersistentFactoryTest {
             version = aVersion;
         }
     }
-    
+
     public static class X6 {
         private int version;
 
@@ -106,13 +122,13 @@ public class PersistentFactoryTest {
             version = aVersion;
         }
     }
-    
-    public static class X7 { 
+
+    public static class X7 {
         @Id
-        public int id; 
-        
+        public int id;
+
         @Version
-        public int version; 
+        public int version;
     }
 
     // FieldAccessor test
@@ -138,24 +154,25 @@ public class PersistentFactoryTest {
         accessor.set(x1, 10);
         assertEquals(10, x1.getPk());
     }
-    
+
     @Test
-    public void testPropertyAccessorPrivate() throws Exception { 
+    public void testPropertyAccessorPrivate() throws Exception {
         Accessor<Integer> accessor = new PropertyAccessor<Integer>(X1.class
-            .getDeclaredMethod("privateGetter"), X1.class.getDeclaredMethod("privateSetter",
-            int.class));
+            .getDeclaredMethod("privateGetter"), X1.class.getDeclaredMethod(
+            "privateSetter", int.class));
         X1 x1 = new X1();
         assertEquals(0, x1.getPk());
         accessor.set(x1, 10);
-        assertEquals((Integer)10, accessor.get(x1));
-        
+        assertEquals((Integer) 10, accessor.get(x1));
+
     }
 
     // EntityAccessor test
 
     @Test
     public void testEntityAccessorPkField() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X1.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X1.class);
         assertNotNull(accessor);
         assertTrue(accessor.getPk() instanceof FieldAccessor);
         assertNull(accessor.getVersion());
@@ -165,7 +182,8 @@ public class PersistentFactoryTest {
 
     @Test
     public void testEntityAccessorPkProperty() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X2.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X2.class);
         assertNotNull(accessor);
         assertNotNull(accessor.getPk());
         assertTrue(accessor.getPk() instanceof PropertyAccessor);
@@ -174,10 +192,11 @@ public class PersistentFactoryTest {
         assertEquals("getPk", property.getGetter().getName());
         assertEquals("setPk", property.getSetter().getName());
     }
-    
+
     @Test
     public void testEntityAccessorPkPropertyPrivate() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X3.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X3.class);
         assertNotNull(accessor);
         assertNotNull(accessor.getPk());
         assertTrue(accessor.getPk() instanceof PropertyAccessor);
@@ -189,17 +208,19 @@ public class PersistentFactoryTest {
 
     @Test
     public void testEntityAccessorVersionField() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X4.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X4.class);
         assertNotNull(accessor);
         assertTrue(accessor.getVersion() instanceof FieldAccessor);
         assertNull(accessor.getPk());
-        assertEquals("version", ((FieldAccessor) accessor.getVersion()).getField()
-            .getName());
+        assertEquals("version", ((FieldAccessor) accessor.getVersion())
+            .getField().getName());
     }
 
     @Test
     public void testEntityAccessorVersionProperty() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X5.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X5.class);
         assertNotNull(accessor);
         assertNotNull(accessor.getVersion());
         assertTrue(accessor.getVersion() instanceof PropertyAccessor);
@@ -208,10 +229,11 @@ public class PersistentFactoryTest {
         assertEquals("getVersion", property.getGetter().getName());
         assertEquals("setVersion", property.getSetter().getName());
     }
-    
+
     @Test
     public void testEntityAccessorVersionPropertyPrivate() {
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X6.class);
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X6.class);
         assertNotNull(accessor);
         assertNotNull(accessor.getVersion());
         assertTrue(accessor.getVersion() instanceof PropertyAccessor);
@@ -220,35 +242,51 @@ public class PersistentFactoryTest {
         assertEquals("getVersion", property.getGetter().getName());
         assertEquals("setVersion", property.getSetter().getName());
     }
-    
+
     @Test
-    public void testNoVersionAndNoPk() { 
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(String.class);
+    public void testNoVersionAndNoPk() {
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(String.class);
         assertNull(accessor);
     }
 
     @Test
-    public void testPkAndVersion() { 
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X7.class);
+    public void testPkAndVersion() {
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X7.class);
         assertNotNull(accessor.getPk());
         assertNotNull(accessor.getVersion());
-        
+
         X7 x = new X7();
         assertEquals(0, x.id);
         assertEquals(0, x.version);
-        
-        accessor.getPk().set(x, 10); 
+
+        accessor.getPk().set(x, 10);
         accessor.getVersion().set(x, 20);
-        
+
         assertEquals(10, x.id);
         assertEquals(20, x.version);
     }
-    
-    @Test 
-    public void testEntityAccessorCache() { 
-        EntityAccessor accessor = PersistentFactory.createEntityAccessor(X1.class);
-        EntityAccessor accessor2 = PersistentFactory.createEntityAccessor(X1.class);
-        
+
+    @Test
+    public void testEntityAccessorCache() {
+        EntityAccessor accessor = PersistentFactory
+            .createEntityAccessor(X1.class);
+        EntityAccessor accessor2 = PersistentFactory
+            .createEntityAccessor(X1.class);
+
         assertSame(accessor, accessor2);
     }
+
+    // EntityObjectAccessor test for undefined pk and/or version.
+    @Test
+    public void testEntityObjectAccessorRobustness() {
+        EntityObjectAccessor accessor = new EntityObjectAccessor("hello world",
+            new EntityAccessor(null, null));
+        assertNull(accessor.getPrimaryKey());
+        assertNull(accessor.getPersistedVersion());
+        accessor.setPrimaryKey("bla");
+        accessor.setPersistedVersion(100);
+
+    }
 }