Author: aadamchik
Date: Thu Oct 12 17:41:27 2006
New Revision: 463532
URL: http://svn.apache.org/viewvc?view=rev&rev=463532
Log:
CAY-682: Generic Cayenne POJO enhancer
Tests for primitive getters
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java?view=diff&rev=463532&r1=463531&r2=463532
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
Thu Oct 12 17:41:27 2006
@@ -154,7 +154,7 @@
assertEquals(PersistenceState.DELETED, state);
}
- public void testGetterIntercepted() throws Exception {
+ public void testStringGetterIntercepted() throws Exception {
Class e1Class = Class.forName(C1, true, loader);
assertNotNull(e1Class);
@@ -250,6 +250,42 @@
assertEquals("y", change[3]);
}
+ public void testIntGetterIntercepted() throws Exception {
+
+ Class e1Class = Class.forName(C1, true, loader);
+ Object o = e1Class.newInstance();
+
+ // attempt calling on detached object - must not fail
+ Method getAttribute2 = e1Class.getDeclaredMethod("getAttribute2",
(Class[]) null);
+ assertEquals(new Integer(0), getAttribute2.invoke(o, (Object[]) null));
+
+ // now call on attached object
+
+ final Object[] prepared = new Object[2];
+ ObjectContext context = new MockObjectContext() {
+
+ @Override
+ public void prepareForAccess(Persistent object, String property) {
+ prepared[0] = object;
+ prepared[1] = property;
+ }
+ };
+
+ Method setObjectContext = e1Class.getDeclaredMethod(
+ "setObjectContext",
+ new Class[] {
+ ObjectContext.class
+ });
+
+ setObjectContext.invoke(o, new Object[] {
+ context
+ });
+
+ assertEquals(new Integer(0), getAttribute2.invoke(o, (Object[]) null));
+ assertSame(o, prepared[0]);
+ assertEquals("attribute2", prepared[1]);
+ }
+
public void testIntSetterIntercepted() throws Exception {
Class e1Class = Class.forName(C1, true, loader);
@@ -305,6 +341,42 @@
assertEquals(new Integer(4), change[3]);
}
+ public void testDoubleGetterIntercepted() throws Exception {
+
+ Class e1Class = Class.forName(C1, true, loader);
+ Object o = e1Class.newInstance();
+
+ // attempt calling on detached object - must not fail
+ Method getAttribute3 = e1Class.getDeclaredMethod("getAttribute3",
(Class[]) null);
+ assertEquals(new Double(0d), getAttribute3.invoke(o, (Object[]) null));
+
+ // now call on attached object
+
+ final Object[] prepared = new Object[2];
+ ObjectContext context = new MockObjectContext() {
+
+ @Override
+ public void prepareForAccess(Persistent object, String property) {
+ prepared[0] = object;
+ prepared[1] = property;
+ }
+ };
+
+ Method setObjectContext = e1Class.getDeclaredMethod(
+ "setObjectContext",
+ new Class[] {
+ ObjectContext.class
+ });
+
+ setObjectContext.invoke(o, new Object[] {
+ context
+ });
+
+ assertEquals(new Double(0d), getAttribute3.invoke(o, (Object[]) null));
+ assertSame(o, prepared[0]);
+ assertEquals("attribute3", prepared[1]);
+ }
+
public void testDoubleSetterIntercepted() throws Exception {
Class e1Class = Class.forName(C1, true, loader);