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

📄 externalcontainer.java

📁 很棒的web服务器源代码
💻 JAVA
字号:
// ExternalContainer.java// $Id: ExternalContainer.java,v 1.6 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.util.Enumeration;import java.util.Hashtable;import java.io.File;/** * A Container which manage an external store, outside the space. */public abstract class ExternalContainer extends ContainerResource {    /**     * Our transientFlag, is true that container must not be saved.     */     protected boolean transientFlag = false;    /**     * Our external repository.     */    protected File    repository    = null;    public  ResourceReference createDefaultResource(String name) {	throw new RuntimeException("not extensible");    }    /**     * Mark this resource as having been modified.     */    public void markModified() {	if (transientFlag) {	    setValue(ATTR_LAST_MODIFIED, new Long(System.currentTimeMillis()));	} else {	    super.markModified();	}    }    /**     * acquire children and notify space if we will be saved.     */    protected synchronized void acquireChildren() {	if (!acquired) {	    ResourceSpace space = getSpace();	    if (repository != null) {		space.acquireChildren( getChildrenSpaceEntry() , 				       repository, 				       transientFlag );	    } else {		// if we have been saved one time yet.		space.acquireChildren( getChildrenSpaceEntry() );	    }	    acquired = true;	}    }    /**     * Delete this Resource instance , and remove it from its store.     * This method will erase definitely this resource, for ever, by removing     * it from its resource store (when doable).     * @exception MultipleLockException if someone has locked this resource.     */    public synchronized void delete() 	throws MultipleLockException    {	if (transientFlag) {	    // transient, so don't try to delete myself.	    ResourceSpace space = getSpace();	    if (space != null) {		acquireChildren();		// check for lock on children		Enumeration       e        = enumerateResourceIdentifiers();		ResourceReference rr       = null;		Resource          resource = null;		while (e.hasMoreElements()) {		    rr = lookup((String) e.nextElement());		    if (rr != null) {			try {			    synchronized (rr) {				resource = rr.lock();				resource.delete();			    }	  			} catch (InvalidResourceException ex) {			    // nothing, remove invalid resource.			} finally {			    rr.unlock();			}		    }		}		space.deleteChildren(getChildrenSpaceEntry());	    }	} else {	    super.delete();	}    }    /**     * Get The repository for this external container.     * Warning: called in the constructor!     * @param context The container context.     * @return A File instance     */    abstract public File getRepository(ResourceContext context);    public void initialize(Object values[]) {	super.initialize(values);	if (repository == null)	    repository = getRepository(getContext());    }    /**     * @param id The identifier.     * @param context The default context.     * @param transientFlag The transient flag.     */    public ExternalContainer (String identifier, 			      ResourceContext context,			      boolean transientFlag)     {	Hashtable h = new Hashtable(3);	h.put(id, identifier);	h.put(co, context);	initialize(h);	this.acquired      = false; 	this.transientFlag = transientFlag;	if (transientFlag)	    context.setResourceReference( new DummyResourceReference(this));    }    public ExternalContainer () {	super();	this.acquired      = false;	this.transientFlag = false;	this.repository    = null;    }}

⌨️ 快捷键说明

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