husted      2004/02/07 07:55:02

  Modified:    src/share/org/apache/struts/taglib TagUtils.java
               src/share/org/apache/struts/taglib/bean IncludeTag.java
               src/share/org/apache/struts/taglib/html ImgTag.java
                        LinkTag.java RewriteTag.java
               src/share/org/apache/struts/taglib/logic RedirectTag.java
               src/share/org/apache/struts/util ModuleUtils.java
                        RequestUtils.java
  Log:
  Apply #24235  " html:link tag, plus module support" submitted by Gary Ashley.
  
  Revision  Changes    Path
  1.31      +39 -12    jakarta-struts/src/share/org/apache/struts/taglib/TagUtils.java
  
  Index: TagUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/TagUtils.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- TagUtils.java     19 Jan 2004 04:43:10 -0000      1.30
  +++ TagUtils.java     7 Feb 2004 15:55:02 -0000       1.31
  @@ -311,6 +311,7 @@
                        String href,
                        String page,
                        String action,
  +                     String module,
                        Map params,
                        String anchor,
                        boolean redirect)
  @@ -321,6 +322,7 @@
                                                                href,
                                                                page,
                                                                action,
  +                                                             module,
                                                                params,
                                                                anchor,
                                                                redirect,
  @@ -358,6 +360,7 @@
               String href,
               String page,
               String action,
  +            String module,
               Map params,
               String anchor,
               boolean redirect,
  @@ -370,6 +373,7 @@
                   href,
                   page,
                   action,
  +                module,
                   params,
                   anchor,
                   redirect,
  @@ -383,6 +387,7 @@
                        String href,
                        String page,
                        String action,
  +                     String module,
                        Map params,
                        String anchor,
                        boolean redirect,
  @@ -394,6 +399,7 @@
                                href,
                                page,
                                action,
  +                             module,
                                params,
                                anchor,
                                redirect,
  @@ -439,6 +445,7 @@
               String href,
               String page,
               String action,
  +            String module,
               Map params,
               String anchor,
               boolean redirect,
  @@ -471,7 +478,7 @@
           }
   
           // Look up the module configuration for this request
  -        ModuleConfig config = instance.getModuleConfig(pageContext);
  +        ModuleConfig config = instance.getModuleConfig(module, pageContext);
   
           // Calculate the appropriate URL
           StringBuffer url = new StringBuffer();
  @@ -493,7 +500,7 @@
           } else if (href != null) {
               url.append(href);
           } else if (action != null) {
  -            url.append(instance.getActionMappingURL(action, pageContext));
  +            url.append(instance.getActionMappingURL(action, module, pageContext, 
false));
   
           } else /* if (page != null) */ {
               url.append(request.getContextPath());
  @@ -778,18 +785,18 @@
        * Return the form action converted into a server-relative URL.
        */
       public String getActionMappingURL(String action, PageContext pageContext) {
  -        return getActionMappingURL(action,pageContext,false);
  +        return getActionMappingURL(action,null,pageContext,false);
       }
   
   
       /**
        * Return the form action converted into a server-relative URL.
        */
  -    public String getActionMappingURL(String action, PageContext pageContext, 
boolean contextRelative) {
  +    public String getActionMappingURL(String action, String module, PageContext 
pageContext, boolean contextRelative) {
   
           HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
           StringBuffer value = new StringBuffer(request.getContextPath());
  -        ModuleConfig config = ModuleUtils.getInstance().getModuleConfig(request);
  +        ModuleConfig config = ModuleUtils.getInstance().getModuleConfig(module, 
request, pageContext.getServletContext());
   
           if ((config != null) && (!contextRelative)) {
               value.append(config.getPrefix());
  @@ -903,11 +910,24 @@
        * @return the ModuleConfig object
        */
       public ModuleConfig getModuleConfig(PageContext pageContext) {
  -        return ModuleUtils.getInstance().getModuleConfig(
  -                (HttpServletRequest) pageContext.getRequest(),
  -                pageContext.getServletContext());
  +        return getModuleConfig(
  +                null,
  +                pageContext);
       }
   
  +     /**
  +      * Return the ModuleConfig object for the given prefix if it exists, null if 
otherwise.
  +      * @param module The module prefix
  +      * @param pageContext The page context.
  +      * @return the ModuleConfig object
  +      */
  +     public ModuleConfig getModuleConfig(String module, PageContext pageContext) {
  +             return ModuleUtils.getInstance().getModuleConfig(
  +                             module,
  +                             (HttpServletRequest) pageContext.getRequest(),
  +                             pageContext.getServletContext());
  +     }
  +
       /**
        * Converts the scope name into its corresponding PageContext constant value.
        * @param scopeName Can be "page", "request", "session", or "application" in any
  @@ -1242,6 +1262,13 @@
                       (MessageResources) pageContext.getAttribute(
                               bundle + config.getPrefix(),
                               PageContext.APPLICATION_SCOPE);
  +        }
  +        
  +        if (resources == null) {
  +                     resources =
  +                                     (MessageResources) pageContext.getAttribute(
  +                                                     bundle,
  +                                                     PageContext.APPLICATION_SCOPE);
           }
   
           if (resources == null) {
  
  
  
  1.29      +5 -5      
jakarta-struts/src/share/org/apache/struts/taglib/bean/IncludeTag.java
  
  Index: IncludeTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/IncludeTag.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- IncludeTag.java   13 Jan 2004 12:48:46 -0000      1.28
  +++ IncludeTag.java   7 Feb 2004 15:55:02 -0000       1.29
  @@ -232,7 +232,7 @@
           URL url = null;
           try {
               urlString =
  -                TagUtils.getInstance().computeURLWithCharEncoding(pageContext, 
forward, href, page, null,params, anchor, false, useLocalEncoding);
  +                TagUtils.getInstance().computeURLWithCharEncoding(pageContext, 
forward, href, page, null,null, params, anchor, false, useLocalEncoding);
               if (urlString.indexOf(':') < 0) {
                   HttpServletRequest request = (HttpServletRequest) 
pageContext.getRequest();
                   url = new URL(RequestUtils.requestURL(request), urlString);
  
  
  
  1.38      +18 -5     
jakarta-struts/src/share/org/apache/struts/taglib/html/ImgTag.java
  
  Index: ImgTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/ImgTag.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- ImgTag.java       22 Jan 2004 04:54:13 -0000      1.37
  +++ ImgTag.java       7 Feb 2004 15:55:02 -0000       1.38
  @@ -273,6 +273,19 @@
           this.action = action;
       }
   
  +     /**
  +      * The module prefix (beginning with a slash) which will be
  +      * used to find the action for this link.
  +      */
  +     protected String module = null;
  +
  +     public String getModule() {
  +             return (this.module);
  +     }
  +
  +     public void setModule(String module) {
  +             this.module = module;
  +     }
   
       /**
        * In situations where an image is dynamically generated (such as to create
  @@ -631,7 +644,7 @@
               if ((this.src != null) || (this.srcKey != null)) {
                   throwImgTagSrcException();
               }
  -            return TagUtils.getInstance().getActionMappingURL(action, pageContext, 
isContextRelativeSet());
  +            return TagUtils.getInstance().getActionMappingURL(action, module, 
pageContext, isContextRelativeSet());
           }
   
           // Deal with an absolute source that has been specified
  
  
  
  1.35      +31 -16    
jakarta-struts/src/share/org/apache/struts/taglib/html/LinkTag.java
  
  Index: LinkTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/LinkTag.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- LinkTag.java      13 Jan 2004 12:48:47 -0000      1.34
  +++ LinkTag.java      7 Feb 2004 15:55:02 -0000       1.35
  @@ -183,19 +183,34 @@
       }
   
   
  -    /**
  -     * The module-relative action (beginning with a slash) which will be
  -     * called by this link
  -     */
  -    protected String action = null;
  +     /**
  +      * The module-relative action (beginning with a slash) which will be
  +      * called by this link
  +      */
  +     protected String action = null;
   
  -    public String getAction() {
  -        return (this.action);
  -    }
  +     public String getAction() {
  +             return (this.action);
  +     }
   
  -    public void setAction(String action) {
  -        this.action = action;
  -    }
  +     public void setAction(String action) {
  +             this.action = action;
  +     }
  +
  +
  +     /**
  +      * The module prefix (beginning with a slash) which will be
  +      * used to find the action for this link.
  +      */
  +     protected String module = null;
  +
  +     public String getModule() {
  +             return (this.module);
  +     }
  +
  +     public void setModule(String module) {
  +             this.module = module;
  +     }
   
   
       /**
  @@ -497,7 +512,7 @@
           String url = null;
           try {
               url = TagUtils.getInstance().computeURLWithCharEncoding(pageContext, 
forward, href,
  -                                          page, action, params, anchor, false, 
useLocalEncoding);
  +                                          page, action, module, params, anchor, 
false, useLocalEncoding);
           } catch (MalformedURLException e) {
               TagUtils.getInstance().saveException(pageContext, e);
               throw new JspException
  
  
  
  1.19      +5 -4      
jakarta-struts/src/share/org/apache/struts/taglib/html/RewriteTag.java
  
  Index: RewriteTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/RewriteTag.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- RewriteTag.java   13 Jan 2004 12:48:47 -0000      1.18
  +++ RewriteTag.java   7 Feb 2004 15:55:02 -0000       1.19
  @@ -102,6 +102,7 @@
                                        href,
                                        page,
                                        action,
  +                                     module,
                                        params,
                                        anchor,
                                        false,
  
  
  
  1.23      +20 -4     
jakarta-struts/src/share/org/apache/struts/taglib/logic/RedirectTag.java
  
  Index: RedirectTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/RedirectTag.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- RedirectTag.java  16 Jan 2004 04:55:00 -0000      1.22
  +++ RedirectTag.java  7 Feb 2004 15:55:02 -0000       1.23
  @@ -168,6 +168,21 @@
           this.action = action;
       }
   
  +
  +     /**
  +      * The module prefix (beginning with a slash) which will be
  +      * used to find the action for this link.
  +      */
  +     protected String module = null;
  +
  +     public String getModule() {
  +             return (this.module);
  +     }
  +
  +     public void setModule(String module) {
  +             this.module = module;
  +     }
  +
       /**
        * The single-parameter request parameter name to generate.
        */
  @@ -326,6 +341,7 @@
                       href,
                       page,
                       action,
  +                    module,
                       params,
                       anchor,
                       true,
  
  
  
  1.7       +65 -27    jakarta-struts/src/share/org/apache/struts/util/ModuleUtils.java
  
  Index: ModuleUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/ModuleUtils.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ModuleUtils.java  13 Jan 2004 12:48:52 -0000      1.6
  +++ ModuleUtils.java  7 Feb 2004 15:55:02 -0000       1.7
  @@ -108,21 +108,59 @@
           super();
       }
       
  -    /**
  -     * Return the current ModuleConfig object stored in request, if it exists,
  -     * null otherwise.
  -     * This method can be used by plugin to retrieve the current module config
  -     * object. If no moduleConfig is found, this means that the request haven't
  -     * hit the server throught the struts servlet. The appropriate module config
  -     * can be set and found with
  -     * <code>[EMAIL PROTECTED] RequestUtils#selectModule(HttpServletRequest, 
ServletContext)} </code>.
  -     * @param request The servlet request we are processing
  -     * @return the ModuleConfig object from request, or null if none is set in
  -     * the request.
  -     */
  -    public ModuleConfig getModuleConfig(HttpServletRequest request) {
  -        return (ModuleConfig) request.getAttribute(Globals.MODULE_KEY);
  -    }
  +     /**
  +      * Return the current ModuleConfig object stored in request, if it exists,
  +      * null otherwise.
  +      * This method can be used by plugin to retrieve the current module config
  +      * object. If no moduleConfig is found, this means that the request haven't
  +      * hit the server throught the struts servlet. The appropriate module config
  +      * can be set and found with
  +      * <code>[EMAIL PROTECTED] RequestUtils#selectModule(HttpServletRequest, 
ServletContext)} </code>.
  +      * @param request The servlet request we are processing
  +      * @return the ModuleConfig object from request, or null if none is set in
  +      * the request.
  +      */
  +     public ModuleConfig getModuleConfig(HttpServletRequest request) {
  +             return (ModuleConfig) request.getAttribute(Globals.MODULE_KEY);
  +     }
  +    
  +     /**
  +      * Return the desired ModuleConfig object stored in context, if it exists,
  +      * null otherwise.
  +      * 
  +     * @param prefix The module prefix of the desired module
  +     * @param context The ServletContext for this web application
  +      * @return the ModuleConfig object specified, or null if not found in
  +      * the context.
  +      */
  +     public ModuleConfig getModuleConfig(String prefix, ServletContext context) {
  +             return (ModuleConfig) context.getAttribute(Globals.MODULE_KEY + 
prefix);
  +     }
  +    
  +     /**
  +      * Return the desired ModuleConfig object stored in context, if it exists,
  +      * otherwise return the current ModuleConfig
  +      * 
  +      * @param prefix The module prefix of the desired module
  +      * @param request The servlet request we are processing
  +      * @param context The ServletContext for this web application
  +      * @return the ModuleConfig object specified, or null if not found in
  +      * the context.
  +      */
  +     public ModuleConfig getModuleConfig(String prefix, HttpServletRequest request, 
ServletContext context) {
  +             ModuleConfig moduleConfig = null;
  +             
  +             
  +             if(prefix != null) {
  +                     //lookup module stored with the given prefix.
  +                     moduleConfig = this.getModuleConfig(prefix, context);
  +             }
  +             else {
  +                     //return the current module if no prefix was supplied.
  +                     moduleConfig = this.getModuleConfig(request, context);
  +             }
  +             return moduleConfig;
  +     }
   
       /**
        * Return the ModuleConfig object is it exists, null otherwise.
  @@ -134,16 +172,17 @@
           HttpServletRequest request,
           ServletContext context) {
   
  -        ModuleConfig moduleConfig = this.getModuleConfig(request);
  +             ModuleConfig moduleConfig = this.getModuleConfig(request);
   
  -        if (moduleConfig == null) {
  -            moduleConfig = (ModuleConfig) context.getAttribute(Globals.MODULE_KEY);
  -            request.setAttribute(Globals.MODULE_KEY, moduleConfig);
  -        }
  +             if (moduleConfig == null) {
  +                     moduleConfig = this.getModuleConfig("", context);
  +                     request.setAttribute(Globals.MODULE_KEY, moduleConfig);
  +             }
   
  -        return moduleConfig;
  +             return moduleConfig;
       }
   
  +
       /**
        * Get the module name to which the specified request belong.
        * @param request The servlet request we are processing
  @@ -246,8 +285,7 @@
           ServletContext context) {
   
           // Expose the resources for this module
  -        ModuleConfig config =
  -            (ModuleConfig) context.getAttribute(Globals.MODULE_KEY + prefix);
  +        ModuleConfig config = getModuleConfig(prefix, context);
   
           if (config != null) {
               request.setAttribute(Globals.MODULE_KEY, config);
  
  
  
  1.145     +7 -5      
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.144
  retrieving revision 1.145
  diff -u -r1.144 -r1.145
  --- RequestUtils.java 27 Jan 2004 01:09:32 -0000      1.144
  +++ RequestUtils.java 7 Feb 2004 15:55:02 -0000       1.145
  @@ -1216,7 +1216,7 @@
           // :TODO: Remove after Struts 1.2
   
           return (TagUtils.getInstance().computeURLWithCharEncoding(
  -                pageContext, forward, href, page, null, params, anchor, redirect, 
false));
  +                pageContext, forward, href, page, null, null, params, anchor, 
redirect, false));
       }
   
   
  @@ -1263,6 +1263,7 @@
                   href,
                   page,
                   action,
  +                null,
                   params,
                   anchor,
                   redirect);
  @@ -1317,6 +1318,7 @@
                   href,
                   page,
                   action,
  +                null,
                   params,
                   anchor,
                   redirect,
  
  
  

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

Reply via email to