/* * NOTE: This copyright does *not* cover user programs that use HQ * program services by normal system calls through the application * program interfaces provided as part of the Hyperic Plug-in Development * Kit or the Hyperic Client Development Kit - this is merely considered * normal use of the program, and does *not* fall under the heading of * "derived work". * * Copyright (C) [2004, 2005, 2006], Hyperic, Inc. * This file is part of HQ. * * HQ is free software; you can redistribute it and/or modify * it under the terms version 2 of the GNU General Public License as * published by the Free Software Foundation. This program is distributed * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. */ package org.hyperic.hq.ui.util; import static org.hyperic.hq.ui.ParamConstants.APPDEF_KEY; import java.io.OutputStream; import java.io.PrintWriter; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; import java.util.HashSet; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hyperic.hq.api.common.InterfaceUser; import org.hyperic.hq.api.services.impl.RestApiService; import org.hyperic.hq.appdef.shared.AppdefEntityID; import org.hyperic.hq.appdef.shared.AppdefEntityTypeID; import org.hyperic.hq.appdef.shared.AppdefResourceValue; import org.hyperic.hq.authz.server.session.Resource; import org.hyperic.hq.authz.server.session.ResourceType; import org.hyperic.hq.authz.shared.ResourceManager; import org.hyperic.hq.ui.AttrConstants; import org.hyperic.hq.ui.Constants; import org.hyperic.hq.ui.WebUser; import org.hyperic.hq.ui.exception.ParameterNotFoundException; import org.hyperic.util.pager.PageControl; import org.hyperic.util.pager.SortAttribute; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.LocalizedTextUtil; /** * Utilities class that provides many convenience methods for logging, * request parameter processing, etc. * */ public class RequestUtils { private static Log log = LogFactory.getLog(RequestUtils.class.getName()); public static String generateSessionKey(HttpServletRequest request) { String result; AppdefEntityID aeid = getEntityId(request); try { // See if there's a ctype AppdefEntityTypeID ctype = getChildResourceTypeId(request); result = aeid.getAppdefKey() + "." + ctype.getAppdefKey(); } catch (ParameterNotFoundException e) { // No problem, this is not an autogroup result = aeid.getAppdefKey(); } return result + ".view"; } /** Verify if a parameter exists in the request * @param name The name of the parameter in the request * @return Boolean if the parameter exists in the request */ public static boolean parameterExists(HttpServletRequest request, String name) { String value = request.getParameter(name); return value != null; } /** Fetches the String value of the parameter from the request * @param name The name of the parameter in the request * @throws ParameterNotFoundException If the parameter name is not found in the request * @return The value of the parameter passed into the request */ public static String getStringParameter( HttpServletRequest request, String name ) throws ParameterNotFoundException { String[] values = request.getParameterValues( name ); if ( values == null ) throw new ParameterNotFoundException( name + " not found" ); else if ( values[0].length() == 0 ) throw new ParameterNotFoundException( name + " was empty" ); else return values[0]; // Just return the first value } /** Fetchs the String value of the parameter from the request * @return The value of the parameter passed into the request * @param name The name of the parameter in the request * @param def The default value to return if the parameter is not found */ public static String getStringParameter( HttpServletRequest request, String name, String def ) { try { return getStringParameter( request, name ); } catch ( Exception e ) { return def; } } /** Fetchs the int value of the parameter from the request * @param name The name of the parameter in the request * @throws ParameterNotFoundException If the parameter name is not found in the request * @throws NumberFormatException If the parameter value is not a valid integer * @return The value of the parameter passed into the request */ public static Integer getIntParameter( HttpServletRequest request, String name ) throws ParameterNotFoundException, NumberFormatException { String intParam = getStringParameter( request, name ); Integer tmpInt = Integer.valueOf( intParam ); return tmpInt; } /** Fetchs the int value of the parameter from the request * @return The value of the parameter passed into the request * @param name The name of the parameter in the request * @param def The default value to return if the parameter is not found */ public static Integer getIntParameter( HttpServletRequest request, String name, Integer def ) { try { return getIntParameter( request, name ); } catch ( Exception e ) { return def; } } /** Return the <code>WebUser</code> representing the person currently * interacting with the product. * @exception ServletException if the session cannot be accessed */ public static WebUser getWebUser(HttpServletRequest request) throws ServletException { //do not create a session one should already exist. HttpSession session = request.getSession(false); if (session == null) { // show throw SessionNotFoundException throw new ServletException("web session does not exist!"); } return getWebUser(session); } /** Return the <code>WebUser</code> representing the person currently * interacting with the product. * * @param session The servlet session object * @exception ServletException if the session cannot be accessed */ public static WebUser getWebUser(HttpSession session) throws ServletException { return (WebUser) session.getAttribute(Constants.WEBUSER_SES_ATTR); } /** Extract the BizApp session id as an <code>Integer</code> from * the web session. * @exception ServletException if the session cannot be accessed */ public static Integer getSessionId(HttpServletRequest request) throws ServletException { return getWebUser(request).getSessionId(); } public static int getSessionIdInt(HttpServletRequest request) throws ServletException { InterfaceUser interfaceUser = getWebUser(request); if (null == interfaceUser) { HttpSession session = request.getSession(false); interfaceUser = RestApiService.getApiUser(session); } return interfaceUser.getSessionId().intValue(); } /** * * @param headerAttributeName Request header attribute name. * @param defaultValue fallback value in case the attribute was not provided. * @param request {@link HttpServletRequest} instance from which to extract the header attribute * @return header attribute value (single value presumed) or the provided defaultValue formal arg. */ public static final String getStringHeader(final String headerAttributeName, final String defaultValue, final HttpServletRequest request) { final String headerValue = request.getHeader(headerAttributeName) ; return (headerValue == null ? defaultValue : headerValue) ; }//EOM /** * @param request {@link HttpServletRequest} instance from which to extract the header attribute * @return true IFF the request formal arg contains the {@link AttrConstants#STATEFUL_HTTP_SESSION_HDR_ATTR} and * the value == '1' */ public static final boolean isStatefulHttpSession(final HttpServletRequest request) { final String statefulSessionFlag = getStringHeader(Constants.STATEFUL_HTTP_SESSION_HDR_ATTR, "0", request) ; return "1".equals(statefulSessionFlag) ; }//EOM /** Extract the subcontroller mode from the * <code>Constants.MODE_PARAM</code> parameter of the HTTP * request. */ public static String getMode(HttpServletRequest request) { String mode = request.getParameter(Constants.MODE_PARAM); if (mode == null || mode.equals("")) { mode = Constants.MODE_LIST; } return mode; } /** Retrieve the <code>Integer</code> value of the * <strong>ROLE_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getRoleId(HttpServletRequest request) throws ParameterNotFoundException { String roleId = request.getParameter(Constants.ROLE_PARAM); if (roleId == null || roleId.equals("")) { throw new ParameterNotFoundException("role id not found"); } return new Integer(roleId); } /** Retrieve the <code>AppdefResourceValue</code> value of the * <strong>RESOURCE_ATTR</strong> parameter from the HTTP * request. If the resource is not cached in the request, set a * user error and return <code>null</code>. */ public static AppdefResourceValue getResource(HttpServletRequest request) { AppdefResourceValue resource = (AppdefResourceValue) request.getAttribute(Constants.RESOURCE_ATTR); // This has been commented out because there are still lots of // calls being made to getResource() when we're in an // auto-group. Furthermore, platform auto-groups have no // parent resource, so we will always get this "error", even // though it's not an error. /* if (resource == null) { setError(request, Constants.ERR_RESOURCE_NOT_FOUND); } */ return resource; } /** Set the <code>AppdefResourceValue</code> value in the * <strong>RESOURCE_ATTR</strong> parameter of the HTTP * request. */ public static void setResource(HttpServletRequest request, AppdefResourceValue resource) { request.setAttribute(Constants.RESOURCE_ATTR, resource); } /** * Get the appdefEntityTypeID value of the aetid param from the http request */ public static AppdefEntityTypeID getEntityTypeId(HttpServletRequest req) throws ParameterNotFoundException { String atidStr = getStringParameter(req, Constants.APPDEF_RES_TYPE_ID); return new AppdefEntityTypeID(atidStr); } /** * Get the appdefEntityID value of the eid param from the http request * also works with rid/type attribute combination */ public static AppdefEntityID getEntityId(HttpServletRequest req, ResourceManager resourceManager) throws ParameterNotFoundException { return getEntityIds(req, resourceManager)[0]; } public static AppdefEntityID getEntityId(HttpServletRequest req) throws ParameterNotFoundException { return getEntityIds(req, null)[0]; } /** * Retrieve the <code>AppdefEntityID[]</code> value of the * <strong>ENTITY_ID_PARAM</strong> ("eid") or <strong>RESOURCE_PARAM</strong> ("rid") parameters from the HTTP * request. * For backwards compatibility, <strong>RESOURCE_TYPE_ID_PARAM</strong> ("type") * and <strong>RESOURCE_PARAM</strong> ("rid") are also acceptable parameters as * well. * @exception ParameterNotFoundException if the parameter was not specified */ public static AppdefEntityID[] getEntityIds(HttpServletRequest request, ResourceManager resourceManager) throws ParameterNotFoundException { String[] vals = new String[0]; if (parameterExists(request, Constants.ENTITY_ID_PARAM) && !request.getParameterValues(Constants.ENTITY_ID_PARAM)[0].equals("") ) { vals = request.getParameterValues(Constants.ENTITY_ID_PARAM); } else if (parameterExists(request, Constants.RESOURCE_TYPE_ID_PARAM) && parameterExists(request, Constants.RESOURCE_PARAM)) { // backwards compatibility, eventually, this should be unnecessary String appdefKey = getStringParameter(request,Constants.RESOURCE_TYPE_ID_PARAM) + ":" + getStringParameter(request, Constants.RESOURCE_PARAM); if (appdefKey.equals("0:0")) // Not really a valid key throw new ParameterNotFoundException("rid and type empty"); vals = new String[]{appdefKey}; } else if (parameterExists(request, Constants.RESOURCE_PARAM)) { if (resourceManager == null) { if (request.getAttribute(APPDEF_KEY) == null) { throw new ParameterNotFoundException("appdefKey not found"); } vals = new String[]{(String) request.getAttribute(APPDEF_KEY)}; } else { Resource resource = resourceManager.getResourceById(getIntParameter(request, Constants.RESOURCE_PARAM)); ResourceType resourceType = resource.getResourceType(); int appDefType = resourceType.getAppdefType(); String appdefKey = appDefType + ":" + resource.getInstanceId(); request.setAttribute(APPDEF_KEY, appdefKey); vals = new String[]{appdefKey}; } } if (vals == null || vals.length == 0) { throw new ParameterNotFoundException("entity ids not found"); } // turn our strings into AppdefEntityID's, discarding // duplicates ArrayList rv = new ArrayList(); HashSet idx = new HashSet(); String tmp = null; for (int i=0; i<vals.length; i++) { tmp = vals[i]; if (idx.contains(tmp)) { continue; } rv.add(new AppdefEntityID(tmp)); idx.add(tmp); } return (AppdefEntityID[]) rv.toArray(new AppdefEntityID[0]); } public static AppdefEntityID[] getEntityIds(HttpServletRequest request) throws ParameterNotFoundException { return getEntityIds(request, null); } /** Retrieve the <code>Integer</code> value of the * <strong>RESOURCE_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getResourceId(HttpServletRequest request) throws ParameterNotFoundException { String resourceId = request.getParameter(Constants.RESOURCE_PARAM); if (resourceId == null || resourceId.equals("")) { // Try to see if we can get through appdef entity ID AppdefEntityID aeid = getEntityId(request); return aeid.getId(); } return new Integer(resourceId); } /** Retrieve the <code>Integer</code> value of the * <strong>SCHEDULE_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getScheduleId(HttpServletRequest request) throws ParameterNotFoundException { String scheduleId = request.getParameter(Constants.SCHEDULE_PARAM); if (scheduleId == null || scheduleId.equals("")) { throw new ParameterNotFoundException("schedule id not found"); } return new Integer(scheduleId); } /** Retrieve the <code>Integer</code> value of the * <strong>RESOURCE_TYPE_ID_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getResourceTypeId(HttpServletRequest request) throws ParameterNotFoundException { String resourceTypeId = request.getParameter(Constants.RESOURCE_TYPE_ID_PARAM); if (resourceTypeId == null || resourceTypeId.equals("") ) { throw new ParameterNotFoundException("resource type id not found"); } return new Integer(resourceTypeId); } /** Retrieve the <code>AppdefEntityTypeID</code> value of the * <strong>CHILD_RESOURCE_TYPE_ID_PARAM</strong> parameter from the * HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static AppdefEntityTypeID getChildResourceTypeId(HttpServletRequest request) throws ParameterNotFoundException { String ctypeId = getStringParameter(request, Constants.CHILD_RESOURCE_TYPE_ID_PARAM); if (ctypeId == null || ctypeId.equals("")) { throw new ParameterNotFoundException( "child resource type id not found"); } return new AppdefEntityTypeID(ctypeId); } /** Retrieve the <code>Integer</code> value of the * <strong>AUTOGROUP_TYPE_ID_PARAM</strong> parameter from the * HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getAutogroupResourceTypeId(HttpServletRequest request) throws ParameterNotFoundException { String autogrouptypeId = request.getParameter(Constants.AUTOGROUP_TYPE_ID_PARAM); if (autogrouptypeId == null || autogrouptypeId.equals("")) { throw new ParameterNotFoundException("autogroup resource type id not found"); } return new Integer(autogrouptypeId); } /** Retrieve the <code>Integer</code> value of the * <strong>USER_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getUserId(HttpServletRequest request) throws ParameterNotFoundException { String userId = request.getParameter(Constants.USER_PARAM); if (userId == null || userId.equals("")) { throw new ParameterNotFoundException("user id not found"); } return new Integer(userId); } /** Retrieve the <code>Integer</code> value of the * <strong>METRIC_BASELINE_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getMetricId(HttpServletRequest request) throws ParameterNotFoundException { String metricId = request.getParameter(Constants.METRIC_PARAM); if (metricId == null || metricId.equals("")) { throw new ParameterNotFoundException("metric baseline param not found"); } return new Integer(metricId); } /** Retrieve the <code>String</code> value of the * <strong>URL_ATTR</strong> parameter from the HTTP * request. * @exception ParameterNotFoundException if the parameter was not specified */ public static String getUrl(HttpServletRequest request) { String url = request.getParameter(Constants.URL_PARAM); if (url == null || url.equals("")) { throw new ParameterNotFoundException(Constants.URL_PARAM); } return url; } /** Create and return a <code>PageControl</code> object by * examining various request parameters. */ public static PageControl getPageControl(HttpServletRequest request, String pageSizeParam, String pageNumParam, String sortOrderParam, String sortColParam) { if (pageNumParam == null) { pageNumParam = Constants.PAGENUM_PARAM; } int pn = getPageNum(request, pageNumParam); if (pageSizeParam == null) { pageSizeParam = Constants.PAGESIZE_PARAM; } int ps = getPageSize(request, pageSizeParam); if (sortOrderParam == null) { sortOrderParam = Constants.SORTORDER_PARAM; } int so = getSortOrder(request, sortOrderParam); if (sortColParam == null) { sortColParam = Constants.SORTCOL_PARAM; } int sc = getSortCol(request, sortColParam); return new PageControl(pn, ps, so, sc); } /** Create and return a <code>PageControl</code> object by * examining various request parameters. */ public static PageControl getPageControl(HttpServletRequest request) { return getPageControl(request, null, null, null, null); } /** Retrieve the <code>int</code> value of the * <code>Constants.PAGENUM_PARAM</code> request parameter, or * <code>Constants.PAGENUM_DEFAULT</code> if the parameter was not * found or not specified as an integer. */ public static int getPageNum(HttpServletRequest request, String param) { Integer pn = null; String val = request.getParameter(param); if (val != null && val.length() > 0) { try { pn = new Integer(val); } catch (Exception e) { } } if (pn == null) { pn = Constants.PAGENUM_DEFAULT; } return pn.intValue(); } /** Retrieve the <code>int</code> value of the * <code>Constants.PAGESIZE_PARAM</code> request parameter, or * <code>Constants.PAGESIZE_DEFAULT</code> if the parameter was not * found or not specified as an integer. */ public static int getPageSize(HttpServletRequest request, String param) { Integer ps = null; String val = request.getParameter(param); if (val != null && val.length() > 0) { try { ps = new Integer(val); } catch (Exception e) { } } if (ps == null || ps.intValue() == 0) { ps = Constants.PAGESIZE_DEFAULT; } return ps.intValue(); } /** Retrieve the <code>int</code> value of the * <code>Constants.SORTORDER_PARAM</code> request parameter, or * <code>Constants.SORTORDER_DEFAULT</code> if the parameter was not * found or not specified as an integer. */ public static int getSortOrder(HttpServletRequest request, String param) { int so = -1; String val = request.getParameter(param); if (val != null) { so = Constants.SORTORDER_DEC.equals(val) ? PageControl.SORT_DESC : PageControl.SORT_ASC; } else { so = PageControl.SORT_ASC; } return so; } /** Retrieve the <code>int</code> value of the * <code>Constants.SORTCOL_PARAM</code> request parameter, or * <code>Constants.SORTCOL_DEFAULT</code> if the parameter was not * found or not specified as an integer. */ public static int getSortCol(HttpServletRequest request, String param) { Integer sc = null; String val = request.getParameter(param); if (val != null && val.length() > 0) { try { sc = new Integer(val); } catch (Exception e) { } } // don't set a default- bizapp managers will do that return sc != null ? sc.intValue() : SortAttribute.DEFAULT; } /** Examine the request to see if an "cancel" button was clicked on * the previous page. If so, one of the * <code>Constants.CANCEL_PARAM</code> or * <code>Constants.CANCEL_X_PARAM</code> parameters will exist. */ public static boolean isCancelClicked(HttpServletRequest request) { return (request.getParameter(Constants.CANCEL_PARAM) != null || request.getParameter(Constants.CANCEL_X_PARAM) != null); } /** Examine the request to see if an "ok" button was clicked on * the previous page. If so, one of the * <code>Constants.OK_PARAM</code> or * <code>Constants.OK_X_PARAM</code> parameters will exist. */ public static boolean isOkClicked(HttpServletRequest request) { return (request.getParameter(Constants.OK_PARAM) != null || request.getParameter(Constants.OK_X_PARAM) != null); } /** Examine the request to see if an "okassign" button was clicked on * the previous page. If so, one of the * <code>Constants.OK_ASSIGN_PARAM</code> or * <code>Constants.OK_ASSIGN_X_PARAM</code> parameters will exist. */ public static boolean isOkAssignClicked(HttpServletRequest request) { return (request.getParameter(Constants.OK_ASSIGN_PARAM) != null || request.getParameter(Constants.OK_ASSIGN_X_PARAM) != null); } /** Examine the request to see if an "reset" button was clicked on * the previous page. If so, one of the * <code>Constants.RESET_PARAM</code> or * <code>Constants.RESET_X_PARAM</code> parameters will exist. */ public static boolean isResetClicked(HttpServletRequest request) { return (request.getParameter(Constants.RESET_PARAM) != null || request.getParameter(Constants.RESET_X_PARAM) != null); } /** Examine the request to see if an "new" button was clicked on * the previous page. If so, one of the * <code>Constants.NEW_PARAM</code> or * <code>Constants.NEW_X_PARAM</code> parameters will exist. */ public static boolean isNewClicked(HttpServletRequest request) { return (request.getParameter(Constants.NEW_PARAM) != null || request.getParameter(Constants.NEW_X_PARAM) != null); } /** Examine the request to see if an "edit" button was clicked on * the previous page. If so, one of the * <code>Constants.EDIT_PARAM</code> or * <code>Constants.EDIT_X_PARAM</code> parameters will exist. */ public static boolean isEditClicked(HttpServletRequest request) { return (request.getParameter(Constants.EDIT_PARAM) != null || request.getParameter(Constants.EDIT_X_PARAM) != null); } /** Examine the request to see if an "add" button was clicked on * the previous page. If so, one of the * <code>Constants.ADD_PARAM</code> or * <code>Constants.ADD_X_PARAM</code> parameters will exist. */ public static boolean isAddClicked(HttpServletRequest request) { return (request.getParameter(Constants.ADD_PARAM) != null || request.getParameter(Constants.ADD_X_PARAM) != null); } /** Examine the request to see if a "remove" button was clicked on * the previous page. If so, one of the * <code>Constants.REMOVE_PARAM</code> or * <code>Constants.REMOVE_X_PARAM</code> parameters will exist. */ public static boolean isRemoveClicked(HttpServletRequest request) { return (request.getParameter(Constants.REMOVE_PARAM) != null || request.getParameter(Constants.REMOVE_X_PARAM) != null); } /** * Propogate a request parameter. * @param params the parameters passed to the ActionForward * @param param the parameter name to propogate */ public static void propogateParam(HttpServletRequest request, Map params, String param) { Object paramValue = request.getParameter(param); log.debug("Propogating " + param + ": " + paramValue); if (paramValue != null && ! "".equals(paramValue)) { params.put(param, paramValue); } } public static void bustaCache(ServletRequest request, ServletResponse response) { bustaCache(request, response, false); } /** * When you really really want to defeat a browser's cache, expire the content and set the * no-cache header * @param expire set <i>true</i> to have the content expire immediately */ public static void bustaCache(ServletRequest request, ServletResponse response, boolean expire) { if (! (response instanceof HttpServletResponse)) return; HttpServletResponse res = (HttpServletResponse)response; if (request.getProtocol().equalsIgnoreCase("HTTP/1.0")) { res.setHeader("Pragma", "no-cache"); } else if (request.getProtocol().equalsIgnoreCase("HTTP/1.1")) { res.setHeader("Cache-Control", "no-cache"); } if (expire) { Date now = new Date(); res.setDateHeader("Date", now.getTime()); res.setDateHeader("Expires", now.getTime() + 1000); } } /** * A development aid. * * Since most parameter handling is wrapped by utility methods, * quick-n-dirty debugging of what data is actually passed * in a request is sometimes necessary. Obviously, you wouldn't * want this in production. * @param out output the parameter dump to a PrintWriter * @param html formats the dump with <ol> if true */ public static void dumpRequestParams(ServletRequest request, PrintWriter out, boolean html) { out.println(dumpRequestParamsToString(request,html)); out.flush(); } public static void dumpRequestParams(ServletRequest request, OutputStream out, boolean html) { dumpRequestParams(request, new PrintWriter(out), html); } public static void dumpRequestParams(ServletRequest request, Log log, boolean html) { log.trace(dumpRequestParamsToString(request,html)); } public static String dumpRequestParamsToString(ServletRequest request, boolean html) { StringBuffer output = new StringBuffer(); if (html) output.append("<ol>\n"); for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) { String key = (String)e.nextElement(); String[] values = request.getParameterValues(key); if (html) output.append("<li>"); output.append(key + " = "); for (int i = 0; i < values.length; i++) { output.append(values[i] + "\n "); } } if (html) output.append("</ol>\n"); return output.toString(); } // New Generation methods /** Retrieve the <code>Integer</code> value of the * <strong>USER_PARAM</strong> parameter from the HTTP request. * @exception ParameterNotFoundException if the parameter was not specified */ public static Integer getUserId(Map<String,Object> context) throws ParameterNotFoundException { // Respones is Array of Strings, so in this case we will pickup the first one String[] userId = (String[]) context.get(Constants.USER_PARAM); String sUserId = userId[0]; if (userId == null || userId.equals("")) { throw new ParameterNotFoundException("user id not found"); } return Integer.valueOf(sUserId); } public static Integer getSessionId(Map<String,Object> session) throws ServletException { WebUser tuser = (WebUser) session.get("webUser"); Integer sessionId = tuser.getSessionId(); return sessionId; } /** * Get an i18n message from the application resource bundle. * @param key the message key we want */ public static String message(HttpServletRequest request, String key) { return message(request, null, null, key, null); } /** * Get an i18n message from the application resource bundle. * @param key the message key we want * @param args the positional parameters for the message */ public static String message(HttpServletRequest request, String key, Object[] args) { return message(request, null, null, key, args); } /** * Get an i18n message from the application resource bundle. * @param bundle the resource bundle name * @param bundle the user locale * @param key the message key we want */ public static String message(HttpServletRequest request, String bundle, String locale, String key) { return message(request, bundle, locale, key, null); } /** * Get an i18n message from the application resource bundle. * @param bundle the resource bundle name * @param locale the user locale * @param key the message key we want * @param args the positional parameters for the message */ public static String message(HttpServletRequest request, String bundle, String locale, String key, Object[] args) { ResourceBundle curBundle; Locale userPreferredLocale = request.getLocale() ; if (bundle != bundle) { curBundle = ResourceBundle.getBundle(bundle , userPreferredLocale.getDefault()); } else { curBundle = ResourceBundle.getBundle("ApplicationResources" , userPreferredLocale.getDefault()); } if (args == null) { return curBundle.getString( key ); } else { String pattern = curBundle.getString(key); return MessageFormat.format(pattern, args); } } public static String message(String key, String[] args) { ActionSupport actionSupport = new ActionSupport(); if (args == null) { return message(key); } else { return actionSupport.getText(key,args); } } public static String message(String key) { ActionSupport actionSupport = new ActionSupport(); return actionSupport.getText(key); } public static String message(String key, Locale locale) { return LocalizedTextUtil.findDefaultText( key, locale); } public static String filter(String value) { if ((value == null) || (value.length() == 0)) { return value; } StringBuffer result = null; String filtered = null; for (int i = 0; i < value.length(); i++) { filtered = null; switch (value.charAt(i)) { case '<': filtered = "<"; break; case '>': filtered = ">"; break; case '&': filtered = "&"; break; case '"': filtered = """; break; case '\'': filtered = "'"; break; } if (result == null) { if (filtered != null) { result = new StringBuffer(value.length() + 50); if (i > 0) { result.append(value.substring(0, i)); } result.append(filtered); } } else { if (filtered == null) { result.append(value.charAt(i)); } else { result.append(filtered); } } } return (result == null) ? value : result.toString(); } } // EOF