1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2016 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 java.nio.ByteBuffer; 22 23 import org.eclipse.jetty.util.ArrayTrie; 24 import org.eclipse.jetty.util.BufferUtil; 25 import org.eclipse.jetty.util.Trie; 26 27 /* ------------------------------------------------------------------------------- */ 28 /** 29 */ 30 public enum HttpScheme 31 { 32 HTTP("http"), 33 HTTPS("https"), 34 WS("ws"), 35 WSS("wss"); 36 37 /* ------------------------------------------------------------ */ 38 public final static Trie<HttpScheme> CACHE= new ArrayTrie<HttpScheme>(); 39 static 40 { 41 for (HttpScheme version : HttpScheme.values()) 42 CACHE.put(version.asString(),version); 43 } 44 45 private final String _string; 46 private final ByteBuffer _buffer; 47 48 /* ------------------------------------------------------------ */ 49 HttpScheme(String s) 50 { 51 _string=s; 52 _buffer=BufferUtil.toBuffer(s); 53 } 54 55 /* ------------------------------------------------------------ */ 56 public ByteBuffer asByteBuffer() 57 { 58 return _buffer.asReadOnlyBuffer(); 59 } 60 61 /* ------------------------------------------------------------ */ 62 public boolean is(String s) 63 { 64 return s!=null && _string.equalsIgnoreCase(s); 65 } 66 67 public String asString() 68 { 69 return _string; 70 } 71 72 /* ------------------------------------------------------------ */ 73 @Override 74 public String toString() 75 { 76 return _string; 77 } 78 79 }