A WebDAV service for Jetty?

Doesn't this belong in Jetty rather than Geronimo?

--
Jeremy


-------- Original Message -------- Subject: cvs commit: incubator-geronimo/modules/web project.xml Date: 20 Jan 2004 14:58:08 -0000 From: [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED]

gdamour     2004/01/20 06:58:08

  Modified:    modules/web project.xml
  Added:       modules/web/src/java/org/apache/geronimo/webdav/jetty
                        JettyConnectorImpl.java JettyConnector.java
                        JettyDAVServer.java
               modules/web/src/java/org/apache/geronimo/webdav
                        DAVRepository.java CatalinaDAVRepository.java
                        DAVServer.java AbstractConnector.java
                        Connector.java
  Log:
  Initiale check in of a WebDAV service using:
  - Jetty as the underlying HTTP server; and
  - Tomcat WebDAV servlet as the WebDAV implementation.

  The DAVServer and Connector classes are modelled after the Web layer
  implemented by Jan Bartel and Greg Wilkins.

Revision Changes Path
1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/jetty/JettyConnectorImpl.java


  Index: JettyConnectorImpl.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav.jetty;

  import java.lang.reflect.Constructor;

  import org.apache.geronimo.gbean.GAttributeInfo;
  import org.apache.geronimo.gbean.GBean;
  import org.apache.geronimo.gbean.GBeanInfo;
  import org.apache.geronimo.gbean.GBeanInfoFactory;
  import org.apache.geronimo.gbean.WaitingException;
  import org.apache.geronimo.webdav.AbstractConnector;
  import org.mortbay.http.HttpListener;
  import org.mortbay.http.SocketListener;
  import org.mortbay.http.SunJsseListener;
  import org.mortbay.http.ajp.AJP13Listener;
  import org.mortbay.util.ThreadedServer;

  /**
   * Connector using under the cover a Jetty HttpListener.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
   */
  public class JettyConnectorImpl
      extends AbstractConnector
      implements GBean, JettyConnector
  {

      private static final String HTTP_PROTOCOL = "http";
      private static final String HTTPS_PROTOCOL = "https";
      private static final String AJP13_PROTOCOL = "ajp13";

      private final static GBeanInfo GBEAN_INFO;

      private final static Class[] EMPTY_FORMAL_PARAM = new Class[]{};
      private final static Object[] EMPTY_ARGS = new Object[]{};

/**
* When the underlying listener is undefined, the GBean operations are
* delegated to this state.
*/
private final GBean undefinedListenerState;


      /**
       * When the underlying listener is defined, the GBean operations are
       * delegated to this state.
       */
      private final GBean definedListenerState;

      private HttpListener listener;
      private GBean lifeCycleState;

      public JettyConnectorImpl(String aProtocol, String anHost, int aPort,
          int aMaxCon, int aMaxIdle) {
          super(aProtocol, anHost, aPort, aMaxCon, aMaxIdle);
          undefinedListenerState = new UndefinedListenerState();
          definedListenerState = new DefinedListenerState();
          setListener(null);
      }

      public HttpListener getListener() {
          return listener;
      }

      private void setListener(HttpListener aListener) {
          listener = aListener;
          if ( null == listener ) {
              lifeCycleState = undefinedListenerState;
          } else {
              lifeCycleState = definedListenerState;
          }
      }

      public void doStart() throws WaitingException, Exception {
          log.info("Starting Jetty Connector");
          lifeCycleState.doStart();
      }

      public void doStop() throws WaitingException {
          log.info("Stopping Jetty Connector");
          lifeCycleState.doStop();
      }

      public void doFail() {
          log.info("Failing Jetty Connector");
          lifeCycleState.doFail();
      }

      static {
          GBeanInfoFactory infoFactory =
              new GBeanInfoFactory("Connector - Jetty",
              JettyConnectorImpl.class.getName(),
              AbstractConnector.getGBeanInfo());
          infoFactory.addAttribute(new GAttributeInfo("Listener"));
          GBEAN_INFO = infoFactory.getBeanInfo();
      }

      public static GBeanInfo getGBeanInfo() {
          return GBEAN_INFO;
      }

      private class DefinedListenerState implements GBean {
          public void doStart() throws WaitingException, Exception {
              if ( listener.isStarted() ) {
                  return;
              }
              listener.start();
          }

          public void doStop() throws WaitingException {
              try {
                  listener.stop();
              } catch (Exception e) {
                  log.error("Problem stopping Jetty Connector", e);
                  setListener(null);
              }
          }

          public void doFail() {
              try {
                  if (listener.isStarted()) {
                      listener.stop();
                  }
              } catch (Exception e) {
                  log.error("Can not fail Jetty Connector", e);
              }
              setListener(null);
          }

      }

private class UndefinedListenerState implements GBean {
public void doStart() throws WaitingException, Exception {
HttpListener tmpListener;
try {
if (null == protocol || protocol.equalsIgnoreCase(HTTP_PROTOCOL)) {
tmpListener = new SocketListener();
} else if (protocol.equalsIgnoreCase(AJP13_PROTOCOL)) {
tmpListener = new AJP13Listener();
} else if (protocol.equalsIgnoreCase(HTTPS_PROTOCOL)) {
tmpListener = new SunJsseListener();
} else {
Class listenerClass =


Thread.currentThread().getContextClassLoader().loadClass(
protocol);
Constructor constructor =
listenerClass.getConstructor(EMPTY_FORMAL_PARAM);
tmpListener =
(HttpListener) constructor.newInstance(EMPTY_ARGS);
}
tmpListener.setPort(getPort());


if ( getInterface() != null ) {
tmpListener.setHost(getInterface());
}
if ( getMaxConnections() > 0 ) {
((ThreadedServer) tmpListener).setMaxThreads(getMaxConnections());
}
if ( getMaxIdleTime() > 0 ) {
((ThreadedServer) tmpListener).setMaxIdleTimeMs(getMaxIdleTime());
}
((ThreadedServer) tmpListener).open();
tmpListener.start();
} catch (Exception e) {
log.error("Problem starting Connector", e);
throw e;
}
setListener(tmpListener);
}


          public void doStop() throws WaitingException {
          }

          public void doFail() {
          }

      }
  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/jetty/JettyConnector.java

  Index: JettyConnector.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav.jetty;

  import org.apache.geronimo.webdav.Connector;
  import org.mortbay.http.HttpListener;

/**
* This interface is required by the IoC framework: JettyConnector is an
* endpoint, whose implementation JettyConnectorImpl does not define a
* constructor without parameters.
* <BR>
* This interface captures the operations and attributes, which are exposed
* as GBean operations and attributes.
*
* @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
*/
public interface JettyConnector extends Connector {



public HttpListener getListener();

  }


1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/jetty/JettyDAVServer.java


  Index: JettyDAVServer.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav.jetty;

  import java.util.Collection;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map;

  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.geronimo.gbean.EndpointCollection;
  import org.apache.geronimo.gbean.EndpointCollectionEvent;
  import org.apache.geronimo.gbean.EndpointCollectionListener;
  import org.apache.geronimo.gbean.GBean;
  import org.apache.geronimo.gbean.GBeanInfo;
  import org.apache.geronimo.gbean.GBeanInfoFactory;
  import org.apache.geronimo.gbean.GEndpointInfo;
  import org.apache.geronimo.gbean.WaitingException;
  import org.apache.geronimo.webdav.DAVRepository;
  import org.apache.geronimo.webdav.DAVServer;
  import org.mortbay.http.HttpListener;
  import org.mortbay.jetty.Server;
  import org.mortbay.jetty.servlet.ServletHolder;
  import org.mortbay.jetty.servlet.ServletHttpContext;

  /**
   * DAVServer using under the cover a light Jetty servlet container.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
   */
  public class JettyDAVServer
      implements DAVServer, GBean
  {

private static final Log log = LogFactory.getLog(JettyDAVServer.class);

      private final static GBeanInfo GBEAN_INFO;

      /**
       * Jetty Server doing the actual work.
       */
      private final Server server;

      /**
       * DAVRepository to ServletHolder map.
       */
      private final Map repToServletHolder;

      /**
       * Connector to HttpListener map.
       */
      private final Map conToListener;

      /**
       * Repositories served by this server.
       */
      private EndpointCollection repositories;
      private final EndpointCollectionListener repositoryListener =
          new EndpointCollectionListener() {
          public void memberAdded(EndpointCollectionEvent event) {
              addRepository((DAVRepository) event.getMember());
          }
          public void memberRemoved(EndpointCollectionEvent event) {
              removeRepository((DAVRepository) event.getMember());
          }
      };

      /**
       * Connectors injecting requests to this server.
       */
      private EndpointCollection connectors;
      private final EndpointCollectionListener connectorListener =
          new EndpointCollectionListener() {
          public void memberAdded(EndpointCollectionEvent event) {
              addConnector((JettyConnector) event.getMember());
          }
          public void memberRemoved(EndpointCollectionEvent event) {
              removeConnector((JettyConnector) event.getMember());
          }
      };

      public JettyDAVServer() throws Exception {
          server = new Server();
          repToServletHolder = new HashMap();
          conToListener = new HashMap();
      }

      public void setConnectors(Collection aCollOfConnectors) {
          if ( null == aCollOfConnectors ) {

connectors.removeEndpointCollectionListener(connectorListener);
for (Iterator iter = connectors.iterator(); iter.hasNext();) {
removeConnector((JettyConnector) iter.next());
}
}
connectors = (EndpointCollection) aCollOfConnectors;
if ( null != connectors ) {
connectors.addEndpointCollectionListener(connectorListener);
for (Iterator iter = connectors.iterator(); iter.hasNext();) {
addConnector((JettyConnector) iter.next());
}
}
}


public void addConnector(JettyConnector aConnector) {
// The Connector MUST be running at this stage, otherwise a null
// listener is returned. This is enforced by the endpoint mechanism,
// which publishes only running endpoints.
if ( null == aConnector.getListener() ) {
throw new IllegalStateException("No defined listener.");
}
server.addListener(aConnector.getListener());
synchronized (conToListener) {
conToListener.put(aConnector, aConnector.getListener());
}


      }

public void removeConnector(JettyConnector aConnector) {
// At this stage, the connector could be failed. In this later case
// the underlying listener is undefined. Hence the conToListener Map.
HttpListener httpListener;
synchronized (conToListener) {
httpListener = (HttpListener) conToListener.remove(aConnector);
}
if ( null == httpListener ) {
throw new IllegalStateException("Connector not registered.");
}
server.removeListener(httpListener);
}


      public void setRepositories(Collection aCollOfRepositories) {
          if ( null == aCollOfRepositories ) {

repositories.removeEndpointCollectionListener(repositoryListener);
for (Iterator iter = repositories.iterator(); iter.hasNext();) {
removeRepository((DAVRepository) iter.next());
}
}
repositories = (EndpointCollection) aCollOfRepositories;
if ( null != repositories ) {


repositories.addEndpointCollectionListener(repositoryListener);
for (Iterator iter = repositories.iterator(); iter.hasNext();) {
addRepository((DAVRepository) iter.next());
}
}
}


/**
* Adds a DAVRepository to this server.
*
* @param aRepository DAVRepository to be served by this server.
*/
public void addRepository(DAVRepository aRepository) {
// Gets the context associated to this repository.
ServletHttpContext context =
(ServletHttpContext) server.getContext(
aRepository.getHost(),
aRepository.getContext());
// Defines the servlet context attributes.
Map attributes = aRepository.getServletContextAttr();
for (Iterator iter = attributes.entrySet().iterator();
iter.hasNext();) {
Map.Entry attribute = (Map.Entry) iter.next();
context.setAttribute(
(String) attribute.getKey(), attribute.getValue());
}
ServletHolder holder = null;
try {
// Defines the WebDAV servlet.
holder =
context.addServlet(
"DAVRepository",
"/*",
aRepository.getHandlingServlet().getName());
// Defines the servlet init parameters.
attributes = aRepository.getServletInitParam();
for (Iterator iter = attributes.entrySet().iterator();
iter.hasNext();) {
Map.Entry attribute = (Map.Entry) iter.next();
holder.setInitParameter(
(String) attribute.getKey(), (String) attribute.getValue());
}
context.start();
} catch (Exception e) {
log.error(e);
throw new RuntimeException(e);
}
synchronized (repToServletHolder) {
repToServletHolder.put(aRepository, holder);
}
}


public void removeRepository(DAVRepository aRepository) {
ServletHolder holder;
synchronized (repToServletHolder) {
holder = (ServletHolder) repToServletHolder.remove(aRepository);
if ( null == holder ) {
throw new IllegalArgumentException(aRepository +
" is not contained by " + this);
}
}
holder.getHttpHandler().getHttpContext().
removeHandler(holder.getHttpHandler());


          // Undefined the servlet context attributes.
          Map attributes = aRepository.getServletContextAttr();
          for (Iterator iter = attributes.keySet().iterator();
              iter.hasNext();) {
              String attribute = (String) iter.next();
              holder.getHttpHandler().getHttpContext().
                  removeAttribute((String) attribute);
          }
      }

      public Collection getRepositories() {
          return repositories;
      }

      public Collection getConnectors() {
          return connectors;
      }

      public void doStart() throws WaitingException, Exception {
          log.info("Starting Jetty DAV Server");
          try {
              server.start();
          } catch (Exception e) {
              log.error("Can not start Jetty DAV Server", e);
              throw e;
          }
      }

      public void doStop() throws WaitingException {
          log.info("Stopping Jetty DAV Server");
          try {
              server.stop();
          } catch (Exception e) {
              log.error("Can not start Jetty DAV server", e);
          }
      }

      public void doFail() {
          log.info("Failing Jetty DAV Server");
          try {
              if ( server.isStarted() ) {
                  server.stop();
              }
          } catch (Exception e) {
              log.error("Can not start Jetty DAV server", e);
          }
      }

      static {
          GBeanInfoFactory infoFactory =
              new GBeanInfoFactory("DAV Server - Jetty",
              JettyDAVServer.class.getName());
          infoFactory.addEndpoint(new GEndpointInfo("Connectors",
              JettyConnector.class.getName()));
          infoFactory.addEndpoint(new GEndpointInfo("Repositories",
              DAVRepository.class.getName()));
          GBEAN_INFO = infoFactory.getBeanInfo();
      }

      public static GBeanInfo getGBeanInfo() {
          return GBEAN_INFO;
      }

  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/DAVRepository.java

  Index: DAVRepository.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav;

  import java.util.Map;

/**
* A DAVRepository defines a WebDAV servlet along with its execution context.
* <BR>
* A WebDAV servlet is a servlet, which implements the WebDAV specific methods
* , e.g. PROPFIND. This servlet is deployed and managed by the DAVServer,
* which has mounted this repository.
*
* @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
*/
public interface DAVRepository
{


      /**
       * Gets the host name filter.
       * <BR>
       * If defined, only the requests for this host are forwarded to this
       * repository.
       *
       * @return Host name filter.
       */
      public String getHost();

      /**
       * Gets the context of the WebDAV servlet.
       * <BR>
       *
       * @return Context name.
       */
      public String getContext();

      /**
       * Gets the WebDAV servlet Class.
       *
       * @return WebDAV servlet class.
       */
      public Class getHandlingServlet();

      /**
       * Gets the servlet context attributes.
       *
       * @return Map of attribute name to value.
       */
      public Map getServletContextAttr();

      /**
       * Gets the servlet initialization parameters.
       *
       * @return Map of parameter name to value.
       */
      public Map getServletInitParam();

  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/CatalinaDAVRepository.java

  Index: CatalinaDAVRepository.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav;

  import java.io.File;
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Map;

  import javax.naming.directory.DirContext;

  import org.apache.catalina.Globals;
  import org.apache.catalina.servlets.WebdavServlet;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.geronimo.gbean.GAttributeInfo;
  import org.apache.geronimo.gbean.GBean;
  import org.apache.geronimo.gbean.GBeanInfo;
  import org.apache.geronimo.gbean.GBeanInfoFactory;
  import org.apache.geronimo.gbean.GConstructorInfo;
  import org.apache.geronimo.gbean.WaitingException;
  import org.apache.naming.resources.FileDirContext;

  /**
   * DAVRepository implementation using the Tomcat WebDAV servlet as the
   * processing servlet.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
   */
  public class CatalinaDAVRepository
      implements DAVRepository, GBean
  {

private static final Log log = LogFactory.getLog(CatalinaDAVRepository.class);

      private static final Class HANDLING_SERVLET = WebdavServlet.class;

      private final static GBeanInfo GBEAN_INFO;

      /**
       * DirContext abstracting the repository exposed by this repository.
       */
      private final DirContext dirContext;

      /**
       * Root of the repository.
       */
      private final File root;

      /**
       * Host filter.
       */
      private final String host;

      /**
       * Servlet context.
       */
      private final String context;

      /**
       * Servlet context attribute name to value.
       */
      private final Map servletContextAttr;

      /**
       * Servlet init parameter name to value.
       */
      private final Map servletInitParam;

/**
* Builds a DAVRepository relying on Tomcat WebDAV servlet in order to
* process the WebDAV request.
*
* @param aRoot Root of the directory/DirContext exposed by this repository.
* @param aContext Context within which the servlet should be mounted.
* @param anHost Host filter, if any.
*/
public CatalinaDAVRepository(File aRoot, String aContext, String anHost) {
if ( null == aRoot ) {
throw new IllegalArgumentException("Root MUST be specified.");
} else if ( null == aContext ) {
throw new IllegalArgumentException("Context MUST be specified.");
}
context = aContext;
host = anHost;


          if ( !aRoot.isDirectory() ) {
              throw new IllegalArgumentException(aRoot.getAbsolutePath() +
                  " does not exist.");
          }
          root = aRoot;
          dirContext = new FileDirContext();

((FileDirContext)dirContext).setDocBase(root.getAbsolutePath());

          servletContextAttr = new HashMap();
          servletContextAttr.put(Globals.RESOURCES_ATTR, dirContext);

          servletInitParam = new HashMap();
          servletInitParam.put("readonly", "false");
          servletInitParam.put("listings", "true");
      }

      public Class getHandlingServlet() {
          return HANDLING_SERVLET;
      }

      public String getHost() {
          return host;
      }

      public String getContext() {
          return context;
      }

      /**
       * Gets the root of the directory exposed by this repository.
       *
       * @return Root of the exposed directory.
       */
      public File getRoot() {
          return root;
      }

      public DirContext getDirContext() {
          return dirContext;
      }

      public Map getServletContextAttr() {
          return Collections.unmodifiableMap(servletContextAttr);
      }

      public Map getServletInitParam() {
          return Collections.unmodifiableMap(servletInitParam);
      }

      public void doStart() throws WaitingException, Exception {
          log.info("Starting Catalina DAV Repository");
      }

      public void doStop() throws WaitingException {
          log.info("Stopping Catalina DAV Repository");
      }

      public void doFail() {
          log.info("Failing Catalina DAV Repository");
      }

static {
GBeanInfoFactory infoFactory =
new GBeanInfoFactory("DAV Repository - Catalina WebDAV Servlet",
CatalinaDAVRepository.class.getName());
infoFactory.addAttribute(new GAttributeInfo("Root", true));
infoFactory.addAttribute(new GAttributeInfo("Context", true));
infoFactory.addAttribute(new GAttributeInfo("Host", true));
infoFactory.addAttribute(new GAttributeInfo("HandlingServlet"));
infoFactory.addAttribute(new GAttributeInfo("ServletContextAttr"));
infoFactory.addAttribute(new GAttributeInfo("ServletInitParam"));
infoFactory.setConstructor(new GConstructorInfo(
Arrays.asList(new Object[] {"Root", "Context", "Host"}),
Arrays.asList(new Object[] {File.class, String.class, String.class})));
GBEAN_INFO = infoFactory.getBeanInfo();
}


      public static GBeanInfo getGBeanInfo() {
          return GBEAN_INFO;
      }

  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/DAVServer.java

  Index: DAVServer.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav;

  import java.util.Collection;

/**
* A DAVServer is an HTTP server providing WebDAV capabilities. It allows to
* expose, edit and manage a set of repositories remotely via a WebDAV client.
* <BR>
* The WebDAV protocol could "potentially" be the preferred transport to
* distribute a component as its base protocol, HTTP, can usually
* traverse firewalls.
* <BR>
* It is a composition of connectors and repositories.
*
* @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
*/
public interface DAVServer
{


/**
* Gets the connectors of this server.
*
* @return Collection of Connector instances associated to this server.
*/
public Collection getConnectors();


/**
* Gets the repositories of this server.
*
* @return Collection of DAVRepository instances associated to this server.
*/
public Collection getRepositories();


  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/AbstractConnector.java

  Index: AbstractConnector.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav;

  import java.net.InetAddress;
  import java.net.UnknownHostException;
  import java.util.Arrays;

  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.geronimo.gbean.GAttributeInfo;
  import org.apache.geronimo.gbean.GBean;
  import org.apache.geronimo.gbean.GBeanInfo;
  import org.apache.geronimo.gbean.GBeanInfoFactory;
  import org.apache.geronimo.gbean.GConstructorInfo;

  /**
   * Base implementation for the Connector contracts.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
   */
  public abstract class AbstractConnector
      implements Connector, GBean
  {

      private final static GBeanInfo GBEAN_INFO;

      protected final Log log = LogFactory.getLog(getClass());

      /**
       * Port.
       */
      protected int port;

      /**
       * Protocol.
       */
      protected String protocol;

      /**
       * Host.
       */
      private String host;

      /**
       * Maximum number of connections.
       */
      protected int maxCon;

      /**
       * Maximum idle time.
       */
      protected int maxIdle;

      /**
       * Creates a connector having the specified specificities.
       *
       * @param aProtocol Protocol.
       * @param anHost Host.
       * @param aPort Port.
       * @param aMaxCon Maximum number of connections.
       * @param aMaxIdle Maximum idle time.
       */
      public AbstractConnector(String aProtocol, String anHost, int aPort,
          int aMaxCon, int aMaxIdle) {
          protocol = aProtocol;
          host = anHost;
          port = aPort;
          maxCon = aMaxCon;
          maxIdle = aMaxIdle;
      }

      public void setPort(int aPort) {
          port = aPort;
      }

      public int getPort() {
          return port;
      }

      public void setProtocol(String aProtocol) {
          protocol = aProtocol;
      }

      public String getProtocol() {
          return protocol;
      }

      public void setInterface(String anInterface) {
          host = anInterface;
      }

/**
* Gets the interface/host of this Connector.
* <BR>
* If it has not been set explicitely, then the host name of the localhost
* is set and returned.
*
* @return Interface.
*/
public synchronized String getInterface() {
if ( null != host ) {
return host;
}
try {
host = InetAddress.getLocalHost().getHostName();
return host;
} catch (UnknownHostException e) {
// Should not happen.
log.error(e);
throw new RuntimeException(e);
}
}


      public void setMaxConnections(int aMaxConnects) {
          maxCon = aMaxConnects;
      }

      public int getMaxConnections() {
          return maxCon;
      }

      public void setMaxIdleTime(int aMaxIdleTime) {
          maxIdle = aMaxIdleTime;
      }

      public int getMaxIdleTime() {
          return maxIdle;
      }

static {
GBeanInfoFactory infoFactory =
new GBeanInfoFactory("Abstract Connector",
AbstractConnector.class.getName());
infoFactory.addAttribute(new GAttributeInfo("Port", true));
infoFactory.addAttribute(new GAttributeInfo("Protocol", true));
infoFactory.addAttribute(new GAttributeInfo("Interface", true));
infoFactory.addAttribute(new GAttributeInfo("MaxConnections", true));
infoFactory.addAttribute(new GAttributeInfo("MaxIdleTime", true));
infoFactory.setConstructor(new GConstructorInfo(
Arrays.asList(new Object[] {"Protocol", "Interface",
"Port", "MaxConnections", "MaxIdleTime"}),
Arrays.asList(new Object[] {String.class, String.class,
Integer.TYPE, Integer.TYPE, Integer.TYPE})
));
GBEAN_INFO = infoFactory.getBeanInfo();
}


      public static GBeanInfo getGBeanInfo() {
          return GBEAN_INFO;
      }

  }



1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/webdav/Connector.java

  Index: Connector.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */

  package org.apache.geronimo.webdav;

  /**
   * A Connector is a request listener and response broker.
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/20 14:58:08 $
   */
  public interface Connector {

      /**
       * Listening port.
       *
       * @param aPort Listening port.
       */
      public void setPort(int aPort);
      public int getPort();

      /**
       * Protocol.
       *
       * @param aProtocol
       */
      public void setProtocol(String aProtocol);
      public String getProtocol();

      /**
       * Interface.
       *
       * @param aProtocol
       */
      public void setInterface(String anInterface);
      public String getInterface();

      /**
       * Maximum number of connections.
       *
       * @param aProtocol
       */
      public void setMaxConnections(int aMaxConnects);
      public int getMaxConnections();

      /**
       * Maximum idle time.
       *
       * @param aProtocol
       */
      public void setMaxIdleTime(int aMaxIdleTime);
      public int getMaxIdleTime();

  }


1.15 +91 -1 incubator-geronimo/modules/web/project.xml

  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/web/project.xml,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- project.xml       19 Jan 2004 06:28:05 -0000      1.14
  +++ project.xml       20 Jan 2004 14:58:08 -0000      1.15
  @@ -279,6 +279,96 @@
               </properties>
           </dependency>

  +        <!-- WebDAV service using the Tomcat WebDAV servlet. -->
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>catalina</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>catalina-optional</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>naming-common</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>naming-resources</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>servlets-common</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>servlets-default</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>servlets-webdav</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +        <dependency>
  +            <groupId>tomcat</groupId>
  +            <artifactId>tomcat-util</artifactId>
  +            <version>5.0.16</version>
  +            <properties>
  +                <runtime>true</runtime>
  +                <destinations>
  +                    deploy/webdav/lib
  +                </destinations>
  +            </properties>
  +        </dependency>
  +
       </dependencies>







--
Jeremy

/*************************
 * Jeremy Boynes
 * Partner
 * Core Developers Network
 *************************/

Reply via email to