From dd22a57387008cd14ae3c74b0f37159c92600933 Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Sat, 24 Jul 2010 00:10:58 +0000 Subject: [PATCH] --- .../behavior/CompositePageBehavior.java | 1 + .../behavior/DisableCachingBehavior.java | 12 +++++- .../ExpirePageImmediatelyBehavior.java | 1 + .../behavior/FlushEntityManagerBehavior.java | 37 ++++++++++++++----- .../wamblee/wicket/behavior/PageBehavior.java | 4 +- .../wicket/behavior/ResetCssBehavior.java | 36 ++++++++++++++++++ .../behavior/WebApplicationBasePage.java | 1 + 7 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 wicket/components/src/main/java/org/wamblee/wicket/behavior/ResetCssBehavior.java diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/CompositePageBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/CompositePageBehavior.java index c6b7d5ab..6cf88854 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/CompositePageBehavior.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/CompositePageBehavior.java @@ -15,6 +15,7 @@ */ package org.wamblee.wicket.behavior; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/DisableCachingBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/DisableCachingBehavior.java index ec85de47..d6ff4d0f 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/DisableCachingBehavior.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/DisableCachingBehavior.java @@ -19,16 +19,26 @@ import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.protocol.http.WebResponse; /** + *

* Behavior to disable browser caching. This also means that the page * automatically expires the first time after it is rendered. + *

+ * + *

+ * Important: To make sure that form data cannot be submitted twice for + * the same data using the back button, it is still necessary to explicitly call + * getPage().getPageMap().remove(getPage()); + * in the onSubmit callback of the form. + *

* * @author Erik Brakkee * */ -public class DisableCachingBehavior extends AbstractPageBehavior { +public class DisableCachingBehavior extends ExpirePageImmediatelyBehavior { @Override public void setHeaders(WebPage aPage, WebResponse aResponse) { + System.out.println("Disabling caching for " + aPage.getClass().getName()); aResponse.setHeader("Pragma", "no-cache"); aResponse.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate, no-store"); diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/ExpirePageImmediatelyBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/ExpirePageImmediatelyBehavior.java index 16e1c9bd..0644375e 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/ExpirePageImmediatelyBehavior.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/ExpirePageImmediatelyBehavior.java @@ -28,6 +28,7 @@ public class ExpirePageImmediatelyBehavior extends AbstractPageBehavior { @Override public void onAfterRender(WebPage aPage) { + System.out.println("Removing page " + aPage.getClass() + " from the pagemap"); aPage.getPageMap().remove(aPage); } 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..921f779f 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,50 @@ */ 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); + } } } diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/PageBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/PageBehavior.java index 4d9d3b3a..1b7c25ee 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/PageBehavior.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/PageBehavior.java @@ -15,6 +15,8 @@ */ package org.wamblee.wicket.behavior; +import java.io.Serializable; + import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.protocol.http.WebResponse; @@ -24,7 +26,7 @@ import org.apache.wicket.protocol.http.WebResponse; * * @author Erik Brakkee */ -public interface PageBehavior { +public interface PageBehavior extends Serializable { /** * To be called as part of the Page's onBeforeRender diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/ResetCssBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/ResetCssBehavior.java new file mode 100644 index 00000000..5e7bbdc2 --- /dev/null +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/ResetCssBehavior.java @@ -0,0 +1,36 @@ +/* + * 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.behavior; + +import org.apache.wicket.behavior.HeaderContributor; +import org.apache.wicket.markup.html.CSSPackageResource; +import org.apache.wicket.markup.html.JavascriptPackageResource; + +/** + * Reset CSS style to obtain more uniform browser behavior. + * + * @author Erik Brakkee + */ +public class ResetCssBehavior extends HeaderContributor { + + /** + * Constructs the behavior. + */ + public ResetCssBehavior() { + super(CSSPackageResource.getHeaderContribution(ResetCssBehavior.class, "reset.css")); + } + +} diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/WebApplicationBasePage.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/WebApplicationBasePage.java index 75043351..387f1931 100644 --- a/wicket/components/src/main/java/org/wamblee/wicket/behavior/WebApplicationBasePage.java +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/WebApplicationBasePage.java @@ -16,6 +16,7 @@ package org.wamblee.wicket.behavior; import javax.persistence.EntityManager; +import javax.transaction.UserTransaction; import org.apache.wicket.IPageMap; import org.apache.wicket.PageParameters; -- 2.31.1