You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2009/10/03 16:16:06 UTC

svn commit: r821324 - in /cayenne/main/trunk/framework: cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/ cayenne-jdk1.5-unpublished/src/test/java/org/apache...

Author: aadamchik
Date: Sat Oct  3 14:16:06 2009
New Revision: 821324

URL: http://svn.apache.org/viewvc?rev=821324&view=rev
Log:
CAY-1281 Lifecycle callbacks reorganization

implementing new pre-persist

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataChannelSyncCallbackAction.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Artist.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Painting.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextCallbacksTest.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataChannelSyncCallbackAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataChannelSyncCallbackAction.java?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataChannelSyncCallbackAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataChannelSyncCallbackAction.java Sat Oct  3 14:16:06 2009
@@ -159,6 +159,7 @@
         @Override
         protected boolean hasListeners() {
             return !(callbackRegistry.isEmpty(LifecycleEvent.PRE_UPDATE)
+                    && callbackRegistry.isEmpty(LifecycleEvent.PRE_PERSIST)
                     && callbackRegistry.isEmpty(LifecycleEvent.POST_UPDATE)
                     && callbackRegistry.isEmpty(LifecycleEvent.POST_REMOVE) && callbackRegistry
                     .isEmpty(LifecycleEvent.POST_PERSIST));
@@ -166,6 +167,7 @@
 
         @Override
         void applyPreCommit() {
+            apply(LifecycleEvent.PRE_PERSIST, persisted);
             apply(LifecycleEvent.PRE_UPDATE, updated);
         }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd Sat Oct  3 14:16:06 2009
@@ -41,7 +41,7 @@
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:query"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:entity-listener"/>
 			</xs:sequence>
-			<xs:attribute name="project-version" use="required" type="xs:decimal"/>
+			<xs:attribute name="project-version" use="required" type="xs:string"/>
 		</xs:complexType>
 	</xs:element>
 	<xs:element name="db-entity">
@@ -90,6 +90,7 @@
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:entity-listener"/>
 				
 				<!--  Callbacks -->
+				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-add"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-persist"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:post-persist"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-update"/>
@@ -268,6 +269,7 @@
 	<xs:element name="entity-listener">
 		<xs:complexType>
 			<xs:sequence>
+				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-add"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-persist"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:post-persist"/>
 				<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:pre-update"/>
@@ -294,6 +296,11 @@
 			<xs:attribute name="method-name" use="required" type="xs:string"/>
 		</xs:complexType>
 	</xs:element>
+	<xs:element name="pre-add">
+		<xs:complexType>
+			<xs:attribute name="method-name" use="required" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
 	<xs:element name="pre-persist">
 		<xs:complexType>
 			<xs:attribute name="method-name" use="required" type="xs:string"/>

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Artist.java?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Artist.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Artist.java Sat Oct  3 14:16:06 2009
@@ -26,6 +26,7 @@
 
     protected transient ValidationDelegate validationDelegate;
     protected boolean validateForSaveCalled;
+    protected boolean preAdded;
     protected boolean prePersisted;
     protected boolean preRemoved;
     protected boolean preUpdated;
@@ -51,6 +52,7 @@
     }
 
     public void resetCallbackFlags() {
+        preAdded = false;
         prePersisted = false;
         preRemoved = false;
         preUpdated = false;
@@ -69,6 +71,10 @@
         super.validateForSave(validationResult);
     }
 
+    public void preAddCallback() {
+        preAdded = true;
+    }
+    
     public void prePersistCallback() {
         prePersisted = true;
     }
@@ -97,6 +103,10 @@
         postLoaded++;
     }
 
+    public boolean isPreAdded() {
+        return preAdded;
+    }
+    
     public boolean isPrePersisted() {
         return prePersisted;
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Painting.java?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Painting.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/Painting.java Sat Oct  3 14:16:06 2009
@@ -24,18 +24,18 @@
 public class Painting extends org.apache.art.auto._Painting {
     protected boolean validateForSaveCalled;
 
-    protected boolean prePersisted;
+    protected boolean preAdded;
     protected boolean preRemoved;
     protected boolean preUpdated;
 
     public void resetCallbackFlags() {
-        prePersisted = false;
+        preAdded = false;
         preRemoved = false;
         preUpdated = false;
     }
 
-    public void prePersistCallback() {
-        prePersisted = true;
+    public void preAddCallback() {
+        preAdded = true;
     }
 
     public void preRemoveCallback() {
@@ -46,8 +46,8 @@
         preUpdated = true;
     }
 
-    public boolean isPrePersisted() {
-        return prePersisted;
+    public boolean isPreAdded() {
+        return preAdded;
     }
 
     public boolean isPreRemoved() {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextCallbacksTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextCallbacksTest.java?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextCallbacksTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextCallbacksTest.java Sat Oct  3 14:16:06 2009
@@ -38,7 +38,7 @@
         resolver.getCallbackRegistry().clear();
     }
 
-    public void testPrePersistCallbacks() {
+    public void testPreAddCallbacks() {
         LifecycleCallbackRegistry registry = getDomain()
                 .getEntityResolver()
                 .getCallbackRegistry();
@@ -48,16 +48,13 @@
         // no callbacks
         Artist a1 = context.newObject(Artist.class);
         assertNotNull(a1);
-        assertFalse(a1.isPrePersisted());
+        assertFalse(a1.isPreAdded());
 
-        registry.addListener(
-                LifecycleEvent.PRE_ADD,
-                Artist.class,
-                "prePersistCallback");
+        registry.addListener(LifecycleEvent.PRE_ADD, Artist.class, "preAddCallback");
 
         Artist a2 = context.newObject(Artist.class);
         assertNotNull(a2);
-        assertTrue(a2.isPrePersisted());
+        assertTrue(a2.isPreAdded());
 
         MockCallingBackListener listener2 = new MockCallingBackListener();
         registry.addListener(
@@ -68,13 +65,52 @@
 
         Artist a3 = context.newObject(Artist.class);
         assertNotNull(a3);
-        assertTrue(a3.isPrePersisted());
+        assertTrue(a3.isPreAdded());
 
         assertSame(a3, listener2.getPublicCalledbackEntity());
 
         Painting p3 = context.newObject(Painting.class);
         assertNotNull(p3);
-        assertFalse(p3.isPrePersisted());
+        assertFalse(p3.isPreAdded());
+        assertSame(a3, listener2.getPublicCalledbackEntity());
+    }
+
+    public void testPrePersistCallbacks() {
+        LifecycleCallbackRegistry registry = getDomain()
+                .getEntityResolver()
+                .getCallbackRegistry();
+
+        DataContext context = createDataContext();
+
+        // no callbacks
+        Artist a1 = context.newObject(Artist.class);
+        a1.setArtistName("1");
+        assertFalse(a1.isPrePersisted());
+        context.commitChanges();
+        assertFalse(a1.isPrePersisted());
+
+        registry.addListener(
+                LifecycleEvent.PRE_PERSIST,
+                Artist.class,
+                "prePersistCallback");
+
+        Artist a2 = context.newObject(Artist.class);
+        a2.setArtistName("2");
+        assertFalse(a2.isPrePersisted());
+        context.commitChanges();
+        assertTrue(a2.isPrePersisted());
+
+        MockCallingBackListener listener2 = new MockCallingBackListener();
+        registry.addListener(
+                LifecycleEvent.PRE_PERSIST,
+                Artist.class,
+                listener2,
+                "publicCallback");
+
+        Artist a3 = context.newObject(Artist.class);
+        a3.setArtistName("3");
+        assertNull(listener2.getPublicCalledbackEntity());
+        context.commitChanges();
         assertSame(a3, listener2.getPublicCalledbackEntity());
     }
 
@@ -90,7 +126,7 @@
         a1.setArtistName("XX");
         context.commitChanges();
         context.deleteObject(a1);
-        assertFalse(a1.isPrePersisted());
+        assertFalse(a1.isPreAdded());
         assertFalse(a1.isPreRemoved());
 
         registry
@@ -100,7 +136,7 @@
         a2.setArtistName("XX");
         context.commitChanges();
         context.deleteObject(a2);
-        assertFalse(a2.isPrePersisted());
+        assertFalse(a2.isPreAdded());
         assertTrue(a2.isPreRemoved());
 
         MockCallingBackListener listener2 = new MockCallingBackListener();
@@ -114,7 +150,7 @@
         a3.setArtistName("XX");
         context.commitChanges();
         context.deleteObject(a3);
-        assertFalse(a3.isPrePersisted());
+        assertFalse(a3.isPreAdded());
         assertTrue(a3.isPreRemoved());
 
         assertSame(a3, listener2.getPublicCalledbackEntity());
@@ -123,7 +159,7 @@
         p3.setPaintingTitle("XX");
         context.commitChanges();
         context.deleteObject(p3);
-        assertFalse(p3.isPrePersisted());
+        assertFalse(p3.isPreAdded());
         assertFalse(p3.isPreRemoved());
         assertSame(a3, listener2.getPublicCalledbackEntity());
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java?rev=821324&r1=821323&r2=821324&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java Sat Oct  3 14:16:06 2009
@@ -86,6 +86,7 @@
     protected JComboBox callbackTypeCombo = CayenneWidgetFactory.createComboBox(
             new Object[] {
                     new CallbackType(LifecycleEvent.PRE_ADD, "pre-add"),
+                    new CallbackType(LifecycleEvent.PRE_PERSIST, "pre-persist"),
                     new CallbackType(LifecycleEvent.POST_PERSIST, "post-persist"),
                     new CallbackType(LifecycleEvent.PRE_UPDATE, "pre-update"),
                     new CallbackType(LifecycleEvent.POST_UPDATE, "post-update"),