X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fpersistence%2FPersistentFactoryTest.java;h=cb1c8acfd40534c32c165b9a8495fa029d5f5ac1;hb=26805fc0810098c4bd8009a35c8719478e74153e;hp=9f254c694f53cf6f0b6c55b3e6d904a25a2eceac;hpb=6f0d3f649725a6709ecf8e59fc64a9900d22b002;p=utils diff --git a/support/general/src/test/java/org/wamblee/persistence/PersistentFactoryTest.java b/support/general/src/test/java/org/wamblee/persistence/PersistentFactoryTest.java index 9f254c69..cb1c8acf 100644 --- a/support/general/src/test/java/org/wamblee/persistence/PersistentFactoryTest.java +++ b/support/general/src/test/java/org/wamblee/persistence/PersistentFactoryTest.java @@ -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 accessor = new PropertyAccessor(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); + + } }