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 2005/12/22 00:06:15 UTC

svn commit: r358414 - in /beehive/trunk/netui: src/compiler-core/org/apache/beehive/netui/compiler/genmodel/ src/compiler-core/org/apache/beehive/netui/compiler/model/ src/pageflow/org/apache/beehive/netui/pageflow/ src/pageflow/org/apache/beehive/netu...

Author: crogers
Date: Wed Dec 21 15:05:50 2005
New Revision: 358414

URL: http://svn.apache.org/viewcvs?rev=358414&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-1030 - Class-level @Jpf.Forward annotations do not work with inheritLocalPaths=true.

tests: drt, bvt in netui (WinXP)


Added:
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml   (with props)
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java   (with props)
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp   (with props)
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/
    beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java   (with props)
Modified:
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenForwardModel.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowActionForward.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenForwardModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenForwardModel.java?rev=358414&r1=358413&r2=358414&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenForwardModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenForwardModel.java Wed Dec 21 15:05:50 2005
@@ -128,7 +128,19 @@
                 contextRelative = false;
                 
                 // If it's an absolute URL, then the path shouldn't have a slash inserted in front of it.
-                if ( ! CompilerUtils.isAbsoluteURL( path ) ) path = '/' + path;
+                if ( ! CompilerUtils.isAbsoluteURL( path ) )
+                {
+                    path = '/' + path;
+
+                    // See if we should be using the path for the struts module that this forward is relative to
+                    TypeDeclaration typeDeclaration = annotation.getContainingType();
+
+                    if ( ! typeDeclaration.equals( jclass ) && ! path.endsWith( ACTION_EXTENSION_DOT )
+                            && parent.getFlowControllerInfo().getMergedControllerAnnotation().isInheritLocalPaths() )
+                    {
+                        setRelativeTo( CompilerUtils.inferModulePathFromType( typeDeclaration ) );
+                    }
+                }
             }
             
             setPath( path );
@@ -140,7 +152,7 @@
         if ( commentSuffix != null )
         {
             setComment( "forward \"" + getName() + '"' + commentSuffix );  // @TODO I18N the comment
-        }        
+        }
     }
     
     static void addForwards( AnnotationInstance annotation, ForwardContainer container, ClassDeclaration jclass,

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java?rev=358414&r1=358413&r2=358414&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java Wed Dec 21 15:05:50 2005
@@ -45,6 +45,7 @@
     private boolean _hasExplicitRedirectValue = false;
     private List _actionOutputs = null;
     private boolean _restoreQueryString = false;
+    private String _relativeTo;
 
 
     protected ForwardModel( StrutsApp parent )
@@ -109,6 +110,7 @@
         if ( _isNestedReturn ) addSetProperty( xw, element, "nestedReturn", "true" );
         if ( _outputFormBeanType != null ) addSetProperty( xw, element, "returnFormType", _outputFormBeanType );
         if ( _outputFormBeanMember != null ) addSetProperty( xw, element, "returnFormMember", _outputFormBeanMember );
+        if ( _relativeTo != null ) addSetProperty( xw, element, "relativeTo", _relativeTo );
     }
 
     public boolean isReturnToPage()
@@ -273,5 +275,14 @@
     protected void addSetProperty( XmlModelWriter xw, Element element, String propertyName, String propertyValue )
     {
         setCustomProperty(xw, element, propertyName, propertyValue, JPF_ACTION_FWD_CLASSNAME);
+    }
+
+    /**
+     * Set the path for the struts module that this forward is relative to.
+     * @param relativeTo The struts module path that this forward is relative to.
+     */
+    public void setRelativeTo( String relativeTo )
+    {
+        _relativeTo = relativeTo;
     }
 }

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java?rev=358414&r1=358413&r2=358414&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/Forward.java Wed Dec 21 15:05:50 2005
@@ -111,6 +111,7 @@
     private boolean _restoreQueryString = false;
     private boolean _externalRedirect = false;
     private boolean _outsidePageFlowDirectory = false;
+    private String _relativeTo;
     
     /**
      * An alternate ModuleConfig from which to resolve forwards if they are not resolved
@@ -497,7 +498,8 @@
             _redirectSpecifiedOnAnnotation = fc.hasExplicitRedirectValue();
             _restoreQueryString = fc.isRestoreQueryString();
             _externalRedirect = fc.isExternalRedirect();
-            
+            _relativeTo = fc.getRelativeTo();
+
             Class returnFormClass = null;
             
             if ( _outputFormBeanType != null )
@@ -1077,7 +1079,13 @@
      */
     public void initializeRelativePath(ServletRequest request, String relativeTo) 
     {
-        assert relativeTo != null;
+        if ( relativeTo == null )
+        {
+            relativeTo = _relativeTo;
+        }
+
+        if ( relativeTo == null ) return;
+
         assert ! relativeTo.endsWith("/") : relativeTo;
         String path = getPath();
          

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowActionForward.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowActionForward.java?rev=358414&r1=358413&r2=358414&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowActionForward.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowActionForward.java Wed Dec 21 15:05:50 2005
@@ -37,6 +37,7 @@
     private ArrayList _actionOutputs;
     private boolean _restoreQueryString;
     private boolean _externalRedirect = false;
+    private String _relativeTo;
 
 
     public boolean isNestedReturn()
@@ -117,6 +118,16 @@
     public void setExternalRedirect(boolean externalRedirect)
     {
         _externalRedirect = externalRedirect;
+    }
+
+    public String getRelativeTo()
+    {
+        return _relativeTo;
+    }
+
+    public void setRelativeTo( String relativeTo )
+    {
+        _relativeTo = relativeTo;
     }
 
     public static class ActionOutput implements Serializable

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=358414&r1=358413&r2=358414&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 Dec 21 15:05:50 2005
@@ -187,6 +187,10 @@
                     fwd = pageFlowFwd;
                 }
             }
+            else if ( fwd instanceof Forward )
+            {
+                ( ( Forward ) fwd ).initializeRelativePath(request, null);
+            }
             
             if ( _log.isDebugEnabled() )
             {

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=358414&r1=358413&r2=358414&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Wed Dec 21 15:05:50 2005
@@ -4973,6 +4973,16 @@
          </categories>
       </test>
       <test>
+         <name>J1030</name>
+         <description>Test Class-level @Jpf.Forward annotations with inheritLocalPaths=true in the derived class.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>jiraBugs</category>
+         </categories>
+      </test>
+      <test>
          <name>JpfScopedFormsTest49</name>
          <description>JpfScopedFormsTest49</description>
          <webapp>coreWeb</webapp>

Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml?rev=358414&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml Wed Dec 21 15:05:50 2005
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<recorderSession xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+<sessionName>J1030</sessionName>
+<tester>crogers</tester>
+<startDate>21 Dec 2005, 02:46:17.923 PM MST</startDate>
+<description>Test Class-level @Jpf.Forward annotations with inheritLocalPaths=true in the derived class.</description>
+<tests>
+<test>
+<testNumber>1</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/bugs/j1030/derived/Controller.jpf</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>16885510347D9A1C7CA964A3040D40DC</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>UTF-8,*</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=16885510347D9A1C7CA964A3040D40DC</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <title>inheritLocalPaths=true</title>
+        <base href="http://localhost:8080/coreWeb/bugs/j1030/base/index.jsp">
+    </head>
+    <body>
+        <h3>base!</h3>
+        <p>Derived Controller has annotation inheritLocalPaths=true</p>
+
+        <a href="/coreWeb/bugs/j1030/derived/begin.do">begin</a>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+</tests>
+<endDate>21 Dec 2005, 02:46:34.156 PM MST</endDate>
+<testCount>1</testCount>
+</recorderSession>

Propchange: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/J1030.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java?rev=358414&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java (added)
+++ beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java Wed Dec 21 15:05:50 2005
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005 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 bugs.j1030.base;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    forwards={
+        @Jpf.Forward(name="index", path="index.jsp")
+    }
+)
+public abstract class Controller extends PageFlowController
+{
+}

Propchange: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/Controller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp?rev=358414&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp Wed Dec 21 15:05:50 2005
@@ -0,0 +1,18 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+
+<netui:html>
+    <head>
+        <title>inheritLocalPaths=true</title>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <h3>base!</h3>
+        <p>Derived Controller has annotation inheritLocalPaths=true</p>
+
+        <netui:anchor action="begin">begin</netui:anchor>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/base/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java?rev=358414&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java (added)
+++ beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java Wed Dec 21 15:05:50 2005
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2005 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 bugs.j1030.derived;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    inheritLocalPaths=true
+)
+public class Controller extends bugs.j1030.base.Controller
+{
+    @Jpf.Action()
+    public Forward begin()
+    {
+        return new Forward("index");
+    }
+}

Propchange: beehive/trunk/netui/test/webapps/drt/web/bugs/j1030/derived/Controller.java
------------------------------------------------------------------------------
    svn:eol-style = native