Package org.w3c.jigsaw.proxy

Source Code of org.w3c.jigsaw.proxy.ProxyProp

// ProxyProp.java
// $Id: ProxyProp.java,v 1.20 2004/01/06 10:09:34 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1996.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigsaw.proxy;

import java.util.Enumeration;

import java.io.File;

import org.w3c.tools.resources.Attribute;
import org.w3c.tools.resources.AttributeRegistry;
import org.w3c.tools.resources.BooleanAttribute;
import org.w3c.tools.resources.IntegerAttribute;
import org.w3c.tools.resources.StringArrayAttribute;
import org.w3c.tools.resources.StringAttribute;

import org.w3c.jigsaw.http.httpd;

import org.w3c.jigsaw.config.PropertySet;

import org.w3c.util.ObservableProperties;

import org.w3c.www.protocol.http.micp.MICPProp;

import org.w3c.www.protocol.http.HttpManager;
import org.w3c.www.protocol.http.cache.CacheFilter;
import org.w3c.www.protocol.http.cache.CacheStore;

class ProxyProp extends PropertySet {
    private static String title = "Proxy properties";

    private static String MICP_PROP_NAME       = "micp";
    private static String CACHE_PROP_NAME      = "cache";
    private static String PROXY_DISP_PROP_NAME = "dispatcher";

    protected static int ATTR_FILTERS = -1;

    static {
  Class     c = null;
  Attribute a = null;

  try {
      c = Class.forName("org.w3c.jigsaw.proxy.ProxyProp");
  } catch (Exception ex) {
      ex.printStackTrace();
      System.exit(1);
  }
  // Register the maximum number of allowed connections:
  a = new IntegerAttribute(HttpManager.CONN_MAX_P
         , new Integer(20)
         , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
  // Register the timeout on the client socket
  a = new IntegerAttribute(HttpManager.TIMEOUT_P
         , new Integer(300000) // default 5mn
         , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
  // Register the connection timeout on the client socket
  a = new IntegerAttribute(HttpManager.CONN_TIMEOUT_P
         , new Integer(1000) // default 1s
         , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
        // Register the proxy set property
  a = new BooleanAttribute(HttpManager.PROXY_SET_P
        , null
        , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
  // Register the proxy host:
  a = new StringAttribute(HttpManager.PROXY_HOST_P
        , null
        , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
  // Register the proxy port:
  a = new IntegerAttribute(HttpManager.PROXY_PORT_P
         , new Integer(80)
         , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
        // Register the lenient parsing mode property
  a = new BooleanAttribute(HttpManager.LENIENT_P
        , null
        , Attribute.EDITABLE);
  AttributeRegistry.registerAttribute(c, a);
  // Register the filters property
  a = new StringArrayAttribute(HttpManager.FILTERS_PROP_P
             , null
             , Attribute.EDITABLE);
  ATTR_FILTERS = AttributeRegistry.registerAttribute(c, a);
    }

    /**
     * Get this property set title.
     * @return A String encoded title.
     */

    public String getTitle() {
  return title;
    }

    /**
     * Set value forwards the effectation to the properties.
     * @param idx The attribute (property in that case) being set.
     * @param value The new value for that property.
     */

    protected String[] getFilters() {
  return (String[]) getValue(ATTR_FILTERS, null);
    }

    protected void initializeFiltersProps() {
  String flt[] = getFilters();
  if (flt == null)
      return;
  // FIXME! shouldget the name of the property set associated
  // to the filter, and verify if it is present or not
  // if not, register the property set
  PropertySet p = null;
  for(int i=0; i<flt.length; i++) {
      if(flt[i].equals("org.w3c.www.protocol.http.micp.MICPFilter")){
    if (server.getPropertySet(MICP_PROP_NAME) == null) {
        p = new MICPProp(MICP_PROP_NAME, server);
        server.registerPropertySet(p);
    }
      } else if (flt[i].equals(
           "org.w3c.www.protocol.http.cache.CacheFilter")) {
    if (server.getPropertySet(CACHE_PROP_NAME) == null) {
        p = new CacheProp(CACHE_PROP_NAME, server);
        server.registerPropertySet(p);
        ObservableProperties props = server.getProperties();
        File c =
      props.getFile(CacheStore.CACHE_DIRECTORY_P, null);
        if ( c == null ) {
      c = new File(server.getConfigDirectory(),
             "cache");
      props.putValue(CacheStore.CACHE_DIRECTORY_P,
               c.getAbsolutePath());
        }
    }
      } else if (flt[i].equals(
       "org.w3c.www.protocol.http.proxy.ProxyDispatcher")) {
    //add ProxyDispatcher PropertySet...
    if (server.getPropertySet(PROXY_DISP_PROP_NAME) == null) {
        p = new ProxyDispatcherProp(PROXY_DISP_PROP_NAME, server);
        server.registerPropertySet(p);
    }
      }
  }
    }

    public synchronized void setValue(int idx, Object value) {
  // Check access (we don't care about side effects)
  super.setValue(idx, value);
  if ( idx == ATTR_FILTERS )
      initializeFiltersProps();
    }

    ProxyProp(String name, httpd server) {
  super(name, server);
  initializeFiltersProps();
    }
}
TOP

Related Classes of org.w3c.jigsaw.proxy.ProxyProp

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.