⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configresourceindexer.java

📁 很棒的web服务器源代码
💻 JAVA
字号:
// ConfigResourceIndexer.java// $Id: ConfigResourceIndexer.java,v 1.3 2000/07/13 09:49:00 ylafon Exp $// (c) COPYRIGHT MIT,INRIA and Keio, 2000.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.indexer;import java.io.File;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.util.Enumeration;import java.util.Hashtable;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ResourceFrame;import org.w3c.tools.resources.ContainerResource;import org.w3c.tools.resources.RequestInterface;import org.w3c.tools.resources.indexer.SampleResourceIndexer;import org.w3c.www.mime.MimeParser;import org.w3c.www.http.MimeParserMessageFactory;import org.w3c.www.http.HttpEntityMessage;import org.w3c.www.http.HeaderDescription;import org.w3c.jigsaw.frames.HTTPFrame;import org.w3c.www.mime.MimeType;/** * This indexer allow to add a configuration file * to overwrite the computed configuration * for now, ./foo.html will have its configuration file in * ./.meta/foo.html.meta * but it can be extended to match other filename. */public class ConfigResourceIndexer extends SampleResourceIndexer {    /**     * compute and return the file containing the configuration     */    private File getConfigFile(File directory, String name) {	File configdir = new File(directory, ".meta");	if (configdir.exists() && configdir.isDirectory()) {	    File config = new File(configdir, name + ".meta");	    if (config.exists() && !config.isDirectory())		return config;	}	return null;    }		    /**     * Try to create a resource for the given file.     * This method makes its best efforts to try to build a default     * resource out of a file.      * @param directory The directory the file is in.     * @param name The name of the file.     * @param defs Any default attribute values that should be provided     *    to the created resource at initialization time.     * @return A Resource instance, or <strong>null</strong> if the given     *    file can't be truned into a resource given our configuration     *    database.     */    public Resource createResource(ContainerResource container,				   RequestInterface request,				   File directory,				   String name,				   Hashtable defs)     {	Resource r = super.createResource(container, request, directory, 					  name, defs);	Class proto = null;	try {	    proto = Class.forName("org.w3c.jigsaw.frames.HTTPFrame");	} catch (Exception ex) {	    // fatal error!	    return r;	}	if (r == null)	    return r;	HTTPFrame frame = null;	ResourceFrame rf[] = r.collectFrames(proto);	if (rf != null) {	    frame = (HTTPFrame) rf[0];	}	if (frame == null) {	    return r;	}	File config = getConfigFile(directory, name);	if (config != null) {	    // we found a configuration file, do some more processing!	    try {		// first, extract and parse the config file		BufferedInputStream buf;		buf = new BufferedInputStream(new FileInputStream(config));		MimeParser p = new MimeParser(buf,					      new MimeParserMessageFactory());		HttpEntityMessage msg = (HttpEntityMessage) p.parse();		Enumeration e = msg.enumerateHeaderDescriptions();		// then override some configuration		while ( e.hasMoreElements() ) {		    // use some well known descriptions		    HeaderDescription d = (HeaderDescription) e.nextElement();		    if ( d.isHeader(HttpEntityMessage.H_CONTENT_TYPE)) {			MimeType mtype = null;			try {			    mtype = msg.getContentType();			} catch (Exception ex) {			    // ok by default use something binary			    mtype = MimeType.APPLICATION_OCTET_STREAM;			}			if (mtype.hasParameter("charset")) {			    String charset =mtype.getParameterValue("charset");			    MimeType m = new MimeType(mtype.getType(),						      mtype.getSubtype());			    frame.setValue("content-type", m);			    frame.setValue("charset", charset);			} else {			    frame.setValue("content-type", mtype);			}			continue;		    }		    if ( d.isHeader(HttpEntityMessage.H_CONTENT_LANGUAGE)) {			String lang[] = msg.getContentLanguage();			if (lang.length > 0 ) {			    frame.setValue("content-language", lang[0]);			}			continue;		    }		    if ( d.isHeader(HttpEntityMessage.H_CONTENT_ENCODING)) {			String enc[] = msg.getContentEncoding();			if (enc.length > 0 ) {			    frame.setValue("content-encoding", enc[0]);			}			continue;		    }		}	    } catch (Exception ex) {		// do nothing, keep configured as it was		// by the super indexer		ex.printStackTrace();	    }	}	return r;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -