You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shale.apache.org by cr...@apache.org on 2006/09/11 22:29:40 UTC

svn commit: r442336 - in /shale/sandbox: shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/ shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/ shale-dialog2/src/main/java/org/apache/shale/dialog2/ shale-dialog2/src/main/...

Author: craigmcc
Date: Mon Sep 11 13:29:40 2006
New Revision: 442336

URL: http://svn.apache.org/viewvc?view=rev&rev=442336
Log:
Reduce the verbosity of programmatically creating a new dialog context
instance, advancing it until a view is required, and then navigating
there.  All of the above functionality is encapsulated into the new
DialogContext.start() method.

We should consider collapsing the navigation part into
DialogContext.advance() too, and having it just return void.

Modified:
    shale/sandbox/shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/LegacyDialogContext.java
    shale/sandbox/shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/SCXMLDialogContext.java
    shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/DialogContext.java
    shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/faces/Dialog2NavigationHandler.java
    shale/sandbox/shale-test-dialog2-legacy/src/main/java/org/apache/shale/examples/test/dialog2/legacy/Wizard.java

Modified: shale/sandbox/shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/LegacyDialogContext.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/LegacyDialogContext.java?view=diff&rev=442336&r1=442335&r2=442336
==============================================================================
--- shale/sandbox/shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/LegacyDialogContext.java (original)
+++ shale/sandbox/shale-dialog2-legacy/src/main/java/org/apache/shale/dialog2/legacy/LegacyDialogContext.java Mon Sep 11 13:29:40 2006
@@ -21,6 +21,8 @@
 import java.util.List;
 import java.util.Map;
 import javax.faces.FacesException;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.el.MethodBinding;
 import org.apache.shale.dialog2.DialogContext;
@@ -133,6 +135,12 @@
 
 
     /**
+     * <p>Flag indicating that execution has started for this dialog.</p>
+     */
+    private boolean started = false;
+
+
+    /**
      * <p>An empty parameter list to pass to the action method called by
      * a method binding expression.</p>
      */
@@ -233,6 +241,7 @@
     /** {@inheritDoc} */
     public String advance(FacesContext context, String outcome) {
 
+        started = true;
         Position position = peek();
 
         try {
@@ -280,6 +289,30 @@
             }
         }
 
+
+    }
+
+
+    /** {@inheritDoc} */
+    public void start(FacesContext context) {
+
+        if (started) {
+            throw new IllegalStateException("Dialog instance '"
+                    + getId() + "' for dialog name '"
+                    + getName() + "' has already been started");
+        }
+        started = true;
+
+        // Advance the computation of our dialog until a view state
+        // is encountered
+        String viewId = advance(context, null);
+
+        // Navigate to the requested view
+        ViewHandler vh = context.getApplication().getViewHandler();
+        UIViewRoot view = vh.createView(context, viewId);
+        view.setViewId(viewId);
+        context.setViewRoot(view);
+        context.renderResponse();
 
     }
 

Modified: shale/sandbox/shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/SCXMLDialogContext.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/SCXMLDialogContext.java?view=diff&rev=442336&r1=442335&r2=442336
==============================================================================
--- shale/sandbox/shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/SCXMLDialogContext.java (original)
+++ shale/sandbox/shale-dialog2-scxml/src/main/java/org/apache/shale/dialog2/scxml/SCXMLDialogContext.java Mon Sep 11 13:29:40 2006
@@ -184,6 +184,12 @@
     }
 
 
+    /** {@inheritDoc} */
+    public void start(FacesContext context) {
+        throw new UnsupportedOperationException(); // FIXME - implement this
+    }
+
+
     // ------------------------------------------------- Package Private Methods
 
 

Modified: shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/DialogContext.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/DialogContext.java?view=diff&rev=442336&r1=442335&r2=442336
==============================================================================
--- shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/DialogContext.java (original)
+++ shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/DialogContext.java Mon Sep 11 13:29:40 2006
@@ -99,4 +99,19 @@
     public String advance(FacesContext context, String outcome);
 
 
+    /**
+     * <p>Start the execution of the state machine underlying this newly
+     * created dialog context instance, advancing through states until the
+     * dialog definition determines that it is necessary to navigate to a
+     * particular JavaServer Faces view.  Then, navigate to that view, call
+     * <code>FacesContext.renderResponse()</code>, and return.</p>
+     *
+     * @param context FacesContext for the current request
+     *
+     * @exception IllegalStateException if this {@link DialogContext}
+     *  instance has already been started
+     */
+    public void start(FacesContext context);
+
+
 }

Modified: shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/faces/Dialog2NavigationHandler.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/faces/Dialog2NavigationHandler.java?view=diff&rev=442336&r1=442335&r2=442336
==============================================================================
--- shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/faces/Dialog2NavigationHandler.java (original)
+++ shale/sandbox/shale-dialog2/src/main/java/org/apache/shale/dialog2/faces/Dialog2NavigationHandler.java Mon Sep 11 13:29:40 2006
@@ -115,14 +115,14 @@
         if (dcontext == null) {
             if ((outcome != null) && outcome.startsWith(Constants.DIALOG_PREFIX)) {
                 dcontext = create(context, outcome.substring(Constants.DIALOG_PREFIX.length()));
-                viewId = advance(context, dcontext, null);
+                dcontext.start(context);
                 if (log.isDebugEnabled()) {
                     log.debug("Starting dialog '"
                               + outcome.substring(Constants.DIALOG_PREFIX.length())
                               + "' for FacesContext instance '"
-                              + context + "' with navigation to viewId '"
-                              + viewId + "'");
+                              + context + "'");
                 }
+                return;
             } else {
                 original.handleNavigation(context, fromAction, outcome);
                 return;

Modified: shale/sandbox/shale-test-dialog2-legacy/src/main/java/org/apache/shale/examples/test/dialog2/legacy/Wizard.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-test-dialog2-legacy/src/main/java/org/apache/shale/examples/test/dialog2/legacy/Wizard.java?view=diff&rev=442336&r1=442335&r2=442336
==============================================================================
--- shale/sandbox/shale-test-dialog2-legacy/src/main/java/org/apache/shale/examples/test/dialog2/legacy/Wizard.java (original)
+++ shale/sandbox/shale-test-dialog2-legacy/src/main/java/org/apache/shale/examples/test/dialog2/legacy/Wizard.java Mon Sep 11 13:29:40 2006
@@ -119,16 +119,7 @@
           context.getApplication().getVariableResolver().
           resolveVariable(context, Constants.MANAGER_BEAN);
         DialogContext dcontext = manager.create(context, "wizard");
-
-        // FIXME - impedance mismatch on returning outcome versus viewId
-        String viewId = dcontext.advance(context, null);
-
-        // FIXME - usability issue: can we encapsulate this logic?
-        ViewHandler vh = context.getApplication().getViewHandler();
-        UIViewRoot view = vh.createView(context, viewId);
-        view.setViewId(viewId);
-        context.setViewRoot(view);
-        context.renderResponse();
+        dcontext.start(context);
         return null;
 
     }