Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License. You can obtain
  * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
  * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
  * Sun designates this particular file as subject to the "Classpath" exception
  * as provided by Sun in the GPL Version 2 section of the License file that
  * accompanied this code.  If applicable, add the following below the License
  * Header, with the fields enclosed by brackets [] replaced by your own
  * identifying information: "Portions Copyrighted [year]
  * [name of copyright owner]"
  *
  * Contributor(s):
  *
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
  *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
  * Copyright 2004 The Apache Software Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 
 
 package org.apache.tomcat.util.http;
 
 
 import java.io.*;
 import java.net.*;
 import java.util.*;
 import java.text.*;

Handle (internationalized) HTTP messages.

Author(s):
James Duncan Davidson [duncan@eng.sun.com]
James Todd [gonzo@eng.sun.com]
Jason Hunter [jch@eng.sun.com]
Harish Prabandham
costin@eng.sun.com
 
 public class HttpMessages {
 
     private static final String STATUS_100 = "Continue";
     private static final String STATUS_101 = "Switching Protocols";
     private static final String STATUS_200 = "OK";
     private static final String STATUS_201 = "Created";
     private static final String STATUS_202 = "Accepted";
     private static final String STATUS_203 = "Non-Authoritative Information";
     private static final String STATUS_204 = "No Content";
     private static final String STATUS_205 = "Reset Content";
     private static final String STATUS_206 = "Partial Content";
     private static final String STATUS_207 = "Multi-Status";
     private static final String STATUS_300 = "Multiple Choices";
     private static final String STATUS_301 = "Moved Permanently";
     private static final String STATUS_302 = "Moved Temporarily";
     private static final String STATUS_303 = "See Other";
     private static final String STATUS_304 = "Not Modified";
     private static final String STATUS_305 = "Use Proxy";
     private static final String STATUS_307 = "Temporary Redirect";
     private static final String STATUS_400 = "Bad Request";
     private static final String STATUS_401 = "Unauthorized";
     private static final String STATUS_402 = "Payment Required";
     private static final String STATUS_403 = "Forbidden";
     private static final String STATUS_404 = "Not Found";
    private static final String STATUS_405 = "Method Not Allowed";
    private static final String STATUS_406 = "Not Acceptable";
    private static final String STATUS_407 = "Proxy Authentication Required";
    private static final String STATUS_408 = "Request Timeout";
    private static final String STATUS_409 = "Conflict";
    private static final String STATUS_410 = "Gone";
    private static final String STATUS_411 = "Length Required";
    private static final String STATUS_412 = "Precondition Failed";
    private static final String STATUS_413 = "Request Entity Too Large";
    private static final String STATUS_414 = "Request-URI Too Long";
    private static final String STATUS_415 = "Unsupported Media Type";
    private static final String STATUS_416 = "Requested Range Not Satisfiable";
    private static final String STATUS_417 = "Expectation Failed";
    private static final String STATUS_422 = "Unprocessable Entity";
    private static final String STATUS_423 = "Locked";
    private static final String STATUS_424 = "Failed Dependency";
    private static final String STATUS_500 = "Internal Server Error";
    private static final String STATUS_501 = "Not Implemented";
    private static final String STATUS_502 = "Bad Gateway";
    private static final String STATUS_503 = "Service Unavailable";
    private static final String STATUS_504 = "Gateway Timeout";
    private static final String STATUS_505 = "HTTP Version Not Supported";
    private static final String STATUS_507 = "Insufficient Storage";
    private static final ConcurrentHashMap<StringStringhttpStatusCodeMappings =
        new ConcurrentHashMap<StringString>();
    static {
        .put("sc.100");
        .put("sc.101");
        .put("sc.200");
        .put("sc.201");
        .put("sc.202");
        .put("sc.203");
        .put("sc.204");
        .put("sc.205");
        .put("sc.206");
        .put("sc.207");
        .put("sc.300");
        .put("sc.301");
        .put("sc.302");
        .put("sc.303");
        .put("sc.304");
        .put("sc.305");
        .put("sc.307");
        .put("sc.400");
        .put("sc.401");
        .put("sc.402");
        .put("sc.403");
        .put("sc.404");
        .put("sc.405");
        .put("sc.406");
        .put("sc.407");
        .put("sc.408");
        .put("sc.409");
        .put("sc.410");
        .put("sc.411");
        .put("sc.412");
        .put("sc.413");
        .put("sc.414");
        .put("sc.415");
        .put("sc.416");
        .put("sc.417");
        .put("sc.422");
        .put("sc.423");
        .put("sc.424");
        .put("sc.500");
        .put("sc.501");
        .put("sc.502");
        .put("sc.503");
        .put("sc.504");
        .put("sc.505");
        .put("sc.507");
    }
    

    
Get the status string associated with a status code. No I18N - return the messages defined in the HTTP spec. ( the user isn't supposed to see them, this is the last thing to translate) Common messages are cached.
    public static String getMessage(int status) {
        // Return the status message for the most frequently used status
        // codes directly, without any lookup
        switch (status) {
            case 200: return ;
            case 302: return ;
            case 400: return ;
            case 404: return ;
	}
        return .get("sc."status);
    }

    
Filter the specified message string for characters that are sensitive in HTML. This avoids potential attacks caused by including JavaScript codes in the request URL that is often reported in error messages.

Parameters:
message The message string to be filtered
    public static String filter(String message) {
	if (message == null)
	    return (null);
	char content[] = new char[message.length()];
	message.getChars(0, message.length(), content, 0);
	StringBuffer result = new StringBuffer(content.length + 50);
	for (int i = 0; i < content.lengthi++) {
	    switch (content[i]) {
	    case '<':
		result.append("&lt;");
		break;
	    case '>':
		result.append("&gt;");
		break;
	    case '&':
		result.append("&amp;");
		break;
	    case '"':
		result.append("&quot;");
		break;
	    default:
		result.append(content[i]);
	    }
	}
	return (result.toString());
    }
New to GrepCode? Check out our FAQ X