(no commit message)
[utils] / wicket / components / src / main / java / org / wamblee / wicket / behavior / FlushEntityManagerBehavior.java
index e309e5ab720fc2fa0d53e669b92440906a8b242f..921f779f73426de0e87af99c9e052d899f7044eb 100644 (file)
  */
 package org.wamblee.wicket.behavior;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.annotation.Resource;
 import javax.persistence.EntityManager;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.transaction.UserTransaction;
 
 import org.apache.wicket.markup.html.WebPage;
 
 /**
- * Behavior to flush the entity manager after rendering of the page. 
+ * Behavior to flush the entity manager after rendering of the page.
  * 
  * @author Erik Brakkee
- *
+ * 
  */
 public class FlushEntityManagerBehavior extends AbstractPageBehavior {
 
-    private EntityManager entityManager; 
-    
+    private static final Logger LOGGER = Logger
+        .getLogger(FlushEntityManagerBehavior.class.getName());
+
+    private EntityManager entityManager;
+
     /**
-     * Constructs the behavior. 
-     * @param aEntityManager Contextual reference to an entitymanager.
+     * Constructs the behavior.
+     * 
+     * @param aEntityManager
+     *            Contextual reference to an entitymanager.
      */
     public FlushEntityManagerBehavior(EntityManager aEntityManager) {
-        entityManager = aEntityManager; 
+        entityManager = aEntityManager;
     }
-    
+
     @Override
     public void onAfterRender(WebPage aPage) {
-        entityManager.flush();
+        try {
+            if (entityManager.isOpen()) {
+                entityManager.flush();
+            }
+        } catch (Exception e) { // TODO catch the Entity manager exceptions explicitly and rethrow, but log
+                                 // the other onees.
+            LOGGER.log(Level.WARNING, "Could not flush entitymanager", e);
+        }
     }
 
 }