Package org.w3c.jigsaw.http

Source Code of org.w3c.jigsaw.http.ControlResource

// 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.html

package 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;
    }

  
}

TOP

Related Classes of org.w3c.jigsaw.http.ControlResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.