dgraham 2003/07/26 11:44:54 Modified: src/share/org/apache/struts/taglib/html FormTag.java src/share/org/apache/struts/util RequestUtils.java src/share/org/apache/struts/taglib TagUtils.java Log: Moved RequestUtils.getActionMappingURL() and .getActionMappingName() to TagUtils. Revision Changes Path 1.52 +8 -6 jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java Index: FormTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- FormTag.java 26 Jul 2003 01:22:30 -0000 1.51 +++ FormTag.java 26 Jul 2003 18:44:53 -0000 1.52 @@ -593,7 +593,9 @@ results.append("\" action=\""); results.append( response.encodeURL( - RequestUtils.getActionMappingURL(this.action, this.pageContext))); + TagUtils.getInstance().getActionMappingURL( + this.action, + this.pageContext))); results.append("\""); @@ -812,7 +814,7 @@ Globals.ACTION_SERVLET_KEY); // Look up the action mapping we will be submitting to - String mappingName = RequestUtils.getActionMappingName(action); + String mappingName = TagUtils.getInstance().getActionMappingName(action); mapping = (ActionMapping) moduleConfig.findActionConfig(mappingName); if (mapping == null) { JspException e = new JspException(messages.getMessage("formTag.mapping", mappingName)); 1.122 +15 -65 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.121 retrieving revision 1.122 diff -u -r1.121 -r1.122 --- RequestUtils.java 26 Jul 2003 17:39:33 -0000 1.121 +++ RequestUtils.java 26 Jul 2003 18:44:54 -0000 1.122 @@ -558,74 +558,24 @@ * <li>If the resulting value does not start with a slash, then a * slash is prepended.</li> * </ul> + * @deprecated Use TagUtils.getActionMappingName() instead. This will be + * removed after Struts 1.2. */ public static String getActionMappingName(String action) { - - String value = action; - int question = action.indexOf("?"); - if (question >= 0) { - value = value.substring(0, question); - } - int slash = value.lastIndexOf("/"); - int period = value.lastIndexOf("."); - if ((period >= 0) && (period > slash)) { - value = value.substring(0, period); - } - if (value.startsWith("/")) { - return (value); - } else { - return ("/" + value); - } + return TagUtils.getInstance().getActionMappingName(action); } /** * Return the form action converted into a server-relative URL. + * @deprecated Use TagUtils.getActionMappingURL() instead. This will be + * removed after Struts 1.2. */ - public static String getActionMappingURL(String action, PageContext pageContext) { - - HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); - StringBuffer value = new StringBuffer(request.getContextPath()); - ModuleConfig config = getRequestModuleConfig(request); - if (config != null) { - value.append(config.getPrefix()); - } - - // Use our servlet mapping, if one is specified - String servletMapping = - (String) pageContext.getAttribute(Globals.SERVLET_KEY, PageContext.APPLICATION_SCOPE); - if (servletMapping != null) { - String queryString = null; - int question = action.indexOf("?"); - if (question >= 0) { - queryString = action.substring(question); - } - String actionMapping = getActionMappingName(action); - if (servletMapping.startsWith("*.")) { - value.append(actionMapping); - value.append(servletMapping.substring(1)); - } else if (servletMapping.endsWith("/*")) { - value.append(servletMapping.substring(0, servletMapping.length() - 2)); - value.append(actionMapping); - } else if (servletMapping.equals("/")) { - value.append(actionMapping); - } - if (queryString != null) { - value.append(queryString); - } - } - - // Otherwise, assume extension mapping is in use and extension is - // already included in the action property - else { - if (!action.startsWith("/")) { - value.append("/"); - } - value.append(action); - } - - // Return the completed value - return (value.toString()); - } + public static String getActionMappingURL( + String action, + PageContext pageContext) { + + return TagUtils.getInstance().getActionMappingURL(action, pageContext); + } /** * Create (if necessary) and return an ActionForm instance appropriate 1.9 +117 -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.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- TagUtils.java 26 Jul 2003 18:28:03 -0000 1.8 +++ TagUtils.java 26 Jul 2003 18:44:54 -0000 1.9 @@ -151,7 +151,7 @@ * identified, return <code>null</code>. * * @param pageContext PageContext we are operating in - + * @param paramId Single-value request parameter name (if any) * @param paramName Bean containing single-value parameter value * @param paramProperty Property (of bean named by <code>paramName</code> @@ -192,11 +192,17 @@ Map map = null; try { if (name != null) { - map = (Map) TagUtils.getInstance().lookup(pageContext, name, property, scope); + map = + (Map) TagUtils.getInstance().lookup( + pageContext, + name, + property, + scope); } } catch (ClassCastException e) { saveException(pageContext, e); - throw new JspException(messages.getMessage("parameters.multi", name, property, scope)); + throw new JspException( + messages.getMessage("parameters.multi", name, property, scope)); } catch (JspException e) { saveException(pageContext, e); throw e; @@ -215,7 +221,12 @@ Object paramValue = null; try { - paramValue = TagUtils.getInstance().lookup(pageContext, paramName, paramProperty, paramScope); + paramValue = + TagUtils.getInstance().lookup( + pageContext, + paramName, + paramProperty, + paramScope); } catch (JspException e) { saveException(pageContext, e); throw e; @@ -316,6 +327,95 @@ return errors; } + + /** + * Return the form action converted into an action mapping path. The + * value of the <code>action</code> property is manipulated as follows in + * computing the name of the requested mapping: + * <ul> + * <li>Any filename extension is removed (on the theory that extension + * mapping is being used to select the controller servlet).</li> + * <li>If the resulting value does not start with a slash, then a + * slash is prepended.</li> + * </ul> + */ + public String getActionMappingName(String action) { + + String value = action; + int question = action.indexOf("?"); + if (question >= 0) { + value = value.substring(0, question); + } + + int slash = value.lastIndexOf("/"); + int period = value.lastIndexOf("."); + if ((period >= 0) && (period > slash)) { + value = value.substring(0, period); + } + + if (value.startsWith("/")) { + return (value); + } else { + return ("/" + value); + } + } + + /** + * Return the form action converted into a server-relative URL. + */ + public String getActionMappingURL(String action, PageContext pageContext) { + + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + StringBuffer value = new StringBuffer(request.getContextPath()); + ModuleConfig config = RequestUtils.getRequestModuleConfig(request); + + if (config != null) { + value.append(config.getPrefix()); + } + + // Use our servlet mapping, if one is specified + String servletMapping = + (String) pageContext.getAttribute( + Globals.SERVLET_KEY, + PageContext.APPLICATION_SCOPE); + + if (servletMapping != null) { + + String queryString = null; + int question = action.indexOf("?"); + if (question >= 0) { + queryString = action.substring(question); + } + + String actionMapping = getActionMappingName(action); + if (servletMapping.startsWith("*.")) { + value.append(actionMapping); + value.append(servletMapping.substring(1)); + + } else if (servletMapping.endsWith("/*")) { + value.append( + servletMapping.substring(0, servletMapping.length() - 2)); + value.append(actionMapping); + + } else if (servletMapping.equals("/")) { + value.append(actionMapping); + } + if (queryString != null) { + value.append(queryString); + } + } + + // Otherwise, assume extension mapping is in use and extension is + // already included in the action property + else { + if (!action.startsWith("/")) { + value.append("/"); + } + value.append(action); + } + + return value.toString(); + } /** * Return the ModuleConfig object if it exists, null if otherwise. @@ -424,7 +524,9 @@ if (scope == null) { e = new JspException(messages.getMessage("lookup.bean.any", name)); } else { - e = new JspException(messages.getMessage("lookup.bean", name, scope)); + e = + new JspException( + messages.getMessage("lookup.bean", name, scope)); } saveException(pageContext, e); throw e; @@ -440,7 +542,8 @@ } catch (IllegalAccessException e) { saveException(pageContext, e); - throw new JspException(messages.getMessage("lookup.access", property, name)); + throw new JspException( + messages.getMessage("lookup.access", property, name)); } catch (InvocationTargetException e) { Throwable t = e.getTargetException(); @@ -448,11 +551,13 @@ t = e; } saveException(pageContext, t); - throw new JspException(messages.getMessage("lookup.target", property, name)); + throw new JspException( + messages.getMessage("lookup.target", property, name)); } catch (NoSuchMethodException e) { saveException(pageContext, e); - throw new JspException(messages.getMessage("lookup.method", property, name)); + throw new JspException( + messages.getMessage("lookup.method", property, name)); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]