001: /*
002: * CacheContext.java November 2005
003: *
004: * Copyright (C) 2005, Niall Gallagher <niallg@users.sf.net>
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013: * GNU Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General
016: * Public License along with this library; if not, write to the
017: * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
018: * Boston, MA 02111-1307 USA
019: */
020:
021: package simple.http.serve;
022:
023: import java.io.IOException;
024: import java.io.File;
025:
026: /**
027: * The <code>CacheContext</code> object is used to provide a caching
028: * implementation of the context. This will ensure that frequent
029: * requests for <code>Content</code> objects will hit a cache and
030: * thus require less I/O to fulfill the request. The also provides a
031: * means to share caching across multiple objects, which share the
032: * context. The default maximum cache size is eight kilobytes.
033: *
034: * @author Niall Gallagher
035: *
036: * @see simple.http.serve.CacheContentFactory
037: */
038: public class CacheContext extends FactoryContext {
039:
040: /**
041: * This is the default limit to the files sizes to cache.
042: */
043: private static final int DEFAULT_SIZE = 8192;
044:
045: /**
046: * Constructor for the <code>CacheContext</code> object. This is
047: * used to create a context for the current working directory.
048: * This will use a cache that has a default maximum size of eight
049: * kilobytes. Also, items remain cached for at most one minute.
050: */
051: public CacheContext() {
052: this (new File("."));
053: }
054:
055: /**
056: * Constructor for the <code>CacheContext</code> object. This is
057: * used to create a context instance for the specified directory.
058: * This will use a cache that has a default maximum size of eight
059: * kilobytes. Also, items remain cached for at most one minute.
060: *
061: * @param base this is the directory specifying the context root
062: */
063: public CacheContext(File base) {
064: this (base, DEFAULT_SIZE);
065: }
066:
067: /**
068: * Constructor for the <code>CacheContext</code> object. This is
069: * used to create a context instance for the specified directory.
070: * This will use a cache that has a default maximum size of eight
071: * kilobytes. Also, items remain cached for at most one minute.
072: *
073: * @param base this is the directory specifying the context root
074: * @param size this is the maximum file size that will be cached
075: */
076: public CacheContext(File base, int size) {
077: this (base, new File[] { base }, size);
078: }
079:
080: /**
081: * Constructor for the <code>CacheContext</code> object. This is
082: * used to create a context instance for the specified directory.
083: * This will use a cache that has a default maximum size of eight
084: * kilobytes. Also, items remain cached for at most one minute.
085: * This will make use of one directory to find configuration.
086: *
087: * @param base this is the directory specifying the context root
088: * @param path this is the directory file used for configuration
089: */
090: public CacheContext(File base, File path) {
091: this (base, new File[] { path });
092: }
093:
094: /**
095: * Constructor for the <code>CacheContext</code> object. This is
096: * used to create a context instance for the specified directory.
097: * This will use a cache that has a default maximum size of eight
098: * kilobytes. Also, items remain cached for at most one minute.
099: * This will make use of the file list to find configuration.
100: *
101: * @param base this is the directory specifying the context root
102: * @param list this is the range of files used for configuration
103: */
104: public CacheContext(File base, File[] list) {
105: this (base, list, DEFAULT_SIZE);
106: }
107:
108: /**
109: * Constructor for the <code>CacheContext</code> object. This is
110: * used to create a context instance for the specified directory.
111: * This will use a cache that has a default maximum size of eight
112: * kilobytes. Also, items remain cached for at most one minute.
113: * This will make use of the file list to find configuration.
114: *
115: * @param base this is the directory specifying the context root
116: * @param size this is the maximum file size that will be cached
117: * @param list this is the range of files used for configuration
118: */
119: public CacheContext(File base, File[] list, int size) {
120: super (new CacheContentFactory(size), base, list);
121: }
122: }
|