X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=wicket%2Fcomponents%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fwicket%2Fbehavior%2FFlushEntityManagerBehavior.java;h=287bb64ca0bc0d114f88c2eb37a1275fb5d90637;hb=e897c0b96075ff833db4bb42c6bb267275376c7c;hp=e309e5ab720fc2fa0d53e669b92440906a8b242f;hpb=e8442732ed5dd8c0e2c2bc02d7d1d5fce0ba1af5;p=utils diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/FlushEntityManagerBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/FlushEntityManagerBehavior.java index e309e5ab..287bb64c 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/FlushEntityManagerBehavior.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/FlushEntityManagerBehavior.java @@ -15,31 +15,55 @@ */ 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.persistence.PersistenceException; +import javax.persistence.TransactionRequiredException; +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 (TransactionRequiredException e) { + throw e; + } catch (PersistenceException e) { + throw e; + } catch (Exception e) { + LOGGER.log(Level.WARNING, "Could not flush entitymanager", e); + } } }