Mercurial Hosting > luan
changeset 1024:be50ffc0ad5c
remove BufferCache
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 01 Nov 2016 03:46:28 -0600 |
parents | 27f3dc761452 |
children | cf0367978d8b |
files | src/org/eclipse/jetty/io/BufferCache.java |
diffstat | 1 files changed, 0 insertions(+), 192 deletions(-) [+] |
line wrap: on
line diff
diff -r 27f3dc761452 -r be50ffc0ad5c src/org/eclipse/jetty/io/BufferCache.java --- a/src/org/eclipse/jetty/io/BufferCache.java Tue Nov 01 03:44:46 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.io; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - - -/* ------------------------------------------------------------------------------- */ -/** - * Stores a collection of {@link Buffer} objects. - * Buffers are stored in an ordered collection and can retreived by index or value - * - */ -public class BufferCache -{ - private final HashMap _bufferMap = new HashMap(); - private final TreeMap _stringMap = new TreeMap(); - private final ArrayList _index = new ArrayList(); - - /* ------------------------------------------------------------------------------- */ - /** Add a buffer to the cache at the specified index. - * @param value The content of the buffer. - */ - public CachedBuffer add(String value, int ordinal) - { - CachedBuffer buffer= new CachedBuffer(value, ordinal); - _bufferMap.put(buffer, buffer); - _stringMap.put(value.toLowerCase(), buffer); - while ((ordinal - _index.size()) >= 0) - _index.add(null); - if (_index.get(ordinal)==null) - _index.add(ordinal, buffer); - return buffer; - } - - public CachedBuffer get(int ordinal) - { - if (ordinal < 0 || ordinal >= _index.size()) - return null; - return (CachedBuffer)_index.get(ordinal); - } - - public CachedBuffer get(Buffer buffer) - { - return (CachedBuffer)_bufferMap.get(buffer); - } - - public CachedBuffer get(String value) - { - return (CachedBuffer)_stringMap.get(value.toLowerCase()); - } - - public Buffer lookup(Buffer buffer) - { - if (buffer instanceof CachedBuffer) - return buffer; - - Buffer b= get(buffer); - if (b == null) - { - if (buffer instanceof Buffer.CaseInsensitve) - return buffer; - return new ByteArrayBuffer.CaseInsensitive(buffer.asArray(),0,buffer.length(),Buffer.IMMUTABLE); - } - - return b; - } - - public CachedBuffer getBest(byte[] value, int offset, int maxLength) - { - String key = new String(value,offset,maxLength).toLowerCase(); - CachedBuffer buffer = (CachedBuffer)_stringMap.get(key); - if( buffer != null ) - return buffer; - Map.Entry floor = _stringMap.floorEntry(key); - Map.Entry ceiling = _stringMap.ceilingEntry(key); - if( floor==null ) { - if( ceiling==null ) - return null; - String ceilingKey = (String)ceiling.getKey(); - return key.charAt(0) == ceilingKey.charAt(0) ? (CachedBuffer)ceiling.getValue() : null; - } else { - String floorKey = (String)floor.getKey(); - if( ceiling==null ) - return key.charAt(0) == floorKey.charAt(0) ? (CachedBuffer)floor.getValue() : null; - String ceilingKey = (String)ceiling.getKey(); - int n = Math.min( key.length(), Math.min( floorKey.length(), ceilingKey.length() ) ); - int i = 0; - while( ++i <= n && key.regionMatches(0,floorKey,0,i) && key.regionMatches(0,ceilingKey,0,i) ); - return key.regionMatches(0,floorKey,0,i) ? (CachedBuffer)floor.getValue() : key.regionMatches(0,ceilingKey,0,i) || i > 1 ? (CachedBuffer)ceiling.getValue() : null; - } -/* - Entry entry = _stringMap.getBestEntry(value, offset, maxLength); - if (entry!=null) - return (CachedBuffer)entry.getValue(); - return null; -*/ - } - - public Buffer lookup(String value) - { - Buffer b= get(value); - if (b == null) - { - return new CachedBuffer(value,-1); - } - return b; - } - - public String toString(Buffer buffer) - { - return lookup(buffer).toString(); - } - - public int getOrdinal(String value) - { - CachedBuffer buffer = (CachedBuffer)_stringMap.get(value.toLowerCase()); - return buffer==null?-1:buffer.getOrdinal(); - } - - public int getOrdinal(Buffer buffer) - { - if (buffer instanceof CachedBuffer) - return ((CachedBuffer)buffer).getOrdinal(); - buffer=lookup(buffer); - if (buffer!=null && buffer instanceof CachedBuffer) - return ((CachedBuffer)buffer).getOrdinal(); - return -1; - } - - public static class CachedBuffer extends ByteArrayBuffer.CaseInsensitive - { - private final int _ordinal; - private HashMap _associateMap=null; - - public CachedBuffer(String value, int ordinal) - { - super(value); - _ordinal= ordinal; - } - - public int getOrdinal() - { - return _ordinal; - } - - public CachedBuffer getAssociate(Object key) - { - if (_associateMap==null) - return null; - return (CachedBuffer)_associateMap.get(key); - } - - // TODO Replace Associate with a mime encoding specific solution - public void setAssociate(Object key, CachedBuffer associate) - { - if (_associateMap==null) - _associateMap=new HashMap(); - _associateMap.put(key,associate); - } - } - - - @Override - public String toString() - { - return "CACHE["+ - "bufferMap="+_bufferMap+ - ",stringMap="+_stringMap+ - ",index="+_index+ - "]"; - } -}