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

📄 passdirectory.java

📁 很棒的web服务器源代码
💻 JAVA
字号:
// PassDirectory.java// $Id: PassDirectory.java,v 1.9 2000/08/16 21:37:44 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.resources ;import java.io.File;import org.w3c.tools.resources.Attribute;import org.w3c.tools.resources.AttributeHolder;import org.w3c.tools.resources.AttributeRegistry;import org.w3c.tools.resources.ContainerResource;import org.w3c.tools.resources.DirectoryResource;import org.w3c.tools.resources.FileAttribute;import org.w3c.tools.resources.InvalidResourceException;import org.w3c.tools.resources.MultipleLockException;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ResourceReference;import org.w3c.tools.resources.ServerInterface;public class PassDirectory extends org.w3c.jigsaw.resources.DirectoryResource {    /**     * Attribute index - The target physicall directory of this resource.     */    protected static int ATTR_PASSTARGET = -1 ;    static {	Attribute a   = null ;	Class     cls = null ;	// Get a pointer to our class.	try {	    cls = Class.forName("org.w3c.jigsaw.resources.PassDirectory") ;	} catch (Exception ex) {	    ex.printStackTrace() ;	    System.exit(1) ;	}	// The directory attribute.	a = new FileAttribute("pass-target"			      , null			      , Attribute.EDITABLE);	ATTR_PASSTARGET = AttributeRegistry.registerAttribute(cls, a) ;    }    /**     * Catch side-effects on pass-target, to absolutize it.     * @param idx The attribute to set.     * @param value The new value.     */    public void setValue(int idx, Object value) {	if ( (idx == ATTR_IDENTIFIER) || (idx == ATTR_PASSTARGET)) {	    try {		deleteChildren();	    } catch (MultipleLockException ex) {		//nothing to do	    }	}	super.setValue(idx, value);	if ( idx == ATTR_IDENTIFIER ) {	     ResourceReference rr = getParent();	    if (rr != null) {		try {		    Resource parent = rr.lock();		    if (parent.definesAttribute("directory")) {			File pdir = (File) parent.getValue("directory", null);			if ( pdir != null ) {			    // Compute and set our directory attribute:			    File dir = new File(pdir, getIdentifier()) ;			    super.setValue(ATTR_DIRECTORY, dir) ;			}		    }		} catch (InvalidResourceException ex) {	  		} finally {		    rr.unlock();		}	    }	    values[ATTR_PASSTARGET] = null;	    values[ATTR_DIRSTAMP]   = new Long(-1);	} else if ( idx == ATTR_PASSTARGET ) {	    File file = (File) value;	    if ( ! file.isAbsolute() ) {		// Make it absolute, relative to the server space.		File abs = new File(getServer().getRootDirectory()				    , file.toString());		values[ATTR_PASSTARGET] = abs;		values[ATTR_DIRECTORY]  = abs;	    } else {		values[ATTR_PASSTARGET] = value;		values[ATTR_DIRECTORY]  = value;	    }	    values[ATTR_DIRSTAMP] = new Long(-1);	}    }    /**     * The getDirectory method now returns the pass-directory.     * @return The pass target location.     */    public File getDirectory() {	File dir = (File) getValue(ATTR_PASSTARGET, null) ;	if (dir == null)	    dir = super.getDirectory();	return dir;    }    /**     * Make the directory attribute default to the target location.     * This is required for classes that rely on the directory attribute to     * compute their own attributes.     * @param values The values we should initialized from.     */    public void initialize(Object values[]) {	super.initialize(values);	File target = getDirectory();	if ( target != null ) 	    setValue(ATTR_DIRECTORY, target);    }}

⌨️ 快捷键说明

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