dlr 01/11/28 02:32:16 Added: util/src/java/org/apache/commons/util/http RequestUtils.java Log: Added class by Lance Lavandowska <[EMAIL PROTECTED]> with some tweaks by myself. Revision Changes Path 1.1 jakarta-commons-sandbox/util/src/java/org/apache/commons/util/http/RequestUtils.java Index: RequestUtils.java =================================================================== package org.apache.commons.util.http; /* * Copyright (c) 1997-2000 The Java Apache Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the Java Apache * Project for use in the Apache JServ servlet engine project * <http://java.apache.org/>." * * 4. The names "Apache JServ", "Apache JServ Servlet Engine", "Turbine", * "Apache Turbine", "Turbine Project", "Apache Turbine Project" and * "Java Apache Project" must not be used to endorse or promote products * derived from this software without prior written permission. * * 5. Products derived from this software may not be called "Apache JServ" * nor may "Apache" nor "Apache JServ" appear in their names without * prior written permission of the Java Apache Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the Java Apache * Project for use in the Apache JServ servlet engine project * <http://java.apache.org/>." * * THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JAVA APACHE PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many * individuals on behalf of the Java Apache Group. For more information * on the Java Apache Project and the Apache JServ Servlet Engine project, * please see <http://java.apache.org/>. * */ import javax.servlet.http.HttpServletRequest; import org.apache.commons.util.StringUtils; /** * This class provides utilities for getting information from * javax.servlet.http.HttpServletRequest. * * @author <a href="mailto:[EMAIL PROTECTED]">Lance Lavandowska</a> * @version $Id: RequestUtils.java,v 1.1 2001/11/28 10:32:15 dlr Exp $ */ public class RequestUtils { /** * Tries several variations of the header name in an attempt to * find a value for the header. Header name should start with * format: all caps, words seperated with an underscore. JRun * uses underscore with all capital letters, Resin uses dash with * title case, and OrionServer uses dash with all capitals, etc. * * @param request The HttpRequest in which to look for Header. * @param header The String with the beginning name of Header. * * @return The String value of the header, or NULL if cannot be found. */ public static String findHeader(HttpServletRequest request, String header) { // underscore w/allCap String headerValue = request.getHeader(header); if (headerValue == null) { // underscore w/ title case header = RequestUtils.headerToTitleCase(header.toLowerCase()); headerValue = request.getHeader(header); if (headerValue == null) { // dash w/ title case header = StringUtils.replace(header, "_", "-"); headerValue = request.getHeader(header); if (headerValue == null) { // dash w/ all caps header = header.toUpperCase(); headerValue = request.getHeader(header); if (headerValue == null) { // dash w/ all lower header = header.toLowerCase(); headerValue = request.getHeader(header); if (headerValue == null) { // underscore w/ all lower header = StringUtils.replace(header, "-", "_"); headerValue = request.getHeader(header); } } } } } return headerValue; } /** * Special implemenation - just for request headers. Capitalizes * the first letter of each word. Depends on words being * separated with "_" or "-". FIXME: Assumes only one separator, * doesn't properly check header name string indices. * * @param header The HTTP header string to capitalize the distinct * words of. * @return The modified value of the header. */ public static String headerToTitleCase(String header) { int underscoreLoc = header.indexOf("_"); if (underscoreLoc == -1) underscoreLoc = header.indexOf("-"); String firstChar = header.substring(0, 1).toUpperCase(); if (underscoreLoc != -1) { String secondChar = header.substring(underscoreLoc + 1, underscoreLoc + 2) .toUpperCase(); header = firstChar + header.substring(1, underscoreLoc + 1) + secondChar + header.substring(underscoreLoc+2); } else { header = firstChar + header.substring(1); } return header; } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
