Package org.w3c.jigsaw.daemon

Source Code of org.w3c.jigsaw.daemon.DaemonProperties

// DaemonProperties.java
// $Id: DaemonProperties.java,v 1.12 2000/08/16 21:37:34 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1996.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigsaw.daemon;

import java.util.Hashtable;
import java.util.Properties;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

import org.w3c.util.ObservableProperties;

/**
* Subclass of Properties, to deal with daemon specific usage of them.
* This class refines the basic Properties class, in order to tune them for
* ServerHandler specific needs:
* <ul>
* <li>Properties can be observed through the PropertyMonitoring interface,
* <li>Properties are multiplexed according to the server identifier. Two
* servers can rely on the same set of properties, but each of them can
* have its own property value. Eg the org.w3c.jigsaw.http package host
* property can be set fro server1 to host1 and for server2 to host2.
* This is done by defining server1.org.w3c.jigsaw.http.host
* and server2.org.w3c.jigsaw.http.host
* </ul>
* <p>Each property can be monitored, to allow for dynamic reconfiguration of
* the server.
* @see org.w3c.util.PropertyMonitoring
*/

public class DaemonProperties {
    /**
     * The set of loaded properties set.
     */
    protected Hashtable propspace = new Hashtable(5);
    /**
     * The global set of properties (inherited by all spaces).
     */
    protected Properties globprops = null;
    /**
     * Our base config directory.
     */
    protected File configdir = null;

    /**
     * Extend a property space.
     * @param id The identifier of the property set to extend.
     * @param in The input stream containing Java properties to add.
     * @exception IOException If the input stream couldn't be read.
     */

    public ObservableProperties loadPropertySpace(String id, InputStream in)
  throws IOException
    {
  ObservableProperties p = (ObservableProperties) propspace.get(id);
  if ( p == null ) {
      p = new ObservableProperties(globprops);
      propspace.put(id, p);
  }
  p.load(in);
  return p;
    }

    /**
     * Load in the default properties for the given space.
     * The file from which properties are loaded is kept itself as the
     * <code>org.w3c.jigsaw.propfile</code> property.
     * @param id The identifier of the property set to load.
     * @exception FileNotFoundException If the default property file wasn't
     * found.
     * @exception IOException If default property file couldn't be read.
     */

    public ObservableProperties loadPropertySpace(String id)
  throws IOException, FileNotFoundException
    {
  File                 file = new File(configdir, id+".props");
  ObservableProperties p    = null;
  p = loadPropertySpace(id, (new BufferedInputStream
           (new FileInputStream(file))));
  p.put(org.w3c.jigsaw.http.httpd.PROPS_P, file.getAbsolutePath());
  return p;
    }

    /**
     * Get the properties for the given space.
     * @param id The identifier for a property set space.
     * @return An ObservableProperties instance, or <strong>null</strong>.
     */

    public ObservableProperties getPropertySpace(String id) {
  return (ObservableProperties) propspace.get(id);
    }

    // FIXME
    public void save() {
  System.out.println("DaemonProperties.save: not implemented !");
    }

    // FIXME
    public void savePropertySpace(String id) {
  System.out.println("DaemonProperties.save ["+id+"]; not implemented!");
    }

    // FIXME doc
    public void load(InputStream in)
  throws IOException
    {
  if ( globprops == null )
      globprops = new Properties();
  globprops.load(in);
    }

    // FIXME doc
    public String getProperty(String name) {
  return (globprops != null) ? globprops.getProperty(name) : null;
    }

    public String getString(String name, String def) {
  return (globprops != null) ? globprops.getProperty(name, def) : def;
    }

    /**
     * @param props The global properties to use in all spaces.
     */

    public DaemonProperties (File configdir, Properties props) {
  this.configdir = configdir;
  this.globprops = props;
    }

}

 
TOP

Related Classes of org.w3c.jigsaw.daemon.DaemonProperties

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.