From: Erik Brakkee <erik@brakkee.org>
Date: Sat, 24 Jul 2010 00:10:58 +0000 (+0000)
Subject: (no commit message)
X-Git-Tag: wamblee-utils-0.7~185
X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=dd22a57387008cd14ae3c74b0f37159c92600933;p=utils

---

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;
 
 /**
+ * <p>
  * Behavior to disable browser caching. This also means that the page 
  * automatically expires the first time after it is rendered. 
+ * </p>
+ * 
+ * <p>
+ * 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 
+ * <code>getPage().getPageMap().remove(getPage());</code>
+ * in the <code>onSubmit</code> callback of the form. 
+ * </p>
  * 
  * @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 <code>onBeforeRender</code>
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;