hammant     2003/01/08 23:42:49

  Modified:    sevak    jetty.xml
               sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty
                        JettySevak.java SevakWebApplicationContext.java
  Added:       sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty
                        SevakServletHolder.java
                        SevakWebApplicationHandler.java
  Log:
  Jetty upgraded to pre-release 4.2.5 version. Release coems in about 3 weeks. 
Extensions to servet handling added.
  
  Revision  Changes    Path
  1.11      +20 -11    jakarta-avalon-apps/sevak/jetty.xml
  
  Index: jetty.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-apps/sevak/jetty.xml,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- jetty.xml 7 Jan 2003 23:13:00 -0000       1.10
  +++ jetty.xml 9 Jan 2003 07:42:49 -0000       1.11
  @@ -60,7 +60,7 @@
   
     
     <!-- Jetty stuff -->
  -  <property name ="jetty.rel"    value="4.2.4"/>
  +  <property name ="jetty.rel"    value="4.2.5-pr20030108"/>
     
     <property name="jetty.jars.dir" value="${lib.dir}/jetty-jars"/>
   
  @@ -118,24 +118,33 @@
     <target name="get-jetty">
       
       <mkdir  dir="jetty-download"/>
  -    
  -    <get 
src="http://unc.dl.sourceforge.net/sourceforge/jetty/Jetty-${jetty.rel}.zip"; 
  -     dest="jetty-download/Jetty-${jetty.rel}.zip" 
  +
  +    <!--
  +    <get 
src="http://unc.dl.sourceforge.net/sourceforge/jetty/Jetty-${jetty.rel}.zip";
  +     dest="jetty-download/Jetty-${jetty.rel}.zip"
        verbose="true"
        usetimestamp="true"/>
  -     
  +    -->
  +
  +    <!-- temporarily point to EOB site -->
  +
  +    <get src="http://www.enterpriseobjectbroker.org/Jetty-${jetty.rel}.zip";
  +      dest="jetty-download/Jetty-${jetty.rel}.zip"
  +      verbose="true"
  +      usetimestamp="true"/>
  +
       <unzip src="jetty-download/Jetty-${jetty.rel}.zip" 
dest="jetty-download/Jetty-${jetty.rel}" />
  -      
  -    <delete file="${jetty.jars.dir}/*.jar"/>      
  -      
  +
  +    <delete file="${jetty.jars.dir}/*.jar"/>
  +
       <copy todir="${jetty.jars.dir}" flatten="true">
         <fileset dir="jetty-download/Jetty-${jetty.rel}">
           <include  name="**/lib/*.jar"/>
         </fileset>
       </copy>
  -     
  - </target> 
  - 
  +
  + </target>
  +
    <!-- prepare -->
    <target name="prepare" depends="checkNeccesaryJars" >
    </target>
  
  
  
  1.10      +15 -2     
jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/JettySevak.java
  
  Index: JettySevak.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/JettySevak.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JettySevak.java   8 Jan 2003 07:13:02 -0000       1.9
  +++ JettySevak.java   9 Jan 2003 07:42:49 -0000       1.10
  @@ -16,6 +16,9 @@
   import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.CascadingRuntimeException;
  +import org.apache.avalon.framework.service.Serviceable;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.service.ServiceException;
   import org.apache.avalon.apps.sevak.Sevak;
   import org.apache.avalon.apps.sevak.SevakException;
   import org.apache.avalon.phoenix.BlockContext;
  @@ -44,7 +47,7 @@
    * @version 1.0
    */
   public class JettySevak extends AbstractLogEnabled implements Sevak, 
Startable, Contextualizable,
  -        Configurable, Initializable
  +        Configurable, Initializable, Serviceable
   {
   
       private Server m_server;
  @@ -55,6 +58,7 @@
       private HashMap m_webapps = new HashMap();
       private int m_port;
       private File m_sarRootDir;
  +    private ServiceManager m_serviceManager;
   
   
       /**
  @@ -65,6 +69,15 @@
       }
   
       /**
  +     * @param serviceManager
  +     * @throws ServiceException
  +     */
  +    public void service(ServiceManager serviceManager) throws 
ServiceException
  +    {
  +        m_serviceManager = serviceManager;
  +    }
  +
  +    /**
        * Contextualize
        * @param context the context
        */
  @@ -150,7 +163,7 @@
   //            WebApplicationContext ctx = 
m_server.addWebApplication(m_hostName, context, webAppURL);
   
               WebApplicationContext ctx =
  -                new SevakWebApplicationContext(m_sarRootDir, webAppURL);
  +                new SevakWebApplicationContext(m_serviceManager, 
m_sarRootDir, webAppURL);
               ctx.setContextPath(context);
               m_server.addContext(m_hostName,ctx);
   
  
  
  
  1.2       +29 -1     
jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationContext.java
  
  Index: SevakWebApplicationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SevakWebApplicationContext.java   1 Dec 2002 23:57:24 -0000       1.1
  +++ SevakWebApplicationContext.java   9 Jan 2003 07:42:49 -0000       1.2
  @@ -8,6 +8,9 @@
   package org.apache.avalon.apps.sevak.blocks.jetty;
   
   import org.mortbay.jetty.servlet.WebApplicationContext;
  +import org.mortbay.jetty.servlet.ServletHandler;
  +import org.mortbay.jetty.servlet.WebApplicationHandler;
  +import org.apache.avalon.framework.service.ServiceManager;
   
   import java.io.IOException;
   import java.io.File;
  @@ -29,12 +32,14 @@
   
       private File m_sarRoot;
       private File m_phoenixLib;
  +    private ServiceManager m_serviceManager;
   
  -    public SevakWebApplicationContext(File sarRoot, String webAppURL) throws 
IOException
  +    public SevakWebApplicationContext(ServiceManager serviceManager, File 
sarRoot, String webAppURL) throws IOException
       {
           super(webAppURL);
           m_sarRoot = sarRoot;
           m_phoenixLib = new 
File(sarRoot.getParentFile().getParentFile(),"lib");
  +        m_serviceManager = serviceManager;
       }
   
   
  @@ -50,6 +55,29 @@
           classpath += new File(m_sarRoot, "jsplibs" + File.separator + 
"javax.servlet.jar") + File.pathSeparator;
           classpath += new File(m_phoenixLib, "tools.jar");
           return classpath;
  +    }
  +
  +    public synchronized ServletHandler getServletHandler() {
  +//        super.getServletHandler();
  +
  +//        ServletHandler shandler = 
(ServletHandler)getHandler(org.mortbay.jetty.servlet.ServletHandler.class);
  +//        if(shandler == null) {
  +//            shandler = new SevakServletHandler(serviceManager);
  +//            addHandler(shandler);
  +//        }
  +//        return shandler;
  +
  +        if(_webAppHandler == null) {
  +            _webAppHandler = 
(WebApplicationHandler)getHandler(SevakWebApplicationHandler.class);
  +            if(_webAppHandler == null) {
  +                
if(getHandler(org.mortbay.jetty.servlet.ServletHandler.class) != null)
  +                    throw new IllegalStateException("Cannot have 
ServletHandler in WebApplicationContext");
  +                _webAppHandler = new 
SevakWebApplicationHandler(m_serviceManager);
  +                addHandler(_webAppHandler);
  +            }
  +        }
  +        return _webAppHandler;
  +
       }
   
   }
  
  
  
  1.1                  
jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakServletHolder.java
  
  Index: SevakServletHolder.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.apps.sevak.blocks.jetty;
  
  import org.mortbay.jetty.servlet.ServletHolder;
  import org.apache.avalon.framework.service.Serviceable;
  import org.apache.avalon.framework.service.ServiceManager;
  import org.apache.avalon.framework.service.ServiceException;
  
  /**
   *
   * Override for Jetty's ServletHolder allow custom servlet handling
   *
   *
   * @see <a href="http://jetty.mortbay.com/";>Jetty Project Page</a>
   *
   * @author  Paul Hammant
   * @version 1.0
   */
  public class SevakServletHolder extends ServletHolder
  {
      private ServiceManager m_serviceManager;
  
      public SevakServletHolder(ServiceManager serviceManager, 
SevakWebApplicationHandler handler, String name, String className, String 
forcedPath)
      {
          // this constructor public or protected...
          super(handler, name, className, forcedPath);
          m_serviceManager = serviceManager;
      }
  
      public synchronized Object newInstance() throws InstantiationException, 
IllegalAccessException {
          if(_class == null)
              throw new InstantiationException("No class for " + this);
          else {
              Object instance = _class.newInstance();
              if (instance instanceof Serviceable) {
                  try
                  {
                      ((Serviceable) instance).service(m_serviceManager);
                  }
                  catch (ServiceException e)
                  {
                      throw new InstantiationException("Service Exception for 
servlet "
                              + _class.getName() + ":" + e.getMessage());
                  }
              }
              return instance;
          }
      }
  
  
  }
  
  
  
  1.1                  
jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationHandler.java
  
  Index: SevakWebApplicationHandler.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.apps.sevak.blocks.jetty;
  
  import org.mortbay.jetty.servlet.WebApplicationHandler;
  import org.mortbay.jetty.servlet.ServletHolder;
  import org.apache.avalon.framework.service.ServiceManager;
  
  /**
   *
   * Override for Jetty's WebApplicationHandler allow custom servlet handling
   *
   *
   * @see <a href="http://jetty.mortbay.com/";>Jetty Project Page</a>
   *
   * @author  Paul Hammant
   * @version 1.0
   */
  public class SevakWebApplicationHandler extends WebApplicationHandler {
  
      ServiceManager m_serviceManager;
  
      public SevakWebApplicationHandler(ServiceManager serviceManager)
      {
          m_serviceManager = serviceManager;
      }
  
      public ServletHolder newServletHolder(String name, String servletClass, 
String forcedPath)
      {
          if(_nameMap.containsKey(name)) {
              throw new IllegalArgumentException("Named servlet already exists: 
" + name);
          } else {
              ServletHolder holder = new SevakServletHolder(m_serviceManager, 
this, name, servletClass, forcedPath);
              _nameMap.put(holder.getName(), holder);
              return holder;
          }
  
      }
  
  
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to