X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=wicket%2Fcomponents%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fwicket%2Fpage%2FFlushEntityManagerBehavior.java;fp=wicket%2Fcomponents%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fwicket%2Fpage%2FFlushEntityManagerBehavior.java;h=d1b663d85b81970ac59a39437b161f97389f40c7;hb=7e7d1f6f67766d5998d4631cffadb79da06a0acd;hp=0000000000000000000000000000000000000000;hpb=8e865a37b331adac21be54a9fbbc5bec1585d925;p=utils diff --git a/wicket/components/src/main/java/org/wamblee/wicket/page/FlushEntityManagerBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/page/FlushEntityManagerBehavior.java new file mode 100644 index 00000000..d1b663d8 --- /dev/null +++ b/wicket/components/src/main/java/org/wamblee/wicket/page/FlushEntityManagerBehavior.java @@ -0,0 +1,69 @@ +/* + * Copyright 2005-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.wamblee.wicket.page; + +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. + * + * @author Erik Brakkee + * + */ +public 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; + } + + @Override + public void onAfterRender(WebPage aPage) { + 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); + } + } + +}