resourcefilter.java

来自「很棒的web服务器源代码」· Java 代码 · 共 200 行

JAVA
200
字号
// ResourceFilter.java// $Id: ResourceFilter.java,v 1.10 2002/06/26 17:27:43 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.tools.resources ;import java.io.OutputStream;import java.util.Hashtable;public class ResourceFilter extends ResourceFrame     implements FilterInterface {    /**     * Get our target resource.     */    public Resource getTargetResource() {	Resource target = (Resource) getResource();	while (target instanceof ResourceFrame) {	    target = ((ResourceFrame)target).getResource();	}	return target;    }    /**     * Lookup time filtering.     * This method is called while Jigsaw performs resource lookup. Each time     * a lookup end up on the target resource of that filter, this method     * will be called.     * @param ls The current lookup state.     * @param lr The current lookup result.     * @return A boolean, <strong>true</strong> if this filter has performed     * the whole lookup, and side-effect the lookup result appropriatelly,     * <strong>false</strong> otherwise.     * @exception ProtocolException If processing should be interrupted,     * because an abnormal situation occured.     */    public boolean lookup(LookupState ls, LookupResult lr) 	throws ProtocolException    {	return false;    }    /**     * Simplified ingoingFilter API.     * This is a default, simplified API to the ingoing filter method.     * @param request The request to filter.     * @return A Reply instance, or <strong>null</strong> if processing     * should continue normally.     * @exception ProtocolException If processing should be interrupted,     * because an abnormal situation occured.     */    public ReplyInterface ingoingFilter(RequestInterface request) 	throws ProtocolException    {	return null;    }    /**     * The ingoingFilter method.     * This is the method that really gets called by Jigsaw core. By default     * it will invoke the simpler <code>ingoingFilter</code> method,     * taking only the request has a parameter.     * @param request The request that is about to be handled.     * @param filters The whole filter list to be applied to the resource.     * @param i A pointer into the above array, indicating which filters     * have already been triggered (the one whose index are lower than      * <strong>i</strong>), and what filters have to be triggered (the one     * whose index are greater or equal to <strong>i+1</strong>).     * @return A Reply instance, if the filter did know how to answer     * the request without further processing, <strong>null</strong>     * otherwise.     * @exception ProtocolException If processing should be interrupted,     * because an abnormal situation occured.     */    public ReplyInterface ingoingFilter(RequestInterface request,					FilterInterface filters[], 					int i)	throws ProtocolException    {	return ingoingFilter(request);    }    /**     * Simplified API to the outgoing filter metho.     * This is a simplified API to the ougoing filter method, you can either     * overide this method, or the more powerfull one.     * @param request The original request.     * @param reply It's original reply.     * @return A Reply instance, or <strong>null</strong> if processing     * should continue normally.     * @exception ProtocolException If processing should be interrupted,      * because an abnormal situation occured.     */    public ReplyInterface outgoingFilter(RequestInterface request,					 ReplyInterface reply) 	throws ProtocolException    {	return null;    }    public ReplyInterface exceptionFilter(RequestInterface request,					  ProtocolException ex,					  FilterInterface filters[],					  int i) {	return null;    }    /**     * The outgoingFilter method.     * This method is the one that gets called by Jigsaw core. By default it     * will call the simpler <code>outgoingFilter</code> method that takes     * only the request and the reply as parameters.     * @param request The request that has been processed.     * @param reply The original reply as emitted by the resource.     * @param filters The whole filter that applies to the resource.     * @param i The current index of filters. The <em>i</em> filter is ourself,     * filters with lower indexes have already been applied, and filters with     * greater indexes are still to be applied.     * @return A Reply instance, if that filter know how to complete the     * request processing, or <strong>null</strong> if reminaing filters     * are to be called by Jigsaw engine.     * @exception ProtocolException If processing should be interrupted,     * because an abnormal situation occured.     */    public ReplyInterface outgoingFilter(RequestInterface request,					 ReplyInterface reply,					 FilterInterface filters[],					 int fidx) 	throws ProtocolException    {	ReplyInterface fr = outgoingFilter(request, reply);	return (fr != reply) ? fr : null;    }    public OutputStream outputFilter(RequestInterface request,                                     ReplyInterface reply,                                     OutputStream output) {        return output;    }    /**     * Set the values. (MUST be called before initialize).     * @param defs The Hashtable containing the values.     */    public void pickleValues(Hashtable defs) {	Object nvalues[] = new Object[attributes.length];	for (int i = 0 ; i < nvalues.length ; i++) {	    String attrname = attributes[i].getName() ;	    Object def      = defs.get(attrname) ;	    // note that protocol frames have usually names in the	    // frame-XX serie, so it is valid to save (big) on this.	    if ((def != null) && ((i == ATTR_HELP_URL) ||				  (i == ATTR_IDENTIFIER))		&& (def instanceof String)) {		nvalues[i] = ((String) def).intern();	    } else {	    		nvalues[i] = def ;	    }	}	this.values = nvalues ;    }   /**     * Initialization method for attribute holders.     * This method allows to initialize an attribute holder by providing     * its attributes values through a Hashtable mapping attribute names     * to attribute values.     * @param defs The Hashtable containing the default values.     */    public void initialize(Hashtable defs) {	Object values[] = ((this.values == null)			   ? new Object[attributes.length] 			   : this.values);	for (int i = 0 ; i < values.length ; i++) {	    String attrname = attributes[i].getName() ;	    Object def      = defs.get(attrname) ;	    if ( values[i] == null ) {		// for help_url, we can save lots of space by using 		// String.intern()		if ((def != null)  && ((i == ATTR_HELP_URL) ||				       (i == ATTR_IDENTIFIER))		    && (def instanceof String)) {		    values[i] = ((String) def).intern();		} else {	    		    values[i] = def ;		}	    }	}	initialize(values) ;    }}

⌨️ 快捷键说明

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