1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. 4 // ------------------------------------------------------------------------ 5 // All rights reserved. This program and the accompanying materials 6 // are made available under the terms of the Eclipse Public License v1.0 7 // and Apache License v2.0 which accompanies this distribution. 8 // 9 // The Eclipse Public License is available at 10 // http://www.eclipse.org/legal/epl-v10.html 11 // 12 // The Apache License v2.0 is available at 13 // http://www.opensource.org/licenses/apache2.0.php 14 // 15 // You may elect to redistribute this code under either of these licenses. 16 // ======================================================================== 17 // 18 19 package org.eclipse.jetty.http; 20 21 import org.eclipse.jetty.io.Buffer; 22 import org.eclipse.jetty.io.BufferCache; 23 import org.eclipse.jetty.io.ByteArrayBuffer; 24 25 /** 26 * Cached HTTP Header values. 27 * This class caches the conversion of common HTTP Header values to and from {@link ByteArrayBuffer} instances. 28 * The resource "/org/eclipse/jetty/useragents" is checked for a list of common user agents, so that repeated 29 * creation of strings for these agents can be avoided. 30 * 31 * 32 */ 33 public class HttpHeaderValues extends BufferCache 34 { 35 public final static String 36 CLOSE="close", 37 CHUNKED="chunked", 38 GZIP="gzip", 39 IDENTITY="identity", 40 KEEP_ALIVE="keep-alive", 41 CONTINUE="100-continue", 42 PROCESSING="102-processing", 43 TE="TE", 44 BYTES="bytes", 45 NO_CACHE="no-cache", 46 UPGRADE="Upgrade"; 47 48 public final static int 49 CLOSE_ORDINAL=1, 50 CHUNKED_ORDINAL=2, 51 GZIP_ORDINAL=3, 52 IDENTITY_ORDINAL=4, 53 KEEP_ALIVE_ORDINAL=5, 54 CONTINUE_ORDINAL=6, 55 PROCESSING_ORDINAL=7, 56 TE_ORDINAL=8, 57 BYTES_ORDINAL=9, 58 NO_CACHE_ORDINAL=10, 59 UPGRADE_ORDINAL=11; 60 61 public final static HttpHeaderValues CACHE= new HttpHeaderValues(); 62 63 public final static Buffer 64 CLOSE_BUFFER=CACHE.add(CLOSE,CLOSE_ORDINAL), 65 CHUNKED_BUFFER=CACHE.add(CHUNKED,CHUNKED_ORDINAL), 66 GZIP_BUFFER=CACHE.add(GZIP,GZIP_ORDINAL), 67 IDENTITY_BUFFER=CACHE.add(IDENTITY,IDENTITY_ORDINAL), 68 KEEP_ALIVE_BUFFER=CACHE.add(KEEP_ALIVE,KEEP_ALIVE_ORDINAL), 69 CONTINUE_BUFFER=CACHE.add(CONTINUE, CONTINUE_ORDINAL), 70 PROCESSING_BUFFER=CACHE.add(PROCESSING, PROCESSING_ORDINAL), 71 TE_BUFFER=CACHE.add(TE,TE_ORDINAL), 72 BYTES_BUFFER=CACHE.add(BYTES,BYTES_ORDINAL), 73 NO_CACHE_BUFFER=CACHE.add(NO_CACHE,NO_CACHE_ORDINAL), 74 UPGRADE_BUFFER=CACHE.add(UPGRADE,UPGRADE_ORDINAL); 75 76 hasKnownValues(int httpHeaderOrdinal)77 public static boolean hasKnownValues(int httpHeaderOrdinal) 78 { 79 switch(httpHeaderOrdinal) 80 { 81 case HttpHeaders.CONNECTION_ORDINAL: 82 case HttpHeaders.TRANSFER_ENCODING_ORDINAL: 83 case HttpHeaders.CONTENT_ENCODING_ORDINAL: 84 return true; 85 } 86 return false; 87 } 88 } 89