You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cr...@apache.org on 2006/03/29 16:30:26 UTC

svn commit: r389801 - in /beehive/trunk: netui/src/pageflow/org/apache/beehive/netui/pageflow/ netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/ netui/src/tags-html/org/apache/bee...

Author: crogers
Date: Wed Mar 29 06:30:20 2006
New Revision: 389801

URL: http://svn.apache.org/viewcvs?rev=389801&view=rev
Log:
Implemented the design change to modify the popup window ActionForward handling to forward to a framework servlet. http://issues.apache.org/jira/browse/BEEHIVE-1073

Includes updates to beehive-netui-config.xml to add the Command class for rendering the javascript response to close the popup window and web.xml for servlet mapping of the command.

tests: bvt in netui, built and ran samples (WinXP)


Added:
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java   (with props)
Modified:
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ReturnActionViewRenderer.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java
    beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/internal/beehive-netui-config-default.xml
    beehive/trunk/netui/src/webapp-template/default/WEB-INF/beehive-netui-config.xml
    beehive/trunk/netui/src/webapp-template/default/WEB-INF/web.xml
    beehive/trunk/netui/test/webapps/drt/web/WEB-INF/beehive-netui-config.xml
    beehive/trunk/netui/test/webapps/drt/web/WEB-INF/web.xml
    beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.jsf-ri
    beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.myfaces
    beehive/trunk/netui/test/webapps/urlTemplates/web/WEB-INF/web.xml
    beehive/trunk/samples/netui-samples/web/WEB-INF/beehive-netui-config.xml
    beehive/trunk/samples/netui-samples/web/WEB-INF/web.xml

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowConstants.java Wed Mar 29 06:30:20 2006
@@ -144,10 +144,40 @@
     
     /**
      * The name of an automatically-generated Forward that can be used from <i>any</i> Page Flow action, in situations
-     * where the framework can handle the response itself.  Currently, this happens when a nested page flow returns
+     * where a framework servlet can handle the response itself.  Currently, this happens when a nested page flow returns
      * after being shown in a popup window.  In the calling page flow, the handler for the return action would return
      * something like <code>new Forward("_auto")</code>, and the framework would write out the correct javascript to
      * close the popup window.
      */ 
     public static final String AUTO_VIEW_RENDER_FORWARD_NAME = "_auto";
+
+    /**
+     * The default value of the extension used in the servlet path of the URI for a Forward to the
+     * framework servlet rendering the response. (See {@link AUTO_VIEW_RENDER_FORWARD_NAME}) The
+     * extension is part of the &lt;url-pattern&gt; used to map a NetUI ViewRenderer Forward to the Servlet
+     * handling the rendering.
+     */
+    public static String DEFAULT_VIEW_RENDERING_EXTENSION = "render";
+
+    /**
+     * The &lt;param-name&gt; of a web-app &lt;context-param&gt; used to configure the extension used
+     * in the servlet path of the URI for a Forward to the framework servlet rendering the response.
+     * (See {@link AUTO_VIEW_RENDER_FORWARD_NAME}) The value for the extension should match the
+     * extension in the &lt;url-pattern&gt; used to map a NetUI ViewRenderer Forward to the Servlet
+     * handling the rendering. Setting the associated &lt;param-value&gt; overrides the default value
+     * of the "render" extension in the servlet-mapping, &lt;url-pattern&gt;*.render&lt;/url-pattern&gt;.
+     */
+    public static String VIEW_RENDERING_EXTENSION_PARAM = "ViewRenderingExtension";
+
+    /**
+     * The request attribute name for the view renderer object used by a
+     * framework servlet to render the response.
+     */
+    public static String VIEW_RENDERER_ATTRIBUTE_NAME = "NetuiViewRenderer";
+
+    /**
+     * A string used in the path of the URI that identifies the command for the framework servlet
+     * to render a ViewRenderer (an attribute on the request) in the response.
+     */
+    public static String VIEW_RENDERER_URI_COMMAND = "returnActionViewRenderer";
 }

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java Wed Mar 29 06:30:20 2006
@@ -251,11 +251,25 @@
         
         if ( vr != null )
         {
-            _log.debug( "null ActionForward -- delegating to ViewRenderer " + vr + " to handle response." );
+            _log.debug( "ActionForward -- delegating to ViewRenderer " + vr + " to handle response." );
             
             try
             {
-                vr.renderView( request, response, getServletContext() );
+                request.setAttribute(PageFlowConstants.VIEW_RENDERER_ATTRIBUTE_NAME, vr);
+
+                String ext = getServletContext().getInitParameter(PageFlowConstants.VIEW_RENDERING_EXTENSION_PARAM);
+                if (ext == null || ext.length() == 0) {
+                    ext = PageFlowConstants.DEFAULT_VIEW_RENDERING_EXTENSION;
+                }
+
+                InternalStringBuilder path = new InternalStringBuilder(64);
+                path.append("/");
+                path.append(PageFlowConstants.VIEW_RENDERER_URI_COMMAND);
+                path.append(".").append(ext);
+
+                ActionForward fwd = new ActionForward( path.toString(), false );
+                fwd.setContextRelative( true );
+                return fwd;
             }
             catch ( Throwable th )
             {

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java Wed Mar 29 06:30:20 2006
@@ -57,7 +57,7 @@
         return handleCommand(cmd, request, response);
     }
 
-    public void preRequest(RequestInterceptorContext ctxt, InterceptorChain chain)
+    public void preRequest(RequestInterceptorContext ctxt, InterceptorChain chain) throws InterceptorException
     {
         HttpServletRequest request = ctxt.getRequest();
         HttpServletResponse response = ctxt.getResponse();
@@ -69,6 +69,8 @@
         String cmd = getCommand(uri, ctxtPath);
 
         handleCommand(cmd, request, response);
+
+        chain.continueChain();
     }
 
     public void postRequest(RequestInterceptorContext context, InterceptorChain chain) throws InterceptorException
@@ -86,7 +88,7 @@
 
     private void handlePageSwitch(HttpServletRequest request, HttpServletResponse response)
     {
-        // create an XML empty document, that isn't cached on the client        
+        // create an XML empty document, that isn't cached on the client
         response.setContentType("text/xml");
         response.setHeader("Pragma", "No-cache");
         response.setHeader("Cache-Control", "no-cache");

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ReturnActionViewRenderer.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ReturnActionViewRenderer.java?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ReturnActionViewRenderer.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ReturnActionViewRenderer.java Wed Mar 29 06:30:20 2006
@@ -92,11 +92,16 @@
         _callbackFunc = request.getParameter(CALLBACK_PARAM);
     }
 
-    // @todo: JavaScript?
+    /**
+     * Render the JavaScript for this framework response to a popup window.
+     * The JavaScript passes a map of field values from the popup back to
+     * a JavaScript routine on the originating page updating its form fields.
+     * (See {@link org.apache.beehive.netui.tags.html.ConfigurePopup})
+     * The javascript also closes the popup window.
+     */
     public void renderView(ServletRequest request, ServletResponse response, ServletContext servletContext)
             throws IOException
     {
-        response.setContentType("text/html; charset=UTF-8");
         ResponseRenderAppender appender = new ResponseRenderAppender(response);
         ScriptTag.State state = new ScriptTag.State();
         ScriptTag br = (ScriptTag) TagRenderingBase.Factory.getRendering(TagRenderingBase.SCRIPT_TAG, request);

Added: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java?rev=389801&view=auto
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java (added)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java Wed Mar 29 06:30:20 2006
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.tags.internal;
+
+import org.apache.beehive.netui.core.chain.Command;
+import org.apache.beehive.netui.core.chain.Context;
+import org.apache.beehive.netui.core.chain.web.WebChainContext;
+import org.apache.beehive.netui.pageflow.PageFlowConstants;
+import org.apache.beehive.netui.pageflow.interceptor.InterceptorChain;
+import org.apache.beehive.netui.pageflow.interceptor.InterceptorException;
+import org.apache.beehive.netui.pageflow.interceptor.request.RequestInterceptorContext;
+import org.apache.beehive.netui.pageflow.internal.ViewRenderer;
+import org.apache.beehive.netui.tags.AbstractClientRequestInterceptor;
+import org.apache.beehive.netui.util.logging.Logger;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * An object to handle a command for rendering framework generated output.
+ */
+public final class ViewRendererCRI
+    extends AbstractClientRequestInterceptor
+    implements Command
+{
+    private static final Logger logger = Logger.getInstance(ViewRendererCRI.class);
+
+    public boolean execute(Context context)
+        throws Exception {
+
+        assert context != null;
+        assert context instanceof WebChainContext;
+        assert ((WebChainContext)context).getServletRequest() instanceof HttpServletRequest;
+        assert ((WebChainContext)context).getServletResponse() instanceof HttpServletResponse;
+
+        WebChainContext webChainContext = (WebChainContext)context;
+        HttpServletRequest request = (HttpServletRequest)webChainContext.getServletRequest();
+        HttpServletResponse response = (HttpServletResponse)webChainContext.getServletResponse();
+
+        // Create the command by striping off the context path and the extension
+        String uri = request.getRequestURI();
+        String ctxtPath = request.getContextPath();
+        String cmd = getCommand(uri, ctxtPath);
+
+        return handleCommand(request, response, webChainContext.getServletContext(), cmd);
+    }
+
+    public void preRequest(RequestInterceptorContext ctxt, InterceptorChain chain) throws InterceptorException
+    {
+        HttpServletRequest request = ctxt.getRequest();
+
+        // Create the command by striping off the context path and the extension
+        String uri = request.getRequestURI();
+        String ctxtPath = request.getContextPath();
+        String cmd = getCommand(uri, ctxtPath);
+
+        handleCommand(request, ctxt.getResponse(), ctxt.getServletContext(), cmd);
+
+        chain.continueChain();
+    }
+
+    public void postRequest(RequestInterceptorContext context, InterceptorChain chain) throws InterceptorException
+    {
+        chain.continueChain();
+    }
+
+    private boolean handleCommand(HttpServletRequest request,
+                                  HttpServletResponse response,
+                                  ServletContext servletContext,
+                                  String command) {
+        if (PageFlowConstants.VIEW_RENDERER_URI_COMMAND.equals(command)) {
+            handleViewRendering(request, response, servletContext);
+            return true;
+        }
+        else return false;
+    }
+
+    private void handleViewRendering(HttpServletRequest request,
+                                     ServletResponse response,
+                                     ServletContext servletContext)
+    {
+        // get the view renderer from the request attribute
+        Object obj = request.getAttribute(PageFlowConstants.VIEW_RENDERER_ATTRIBUTE_NAME);
+        if (obj == null) {
+            logger.error("ViewRenderer was not found in the NameService");
+            return;
+        }
+        if (!(obj instanceof ViewRenderer)) {
+            logger.error("Named view renderer was not an instance of a ViewRenderer");
+            return;
+        }
+
+        ViewRenderer vr = (ViewRenderer) obj;
+
+        // render the response
+        try {
+            /*
+             * Note, this is our own framework response and just javascript
+             * that calls a javascript routine in another window, passing
+             * Unicode String values in a map.
+             * For now, we're setting the content type, but this may be a
+             * problem for people who whant to control the encoding and the
+             * content type themselves, as with a JSP.
+             * If so, then they can implement their own Command to handle the
+             * ViewRenderer objects.
+             */
+            response.setContentType("text/html; charset=UTF-8");
+
+            vr.renderView(request, response, servletContext);
+            request.removeAttribute(PageFlowConstants.VIEW_RENDERER_ATTRIBUTE_NAME);
+        }
+        catch (IOException ioe) {
+            logger.error("Named view renderer was not able to render");
+        }
+    }
+}

Propchange: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/ViewRendererCRI.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java Wed Mar 29 06:30:20 2006
@@ -114,7 +114,7 @@
         try {
             int dot = cmd.lastIndexOf('.');
             int slash = cmd.lastIndexOf('/');
-            if (slash != -1 && slash != -1) {
+            if (dot != -1 && slash != -1 && slash < dot) {
                 cmd = cmd.substring(slash + 1, dot);
             }
         }

Modified: beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/internal/beehive-netui-config-default.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/internal/beehive-netui-config-default.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/internal/beehive-netui-config-default.xml (original)
+++ beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/internal/beehive-netui-config-default.xml Wed Mar 29 06:30:20 2006
@@ -57,6 +57,9 @@
             <command>
                 <command-class>org.apache.beehive.netui.tags.divpanel.DivPanelCRI</command-class>
             </command>
+            <command>
+                <command-class>org.apache.beehive.netui.tags.internal.ViewRendererCRI</command-class>
+            </command>
         </chain>
     </catalog>
-</netui-config>
\ No newline at end of file
+</netui-config>

Modified: beehive/trunk/netui/src/webapp-template/default/WEB-INF/beehive-netui-config.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/webapp-template/default/WEB-INF/beehive-netui-config.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/webapp-template/default/WEB-INF/beehive-netui-config.xml (original)
+++ beehive/trunk/netui/src/webapp-template/default/WEB-INF/beehive-netui-config.xml Wed Mar 29 06:30:20 2006
@@ -36,6 +36,9 @@
             <command>
                 <command-class>org.apache.beehive.netui.tags.divpanel.DivPanelCRI</command-class>
             </command>
+            <command>
+                <command-class>org.apache.beehive.netui.tags.internal.ViewRendererCRI</command-class>
+            </command>
         </chain>
     </catalog>
 

Modified: beehive/trunk/netui/src/webapp-template/default/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/webapp-template/default/WEB-INF/web.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/src/webapp-template/default/WEB-INF/web.xml (original)
+++ beehive/trunk/netui/src/webapp-template/default/WEB-INF/web.xml Wed Mar 29 06:30:20 2006
@@ -101,8 +101,8 @@
 
     <!-- The XmlHttpRequest handler Servlet -->
     <servlet>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
     </servlet>
 
     <!-- Struts Action Servlet Mappings -->
@@ -120,8 +120,13 @@
 
     <!-- XmlHttpRequest Servlet -->
     <servlet-mapping>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <url-pattern>*.xhr</url-pattern>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.xhr</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.render</url-pattern>
     </servlet-mapping>
 
     <welcome-file-list>

Modified: beehive/trunk/netui/test/webapps/drt/web/WEB-INF/beehive-netui-config.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/WEB-INF/beehive-netui-config.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/WEB-INF/beehive-netui-config.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/web/WEB-INF/beehive-netui-config.xml Wed Mar 29 06:30:20 2006
@@ -207,6 +207,9 @@
             <command>
                 <command-class>org.apache.beehive.netui.tags.divpanel.DivPanelCRI</command-class>
             </command>
+            <command>
+                <command-class>org.apache.beehive.netui.tags.internal.ViewRendererCRI</command-class>
+            </command>
         </chain>
     </catalog>
 </netui-config>

Modified: beehive/trunk/netui/test/webapps/drt/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/WEB-INF/web.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/WEB-INF/web.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/web/WEB-INF/web.xml Wed Mar 29 06:30:20 2006
@@ -160,6 +160,11 @@
     <url-pattern>*.xhr</url-pattern>
   </servlet-mapping>
 
+  <servlet-mapping>
+    <servlet-name>XmlHttpRequestServlet</servlet-name>
+    <url-pattern>*.render</url-pattern>
+  </servlet-mapping>
+
   <!-- TestRecorder Control Servlet -->
   <servlet-mapping>
     <servlet-name>TestRecorderServlet</servlet-name>

Modified: beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.jsf-ri
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.jsf-ri?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.jsf-ri (original)
+++ beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.jsf-ri Wed Mar 29 06:30:20 2006
@@ -149,6 +149,11 @@
     <url-pattern>*.xhr</url-pattern>
   </servlet-mapping>
 
+  <servlet-mapping>
+    <servlet-name>XmlHttpRequestServlet</servlet-name>
+    <url-pattern>*.render</url-pattern>
+  </servlet-mapping>
+
   <!-- Faces Servlet -->
   <servlet>
       <servlet-name>Faces Servlet</servlet-name>

Modified: beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.myfaces
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.myfaces?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.myfaces (original)
+++ beehive/trunk/netui/test/webapps/jsf/web/WEB-INF/web.xml.myfaces Wed Mar 29 06:30:20 2006
@@ -156,6 +156,11 @@
       <url-pattern>*.xhr</url-pattern>
     </servlet-mapping>
 
+    <servlet-mapping>
+      <servlet-name>XmlHttpRequestServlet</servlet-name>
+      <url-pattern>*.render</url-pattern>
+    </servlet-mapping>
+
     <!-- Faces Servlet -->
     <servlet>
         <servlet-name>Faces Servlet</servlet-name>

Modified: beehive/trunk/netui/test/webapps/urlTemplates/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/urlTemplates/web/WEB-INF/web.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/urlTemplates/web/WEB-INF/web.xml (original)
+++ beehive/trunk/netui/test/webapps/urlTemplates/web/WEB-INF/web.xml Wed Mar 29 06:30:20 2006
@@ -100,8 +100,8 @@
 
     <!-- The XmlHttpRequest handler Servlet -->
     <servlet>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
     </servlet>
 
     <!-- Struts Action Servlet Mappings -->
@@ -119,8 +119,13 @@
 
     <!-- XmlHttpRequest Servlet -->
     <servlet-mapping>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <url-pattern>*.xhr</url-pattern>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.xhr</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.render</url-pattern>
     </servlet-mapping>
 
     <!-- TestRecorder Control Servlet -->

Modified: beehive/trunk/samples/netui-samples/web/WEB-INF/beehive-netui-config.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/samples/netui-samples/web/WEB-INF/beehive-netui-config.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/samples/netui-samples/web/WEB-INF/beehive-netui-config.xml (original)
+++ beehive/trunk/samples/netui-samples/web/WEB-INF/beehive-netui-config.xml Wed Mar 29 06:30:20 2006
@@ -36,17 +36,6 @@
         </login-handler>
     </pageflow-handlers>
 
-    <request-interceptors>
-        <global>
-            <request-interceptor>
-                <interceptor-class>org.apache.beehive.netui.tags.tree.TreeCRI</interceptor-class>
-            </request-interceptor>
-            <request-interceptor>
-                <interceptor-class>org.apache.beehive.netui.tags.divpanel.DivPanelCRI</interceptor-class>
-            </request-interceptor>
-        </global>
-    </request-interceptors>
-
     <prefix-handlers>
         <prefix-handler>
             <name>checkbox_key</name>
@@ -65,5 +54,19 @@
             <handler-class>org.apache.beehive.netui.tags.html.Select$SelectPrefixHandler</handler-class>
         </prefix-handler>
     </prefix-handlers>
+
+    <catalog>
+        <chain name="xhr-commands">
+            <command>
+                <command-class>org.apache.beehive.netui.tags.tree.TreeCRI</command-class>
+            </command>
+            <command>
+                <command-class>org.apache.beehive.netui.tags.divpanel.DivPanelCRI</command-class>
+            </command>
+            <command>
+                <command-class>org.apache.beehive.netui.tags.internal.ViewRendererCRI</command-class>
+            </command>
+        </chain>
+    </catalog>
 
 </netui-config>

Modified: beehive/trunk/samples/netui-samples/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/samples/netui-samples/web/WEB-INF/web.xml?rev=389801&r1=389800&r2=389801&view=diff
==============================================================================
--- beehive/trunk/samples/netui-samples/web/WEB-INF/web.xml (original)
+++ beehive/trunk/samples/netui-samples/web/WEB-INF/web.xml Wed Mar 29 06:30:20 2006
@@ -101,8 +101,8 @@
 
     <!-- The XmlHttpRequest handler Servlet -->
     <servlet>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
     </servlet>
 
     <!-- Struts Action Servlet Mappings -->
@@ -120,8 +120,13 @@
 
     <!-- XmlHttpRequest Servlet -->
     <servlet-mapping>
-      <servlet-name>XmlHttpRequestServlet</servlet-name>
-      <url-pattern>*.xhr</url-pattern>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.xhr</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>XmlHttpRequestServlet</servlet-name>
+        <url-pattern>*.render</url-pattern>
     </servlet-mapping>
 
     <welcome-file-list>