(no commit message)
authorErik Brakkee <erik@brakkee.org>
Thu, 29 Jul 2010 21:54:18 +0000 (21:54 +0000)
committerErik Brakkee <erik@brakkee.org>
Thu, 29 Jul 2010 21:54:18 +0000 (21:54 +0000)
wicket/components/src/main/java/org/wamblee/wicket/page/FlushEntityManagerBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/page/PageBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/page/WebApplicationBasePage.java

index 4362faa7dabe0b31db6362663e8721d5e28af203..a8cf15d735bdcd3905c15b1ed43581dba44fa203 100644 (file)
@@ -30,25 +30,24 @@ import org.apache.wicket.markup.html.WebPage;
  * @author Erik Brakkee
  * 
  */
-public class FlushEntityManagerBehavior extends AbstractPageBehavior {
+public abstract class FlushEntityManagerBehavior extends AbstractPageBehavior {
 
     private static final Logger LOGGER = Logger
         .getLogger(FlushEntityManagerBehavior.class.getName());
 
-    private EntityManager entityManager;
-
     /**
      * Constructs the behavior.
      * 
      * @param aEntityManager
      *            Contextual reference to an entitymanager.
      */
-    public FlushEntityManagerBehavior(EntityManager aEntityManager) {
-        entityManager = aEntityManager;
+    public FlushEntityManagerBehavior() {
+        // Empty.
     }
 
     @Override
     public void onAfterRender(WebPage aPage) {
+        EntityManager entityManager = getEntityManager();
         try {
             if (entityManager.isOpen()) {
                 entityManager.flush();
@@ -61,5 +60,11 @@ public class FlushEntityManagerBehavior extends AbstractPageBehavior {
             LOGGER.log(Level.WARNING, "Could not flush entitymanager", e);
         }
     }
+    
+    /**
+     * Gets the entity mmanager to flush.
+     * @return Entity manager.
+     */
+    public abstract EntityManager getEntityManager();
 
 }
index ac17a063b1cd6d8a469dcbd2e3d5578465d8555a..a8d4f9317f3fbad585502efb8db9008aeed68ca9 100644 (file)
@@ -22,7 +22,7 @@ import org.apache.wicket.protocol.http.WebResponse;
 
 /**
  * Page behavior interface. This provides a mechanism to extend page behavior
- * without subclassing.
+ * without subclassing. Implementations of this interface should be serializable. 
  * 
  * @author Erik Brakkee
  */
index 7a90c76484bcd5a1d67a9f007dffb79baf9d6859..b0ac386d13351b747faa4f604279dbb316fc9c01 100644 (file)
@@ -41,7 +41,7 @@ public class WebApplicationBasePage extends WebPage {
 
     protected WebApplicationBasePage() {
         super();
-        
+
         setEnabled(false);
         init();
     }
@@ -92,17 +92,6 @@ public class WebApplicationBasePage extends WebPage {
         addBehavior(new ExpirePageImmediatelyBehavior());
     }
 
-    /**
-     * Flushes the entitymanager immedately after rendering to make sure that
-     * errors are caught early.
-     * 
-     * @param aEntityManager
-     *            Contextual reference to an entity manager.
-     */
-    protected void flushEntityManagerAfterRender(EntityManager aEntityManager) {
-        addBehavior(new FlushEntityManagerBehavior(aEntityManager));
-    }
-
     /**
      * Adds a specific behavior to the page.
      * 
@@ -130,7 +119,7 @@ public class WebApplicationBasePage extends WebPage {
         super.onAfterRender();
         behaviors.onAfterRender(this);
     }
-    
+
     @Override
     protected void onDetach() {
         super.onDetach();