craigmcc    2002/07/05 15:03:16

  Modified:    src/share/org/apache/struts/util RequestUtils.java
               src/test/org/apache/struts/util TestRequestUtils.java
  Log:
  It makes much more sense for actionURL(), forwardURL(), and pageURL() to
  return context-relative URLs instead of server-relative URLs.
  
  Revision  Changes    Path
  1.44      +16 -18    
jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java
  
  Index: RequestUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- RequestUtils.java 5 Jul 2002 20:56:27 -0000       1.43
  +++ RequestUtils.java 5 Jul 2002 22:03:16 -0000       1.44
  @@ -412,10 +412,12 @@
               if (fc.getRedirect()) {
                   redirect = true;
               }
  +            url.append(request.getContextPath());
               url.append(forwardURL(request, fc));
           } else if (href != null) {
               url.append(href);
           } else /* if (page != null) */ {
  +            url.append(request.getContextPath());
               url.append(pageURL(request, page));
           }
   
  @@ -1139,20 +1141,21 @@
   
   
       /**
  -     * Return the server-relative URL that corresponds to the specified
  +     * Return the context-relative URL that corresponds to the specified
        * {@link ActionConfig}, relative to the sub-application associated
        * with the current subapp's {@link ApplicationConfig}.
        *
        * @param request The servlet request we are processing
        * @param action ActionConfig to be evaluated
        * @param pattern URL pattern used to map the controller servlet
  +     *
  +     * @since Struts 1.1b2
        */
       public static String actionURL(HttpServletRequest request,
                                      ActionConfig action,
                                      String pattern) {
   
           StringBuffer sb = new StringBuffer();
  -        sb.append(request.getContextPath());
           if (pattern.endsWith("/*")) {
               sb.append(pattern.substring(0, pattern.length() - 2));
               sb.append(action.getPath());
  @@ -1171,12 +1174,14 @@
   
   
       /**
  -     * Return the server-relative URL that corresponds to the specified
  +     * Return the context-relative URL that corresponds to the specified
        * {@link ForwardConfig}, relative to the sub-application associated
        * with the current subapp's {@link ApplicationConfig}.
        *
        * @param request The servlet request we are processing
        * @param forward ForwardConfig to be evaluated
  +     *
  +     * @since Struts 1.1b2
        */
       public static String forwardURL(HttpServletRequest request,
                                       ForwardConfig forward) {
  @@ -1184,19 +1189,17 @@
           // Handle a ForwardConfig marked as context relative
           StringBuffer sb = new StringBuffer();
           if (forward.getContextRelative()) {
  -            sb.append(request.getContextPath());
               sb.append(forward.getPath());
               return (sb.toString());
           }
   
  -        // Calculate a subapp relative path for this ForwardConfig
  +        // Calculate a context relative path for this ForwardConfig
           ApplicationConfig appConfig = (ApplicationConfig)
               request.getAttribute(Action.APPLICATION_KEY);
           String forwardPattern =
               appConfig.getControllerConfig().getForwardPattern();
           if (forwardPattern == null) {
               // Performance optimization for previous default behavior
  -            sb.append(request.getContextPath());
               sb.append(appConfig.getPrefix());
               sb.append(forward.getPath());
           } else {
  @@ -1205,9 +1208,6 @@
                   char ch = forwardPattern.charAt(i);
                   if (dollar) {
                       switch (ch) {
  -                    case 'C':
  -                        sb.append(request.getContextPath());
  -                        break;
                       case 'A':
                           sb.append(appConfig.getPrefix());
                           break;
  @@ -1235,7 +1235,7 @@
   
   
       /**
  -     * Return the server-relative URL that corresponds to the specified
  +     * Return the context-relative URL that corresponds to the specified
        * <code>page</code> attribute value, calculated based on the
        * <code>pagePattern</code> property of the current subapp's
        * {@link ApplicationConfig}.
  @@ -1243,6 +1243,8 @@
        * @param request The servlet request we are processing
        * @param page The application-relative URL to be substituted in
        *  to the <code>pagePattern</code> pattern for the current subapp
  +     *
  +     * @since Struts 1.1b2
        */
       public static String pageURL(HttpServletRequest request,
                                    String page) {
  @@ -1253,7 +1255,6 @@
           String pagePattern =
               appConfig.getControllerConfig().getPagePattern();
           if (pagePattern == null) {
  -            sb.append(request.getContextPath());
               sb.append(appConfig.getPrefix());
               sb.append(page);
           } else {
  @@ -1262,9 +1263,6 @@
                   char ch = pagePattern.charAt(i);
                   if (dollar) {
                       switch (ch) {
  -                    case 'C':
  -                        sb.append(request.getContextPath());
  -                        break;
                       case 'A':
                           sb.append(appConfig.getPrefix());
                           break;
  
  
  
  1.5       +7 -7      
jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java
  
  Index: TestRequestUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestRequestUtils.java     5 Jul 2002 20:56:27 -0000       1.4
  +++ TestRequestUtils.java     5 Jul 2002 22:03:16 -0000       1.5
  @@ -164,7 +164,7 @@
               (request, appConfig.findActionConfig("/dynamic"), "*.do");
           assertNotNull("URL was returned", url);
           assertEquals("URL value",
  -                     "/myapp/dynamic.do",
  +                     "/dynamic.do",
                        url);
   
       }
  @@ -179,7 +179,7 @@
               (request, appConfig2.findActionConfig("/dynamic2"), "*.do");
           assertNotNull("URL was returned", url);
           assertEquals("URL value",
  -                     "/myapp/2/dynamic2.do",
  +                     "/2/dynamic2.do",
                        url);
   
       }
  @@ -194,7 +194,7 @@
               (request, appConfig.findActionConfig("/dynamic"), "/do/*");
           assertNotNull("URL was returned", url);
           assertEquals("URL value",
  -                     "/myapp/do/dynamic",
  +                     "/do/dynamic",
                        url);
   
       }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to