(no commit message)
authorerik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Sat, 24 Jul 2010 00:10:58 +0000 (00:10 +0000)
committererik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Sat, 24 Jul 2010 00:10:58 +0000 (00:10 +0000)
wicket/components/src/main/java/org/wamblee/wicket/behavior/CompositePageBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/behavior/DisableCachingBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/behavior/ExpirePageImmediatelyBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/behavior/FlushEntityManagerBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/behavior/PageBehavior.java
wicket/components/src/main/java/org/wamblee/wicket/behavior/ResetCssBehavior.java [new file with mode: 0644]
wicket/components/src/main/java/org/wamblee/wicket/behavior/WebApplicationBasePage.java

index c6b7d5ab5907672e2b21c6934c2887291529e697..6cf888540edb8df71a49ad7deeb9947065993956 100644 (file)
@@ -15,6 +15,7 @@
  */
 package org.wamblee.wicket.behavior;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
index ec85de478a57863b1916ad667eacc06310479544..d6ff4d0f619b1e40b409a6e6243a97db4427860e 100644 (file)
@@ -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");
index 16e1c9bd2b2afd8bc587402500651db308838f23..0644375e323e233a59e37b4479dd01cb317cdba1 100644 (file)
@@ -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);
     }
 
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);
+        }
     }
 
 }
index 4d9d3b3a82ce975de55100024b0254bf3f0d56ee..1b7c25ee4ad6c203cb396e8779fc5f62e723ecd9 100644 (file)
@@ -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 (file)
index 0000000..5e7bbdc
--- /dev/null
@@ -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"));
+    }
+
+}
index 75043351671a28e7ab7d590bb152ef11ac7387d4..387f193114da0f58c0d1181fb8d3c6ce3b75a7fd 100644 (file)
@@ -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;