📄 controlresource.java
字号:
// ControlResource.java// $Id: ControlResource.java,v 1.10 2002/06/20 11:28:34 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.http;import java.util.Enumeration;import java.util.Hashtable;import java.util.NoSuchElementException;import java.util.Properties;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL;import org.w3c.util.ObservableProperties;import org.w3c.tools.resources.AbstractContainer;import org.w3c.tools.resources.AttributeHolder;import org.w3c.tools.resources.DummyResourceReference;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ResourceReference;import org.w3c.tools.resources.ServerInterface;class ControlResourceEnumeration implements Enumeration { private static final String ids[] = { "checkpoint", "save", "restart", "shutdown" }; int idx = 0; public boolean hasMoreElements() { return false; } public Object nextElement() {// if ( idx >= ids.length ) throw new NoSuchElementException("control resource enumeration");// return ids[idx++]; } ControlResourceEnumeration() { this.idx = 0; }}public class ControlResource extends AbstractContainer { protected httpd server = null; protected ResourceReference self = null; public void registerResource(String n, Resource c, Hashtable d) { throw new RuntimeException("static container"); } public void delete(String name) { throw new RuntimeException("static container"); } public ResourceReference createDefaultResource(String name) { throw new RuntimeException("static container"); } protected void saveProperties() { ObservableProperties props = server.getProperties(); File propfile = new File(props.getString(httpd.PROPS_P, null)); // Did we guessed were the place to save the property file ? if ( propfile == null) { throw new RuntimeException("Unable to save properties: property "+ httpd.PROPS_P+" undefined."); } else { try { FileOutputStream fout = new FileOutputStream(propfile); server.getProperties().store (fout, "Jigsaw written") ; fout.close() ; } catch (IOException ex) { // FIXME } } server.errlog ("Properties " + propfile + " have been saved."); } public ResourceReference lookup(String name) { if ( name.equalsIgnoreCase("checkpoint") ) { server.startCheckpoint(); } else if ( name.equalsIgnoreCase("save") ) { saveProperties(); server.checkpoint(); } else if ( name.equalsIgnoreCase("restart") ) { server.restart(); } else if ( name.equalsIgnoreCase("stop") ) { server.shutdown(); } if (self == null) self = new DummyResourceReference(this); return self; } /** * Get the server this resource is served by. * @return The first instance of Jigsaw this resource was attached to. */ public ServerInterface getServer() { return server; } private String computeHelpUrl() { try { URL url = new URL(getServer().getDocumentationURL()); URL docurl = new URL(url.getProtocol(), url.getHost(), url.getPort(), "/Doc/Overview.html"); return docurl.toExternalForm(); } catch (Exception ex) { ex.printStackTrace(); return null; } } synchronized public Object getValue (int idx, Object def) { if ((idx == ATTR_HELP_URL) && (values[ATTR_HELP_URL] == null)) values[ATTR_HELP_URL] = computeHelpUrl(); return super.getValue(idx, def); } public Enumeration enumerateResourceIdentifiers(boolean all) { return new ControlResourceEnumeration(); } public ControlResource(httpd server) { this.server = server; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -