You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/02/06 18:25:07 UTC

cvs commit: jakarta-tomcat-connectors/jk/java/org/apache/jk/core JkHandler.java Handler.java

costin      02/02/06 09:25:07

  Added:       jk/java/org/apache/jk/core JkHandler.java
  Removed:     jk/java/org/apache/jk/core Handler.java
  Log:
  Renamed Handler to JkHandler - the name is hugely overloaded, and likely to
  create conflicts.
  
  I think the architecture of jk2 is close to beeing finalized, the current
  model should be powerfull enough for most of our needs. I copied
  a lot from axis, which provides an extremely powerfull and flexible
  model for message processing ( which is what jk2 is doing as well ).
  
  JkHandler is the 'core' of the whole model - it supports the classic
  'hook' pattern used in most apache products. Given that our
  preferences are split, JkHandler supports both catalina-like
  'recursive' hooks invocation ( using next ) and apache ( or 3.3 ) style
  'iterative' invocation.
  
  I've also renamed endpoint to MsgContext. The signature is different
  from Axis's handler, in that we pass both the 'source' message and the
  MsgContext. The reason is that Jk should be able to handle 'internal'
  messages during the processing of the main message. The thread local
  current MC is hacky.
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-connectors/jk/java/org/apache/jk/core/JkHandler.java
  
  Index: JkHandler.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 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 acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 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/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */
  package org.apache.jk.core;
  
  import java.io.*;
  import java.util.*;
  import java.security.*;
  
  /**
   *
   * @author Costin Manolache
   */
  public abstract class JkHandler {
      public static final int OK=0;
      public static final int LAST=1;
      public static final int ERROR=2;
  
      protected WorkerEnv wEnv;
      protected JkHandler next;
      protected String name;
      protected int id;
      
      public void setWorkerEnv( WorkerEnv we ) {
          this.wEnv=we;
      }
  
      /** Set the name of the handler. Will allways be called by
       *  worker env after creating the worker.
       */
      public void setName(String s ) {
          name=s;
      }
  
      public String getName() {
          return name;
      }
  
      /** Set the id of the worker. We use an id for faster dispatch.
       *  Since we expect a decent number of handler in system, the
       *  id is unique - that means we may have to allocate bigger
       *  dispatch tables. ( easy to fix if needed )
       */
      public void setId( int id ) {
          this.id=id;
      }
  
      String nextName=null;
      /** Catalina-style "recursive" invocation.
       *  A chain is used for Apache/3.3 style iterative invocation.
       */
      public void setNext( JkHandler h ) {
          if( logL>0 ) log("setNext " + h.getClass().getName());
          next=h;
      }
  
      public void setNext( String s ) {
          nextName=s;
      }
  
      /** Should register the request types it can handle,
       *   same style as apache2.
       */
      public void init() throws IOException {
      }
  
      /** Clean up and stop the handler
       */
      public void destroy() throws IOException {
      }
  
      public abstract int invoke(Msg msg, MsgContext mc )  throws IOException;
  
      
      // This will use commons-logging to plug in a real logger
  
      protected int logL=10;
      private String prefix=null;
  
      public void setDebug( int i ) {
          logL=i;
      }
      
      protected void log( String s ) {
  	if( prefix==null ) {
  	    String cname = this.getClass().getName();
  	    prefix = cname.substring( cname.lastIndexOf(".") +1) + ":";
  	}
          System.out.println( prefix + s );
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>