You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/08/31 19:44:09 UTC

svn commit: r1379526 - /incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java

Author: danhaywood
Date: Fri Aug 31 17:44:09 2012
New Revision: 1379526

URL: http://svn.apache.org/viewvc?rev=1379526&view=rev
Log:
ISIS-232: creating of loadable/detachable models w.r.t transactions

The loadable/detachable model (eg EntityModel) should only be created
after the transaction has been executed (all changes flushed).

This fix addresses this for the invocation of actions.

Modified:
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java?rev=1379526&r1=1379525&r2=1379526&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java Fri Aug 31 17:44:09 2012
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.common.SelectionHandler;
 import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
 import org.apache.isis.viewer.wicket.model.models.ActionExecutor;
@@ -131,6 +132,7 @@ public class ActionPanel extends PanelAb
 
                 final ObjectAdapter actualAdapter = determineActualAdapter(resultAdapter, actionPanel);
 
+                //actionPanel.set
                 addResultsAccordingToSingleResultsMode(actionPanel, actualAdapter, null);
             }
 
@@ -158,12 +160,17 @@ public class ActionPanel extends PanelAb
 
                 if (singleResultsMode == ActionModel.SingleResultsMode.REDIRECT) {
 
+                    // force any changes in state etc to happen now prior to the redirect;
+                    // this should cause our page mementos (eg EntityModel) to hold the correct state.  I hope.
+                    IsisContext.getTransactionManager().getTransaction().flush();
+                    
                     // build page, also propogate any concurrency exception that might have occurred already
                     final EntityPage entityPage = new EntityPage(actualAdapter, exIfAny);
                     
                     // "redirect-after-post"
                     panel.setRedirect(true);
                     panel.setResponsePage(entityPage);
+                    
                 } else if (singleResultsMode == ActionModel.SingleResultsMode.SELECT) {
                     panel.hideAll();
                     actionModel.getSelectionHandler().onSelected(panel, actualAdapter);