costin      00/12/26 23:21:14

  Modified:    src/j2ee build.xml
               src/j2ee/org/apache/tomcat/j2ee J2EEInterceptor.java
                        TomcatJ2EEAdapter.java
  Log:
  Update the j2ee adapter for the new model, fixed and tested.
  
  Revision  Changes    Path
  1.2       +16 -16    jakarta-tomcat/src/j2ee/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/j2ee/build.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- build.xml 2000/09/09 23:28:05     1.1
  +++ build.xml 2000/12/27 07:21:12     1.2
  @@ -53,30 +53,30 @@
     <target name="j2ee-dist" depends="tomcat-j2ee.jar" />
   
     <target name="tomcat-j2ee.jar" >
  -    <javac srcdir="." 
  +    <echo message="Building j2ee" />
  +    <javac srcdir="src/j2ee" 
         optimize="${optimize}"
         classpath="${j2ee.classpath}"
         destdir="${tomcat.build}/classes"
         debug="${debug}" >
  -      <include name="org/apache/**" />
       </javac>
  -    <copydir src="." 
  -      dest="${tomcat.build}/classes">
  -      <include name="**/*.properties" />
  -    </copydir>
  +
  +    <copy 
  +      todir="${tomcat.build}/classes">
  +      <fileset dir="." >
  +         <include name="**/*.properties" />
  +      </fileset>
  +    </copy>
  +
       <jar jarfile="${tomcat.build}/lib/tomcat-j2ee.jar"
         basedir="${tomcat.build}/classes" >
  -      <include name="org/apache/tomcat/deployment/**" />
  -      <include name="org/apache/tomcat/j2ee/**" />
  -      <include name="org/apache/tomcat/util/XMLParser.class" />
  -      <include name="org/apache/tomcat/util/XMLTree.class" />
  +      <fileset dir="." > 
  +          <include name="org/apache/tomcat/deployment/**" />
  +          <include name="org/apache/tomcat/j2ee/**" />
  +          <include name="org/apache/tomcat/util/XMLParser.class" />
  +          <include name="org/apache/tomcat/util/XMLTree.class" />
  +      </fileset>
       </jar> 
  -    <delete dir="${tomcat.build}/classes" >
  -      <include name="org/apache/tomcat/deployment/**" />
  -      <include name="org/apache/tomcat/j2ee/**" />
  -      <include name="org/apache/tomcat/util/XMLParser.class" />
  -      <include name="org/apache/tomcat/util/XMLTree.class" />
  -    </delete>
     </target>
   
     <target name="main" depends="tomcat-j2ee.jar"/>
  
  
  
  1.6       +37 -25    
jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/J2EEInterceptor.java
  
  Index: J2EEInterceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/J2EEInterceptor.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- J2EEInterceptor.java      2000/09/09 23:28:05     1.5
  +++ J2EEInterceptor.java      2000/12/27 07:21:12     1.6
  @@ -65,7 +65,7 @@
   
       public void engineInit( ContextManager cm ) throws TomcatException {
        super.engineInit(cm);
  -     debug=0;
  +     debug=10;
       }
       
       public void contextInit( Context ctx)
  @@ -75,14 +75,14 @@
       
       public int preService(Request request, Response response) {
        Context ctx = request.getContext();
  -     Handler sw=request.getWrapper();
  -     if( ! (sw instanceof ServletWrapper) )
  +     Handler sw=request.getHandler();
  +     if( ! (sw instanceof ServletHandler) )
            return 0;
        try {
  -         invM.preServletInvoke( ctx.getFacade(),
  -                                ((ServletWrapper)sw).getServlet(), 
  -                                request.getFacade(),
  -                                response.getFacade() );
  +         invM.preServletInvoke( (ServletContext)ctx.getFacade(),
  +                                ((ServletHandler)sw).getServlet(), 
  +                                (HttpServletRequest)request.getFacade(),
  +                                (HttpServletResponse)response.getFacade() );
        } catch(Exception ex ) {
            return -1;
        }
  @@ -90,16 +90,16 @@
       }
       public int postService(Request request, Response response) {
        Context ctx = request.getContext();
  -     Handler sw=request.getWrapper();
  -     if( ! (sw instanceof ServletWrapper) )
  +     Handler sw=request.getHandler();
  +     if( ! (sw instanceof ServletHandler) )
            return 0;
        try {
  -         invM.postServletInvoke( ctx.getFacade(),
  -                                 ((ServletWrapper)sw).getServlet(), 
  -                                 request.getFacade(),
  -                                 response.getFacade() );
  +         invM.postServletInvoke( (ServletContext)ctx.getFacade(),
  +                                 ((ServletHandler)sw).getServlet(), 
  +                                 (HttpServletRequest)request.getFacade(),
  +                                 (HttpServletResponse)response.getFacade());
            intLogRequest( request.getContext().getPath(),
  -                        request.getRequestURI(),
  +                        request.requestURI().toString(),
                           null);
        } catch(Exception ex ) {
            return -1;
  @@ -109,11 +109,14 @@
       
       /** Servlet Init  notification
        */
  -    public void preServletInit( Context ctx, ServletWrapper sw )
  +    public void preServletInit( Context ctx, Handler sw )
        throws TomcatException
       {
  +     if( ! (sw instanceof ServletHandler) )
  +         return;
        try {
  -         invM.preInitInvoke( ctx.getFacade(), sw.getServlet());
  +         invM.preInitInvoke( (ServletContext)ctx.getFacade(),
  +                             ((ServletHandler)sw).getServlet());
        } catch(Exception ex ) {
            log("XXX " + invM + " " + ctx + " " + sw );
            throw new TomcatException( "Error in j2ee adapter " , ex );
  @@ -121,11 +124,14 @@
       }
   
       
  -    public void postServletInit( Context ctx, ServletWrapper sw )
  +    public void postServletInit( Context ctx, Handler sw )
        throws TomcatException
       {
  +     if( ! (sw instanceof ServletHandler) )
  +         return;
        try {
  -         invM.postInitInvoke( ctx.getFacade(), sw.getServlet());
  +         invM.postInitInvoke( (ServletContext)ctx.getFacade(),
  +                              ((ServletHandler)sw).getServlet());
        } catch(Exception ex ) {
            throw new TomcatException( "Error in j2ee adapter " , ex );
        }
  @@ -133,12 +139,15 @@
   
       /** Servlet Destroy  notification
        */
  -    public void preServletDestroy( Context ctx, ServletWrapper sw )
  +    public void preServletDestroy( Context ctx, Handler sw )
        throws TomcatException
       {
  +     if( ! (sw instanceof ServletHandler) )
  +         return;
        try {
            if( sw != null && ctx != null )
  -             invM.preDestroyInvoke( ctx.getFacade(), sw.getServlet());
  +             invM.preDestroyInvoke( (ServletContext)ctx.getFacade(),
  +                                    ((ServletHandler)sw).getServlet());
            else
                log("XXX J2EEInterceptor: sw, ctx=" +
                                   sw + " " +ctx);
  @@ -149,12 +158,15 @@
       }
   
       
  -    public void postServletDestroy( Context ctx, ServletWrapper sw )
  +    public void postServletDestroy( Context ctx, Handler sw )
        throws TomcatException
       {
  +     if( ! (sw instanceof ServletHandler) )
  +         return;
        try {
            if( sw != null && ctx != null )
  -             invM.postDestroyInvoke( ctx.getFacade(), sw.getServlet());
  +             invM.postDestroyInvoke( (ServletContext)ctx.getFacade(),
  +                                     ((ServletHandler)sw).getServlet());
            else
                log("XXX J2EEInterceptor: sw, ctx=" +
                                   sw + " " +ctx);
  @@ -243,13 +255,13 @@
   
        String realm="default";  //ctx.getRealmName();
   
  -     Handler h=req.getWrapper();
  -     ServletWrapper sw=(ServletWrapper)h;
  +     Handler h=req.getHandler();
  +     ServletHandler sw=(ServletHandler)h;
        String mappedRole=null;
        String role=null;
        for( int i=0; i< roles.length ; i++ ) {
            role=roles[i];
  -         mappedRole=sw.getSecurityRole( role );
  +         mappedRole=sw.getServletInfo().getSecurityRole( role );
            if( mappedRole==null) mappedRole=role;
            
            if(isUserInRole(appName, mappedRole) ) {
  
  
  
  1.2       +110 -25   
jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/TomcatJ2EEAdapter.java
  
  Index: TomcatJ2EEAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/TomcatJ2EEAdapter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TomcatJ2EEAdapter.java    2000/06/27 22:24:33     1.1
  +++ TomcatJ2EEAdapter.java    2000/12/27 07:21:12     1.2
  @@ -1,8 +1,8 @@
   package org.apache.tomcat.j2ee;
   
  -import java.net.URL;
  -import java.net.InetAddress;
  -import java.io.File;
  +import java.net.*;
  +import java.io.*;
  +import java.util.*;
   
   import com.sun.web.server.*;
   import org.apache.tomcat.core.*;
  @@ -11,7 +11,6 @@
   import java.security.*;
   import javax.servlet.*;
   import org.apache.tomcat.startup.EmbededTomcat;
  -
   /**
    * Simple adapter EmbededTomcat, workaround to avoid
    * using com.sun.web.servet.WebService inside tomcat.
  @@ -20,14 +19,18 @@
    */
   public class TomcatJ2EEAdapter extends WebService {
       EmbededTomcat server;
  +    ContextManager cm;
  +    int debug=0;
   
       public TomcatJ2EEAdapter() {
        server=new EmbededTomcat();
  +     cm=server.getContextManager();
       }
   
       public void setDebug( int debug ) {
        super.setDebug(debug);
        server.setDebug(debug);
  +     this.debug=debug;
       }
   
       public void setApplication( Object app ) {
  @@ -36,7 +39,11 @@
       }
       
       public void addApplicationAdapter( Object adapter ) {
  -     server.addApplicationAdapter( adapter );
  +     try {
  +         server.addApplicationAdapter( adapter );
  +     } catch(TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
       }
       
       public void setWorkDir( String dir ) {
  @@ -46,45 +53,123 @@
       public void addEndpoint( int port, InetAddress addr ,
                             String hostname)
       {
  -     server.addEndpoint( port, addr, hostname);
  +     try {
  +         server.addEndpoint( port, addr, hostname);
  +     } catch(TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
  +
       }
       public  void addSecureEndpoint( int port, InetAddress addr,
                                    String hostname, String keyFile,
                                    String keyPass ) {
  -     server.addSecureEndpoint( port, addr, hostname, keyFile, keyPass);
  -    }
  -
  -    public  ServletContext addContext( String ctxPath, URL docRoot ) {
  -     return server.addContext( ctxPath, docRoot);
  -    }
  +     try {
  +         server.addSecureEndpoint( port, addr, hostname, keyFile, keyPass);
  +     } catch(TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
   
  -    public  void initContext( ServletContext ctx ) {
  -     server.initContext( ctx );
       }
   
  -    public  void destroyContext( ServletContext ctx ) {
  -     server.destroyContext( ctx );
  +    Hashtable contexts=new Hashtable();
  +    
  +    public  ServletContext addContext( String ctxPath, URL docRoot ) {
  +     try {
  +         Context ctx=(Context)server.addContext( ctxPath, docRoot);
  +         contexts.put( ctx.getFacade(), ctx );
  +         return (ServletContext)ctx.getFacade();
  +     } catch(TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
  +     return null;
  +    }
  +
  +    public  void initContext( ServletContext sctx ) {
  +     Context ctx=(Context)contexts.get( sctx );
  +
  +     Vector cp=(Vector)extraClassPaths.get( sctx );
  +     if( cp!=null ) {
  +         for( int i=0; i<cp.size(); i++ ) {
  +             String cpath=(String)cp.elementAt(i);
  +             File f=new File( cpath );
  +             String absPath=f.getAbsolutePath();
  +             if( ! absPath.endsWith("/" ) && f.isDirectory() ) {
  +                 absPath+="/";
  +             }
  +             try {
  +                 ctx.addClassPath( new URL( "file", null,
  +                                            absPath ));
  +             } catch( MalformedURLException ex ) {
  +             }
  +         }
  +     }
  +     try {
  +         ctx.init();
  +     } catch( TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
  +    }
  +
  +    public  void destroyContext( ServletContext sctx ) {
  +     Context ctx=(Context)contexts.get( sctx );
  +     try {
  +         ctx.shutdown();
  +     } catch( TomcatException ex ) {
  +         ex.printStackTrace();
  +     }
       }
   
       public  ServletContext getServletContext( String host,
                                              String cpath ) {
  -     return server.getServletContext(host, cpath);
  +     Context ctx=(Context)server.getServletContext(host, cpath);
  +     return (ServletContext)ctx.getFacade();
       }
       
  -    public  void removeContext( ServletContext ctx ) {
  -     server.removeContext( ctx);
  -    }
  -
  -    public  void addClassPath( ServletContext ctx, String cpath ) {
  -     server.addClassPath( ctx, cpath);
  +    public  void removeContext( ServletContext sctx ) {
  +     Context ctx=(Context)contexts.get( sctx );
  +     if(debug>0) cm.log( "remove context " + ctx );
  +     try {
  +         server.getContextManager().removeContext( ctx );
  +     } catch( Exception ex ) {
  +         cm.log("exception removing context " + sctx, ex);
  +     }
  +    }
  +
  +    Hashtable extraClassPaths=new Hashtable();
  +
  +    public  void addClassPath( ServletContext sctx, String cpath ) {
  +     Context ctx=(Context)contexts.get( sctx );
  +     if(debug>0) cm.log( "addClassPath " + ctx + " " +
  +                      cpath );
  +     try {
  +         Vector cp=(Vector)extraClassPaths.get(ctx);
  +         if( cp == null ) {
  +             cp=new Vector();
  +             extraClassPaths.put( ctx, cp );
  +         }
  +         cp.addElement( cpath );
  +     } catch( Exception ex ) {
  +         cm.log("exception adding classpath " + cpath +
  +             " to context " + ctx, ex);
  +     }
       }
   
       public  void start() {
  -     server.start();
  +     try {
  +         server.getContextManager().start();
  +     } catch( Exception ex ) {
  +         cm.log("Error starting EmbededTomcat", ex);
  +     }
  +     if(debug>0) cm.log( "Started" );
       }
   
       public  void stop() {
  -     server.stop();
  +     try {
  +         cm.shutdown();
  +     } catch( Exception ex ) {
  +         cm.log("Error starting EmbededTomcat", ex);
  +     }
  +     
       }
   }
   
  
  
  

Reply via email to