remm        2005/07/26 10:17:44

  Modified:    catalina/src/share/org/apache/catalina/valves
                        SemaphoreValve.java LocalStrings.properties
  Log:
  - Oops, fix impl using Lifecycle.
  
  Revision  Changes    Path
  1.2       +109 -13   
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/SemaphoreValve.java
  
  Index: SemaphoreValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/SemaphoreValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SemaphoreValve.java       26 Jul 2005 12:45:22 -0000      1.1
  +++ SemaphoreValve.java       26 Jul 2005 17:17:43 -0000      1.2
  @@ -23,8 +23,13 @@
   
   import javax.servlet.ServletException;
   
  +import org.apache.catalina.Lifecycle;
  +import org.apache.catalina.LifecycleException;
  +import org.apache.catalina.LifecycleListener;
   import org.apache.catalina.connector.Request;
   import org.apache.catalina.connector.Response;
  +import org.apache.catalina.util.LifecycleSupport;
  +import org.apache.catalina.util.StringManager;
   
   
   /**
  @@ -38,18 +43,8 @@
    */
   
   public class SemaphoreValve
  -    extends ValveBase {
  -
  -
  -    // ------------------------------------------------------------ 
Constructor
  -
  -
  -    /**
  -     * Create a new StandardHost component with the default basic Valve.
  -     */
  -    public SemaphoreValve() {
  -        semaphore = new Semaphore(concurrency, fairness);
  -    }
  +    extends ValveBase
  +    implements Lifecycle {
   
   
       // ----------------------------------------------------- Instance 
Variables
  @@ -63,11 +58,30 @@
   
   
       /**
  +     * The string manager for this package.
  +     */
  +    private StringManager sm =
  +        StringManager.getManager(Constants.Package);
  +
  +
  +    /**
        * Semaphore.
        */
       protected Semaphore semaphore = null;
       
   
  +    /**
  +     * The lifecycle event support for this component.
  +     */
  +    protected LifecycleSupport lifecycle = new LifecycleSupport(this);
  +
  +
  +    /**
  +     * Has this component been started yet?
  +     */
  +    private boolean started = false;
  +
  +
       // ------------------------------------------------------------- 
Properties
   
       
  @@ -87,6 +101,88 @@
       public void setFairness(boolean fairness) { this.fairness = fairness; }
       
   
  +    // ------------------------------------------------------ Lifecycle 
Methods
  +
  +
  +    /**
  +     * Add a lifecycle event listener to this component.
  +     *
  +     * @param listener The listener to add
  +     */
  +    public void addLifecycleListener(LifecycleListener listener) {
  +
  +        lifecycle.addLifecycleListener(listener);
  +
  +    }
  +
  +
  +    /**
  +     * Get the lifecycle listeners associated with this lifecycle. If this
  +     * Lifecycle has no listeners registered, a zero-length array is 
returned.
  +     */
  +    public LifecycleListener[] findLifecycleListeners() {
  +
  +        return lifecycle.findLifecycleListeners();
  +
  +    }
  +
  +
  +    /**
  +     * Remove a lifecycle event listener from this component.
  +     *
  +     * @param listener The listener to add
  +     */
  +    public void removeLifecycleListener(LifecycleListener listener) {
  +
  +        lifecycle.removeLifecycleListener(listener);
  +
  +    }
  +
  +
  +    /**
  +     * Prepare for the beginning of active use of the public methods of this
  +     * component.  This method should be called after 
<code>configure()</code>,
  +     * and before any of the public methods of the component are utilized.
  +     *
  +     * @exception LifecycleException if this component detects a fatal error
  +     *  that prevents this component from being used
  +     */
  +    public void start() throws LifecycleException {
  +
  +        // Validate and update our current component state
  +        if (started)
  +            throw new LifecycleException
  +                (sm.getString("semaphoreValve.alreadyStarted"));
  +        lifecycle.fireLifecycleEvent(START_EVENT, null);
  +        started = true;
  +
  +        semaphore = new Semaphore(concurrency, fairness);
  +
  +    }
  +
  +
  +    /**
  +     * Gracefully terminate the active use of the public methods of this
  +     * component.  This method should be the last one called on a given
  +     * instance of this component.
  +     *
  +     * @exception LifecycleException if this component detects a fatal error
  +     *  that needs to be reported
  +     */
  +    public void stop() throws LifecycleException {
  +
  +        // Validate and update our current component state
  +        if (!started)
  +            throw new LifecycleException
  +                (sm.getString("semaphoreValve.notStarted"));
  +        lifecycle.fireLifecycleEvent(STOP_EVENT, null);
  +        started = false;
  +
  +        semaphore = null;
  +
  +    }
  +
  +    
       // --------------------------------------------------------- Public 
Methods
   
   
  
  
  
  1.9       +2 -0      
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/LocalStrings.properties
  
  Index: LocalStrings.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/LocalStrings.properties,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- LocalStrings.properties   15 Jan 2005 16:51:35 -0000      1.8
  +++ LocalStrings.properties   26 Jul 2005 17:17:43 -0000      1.9
  @@ -1,5 +1,7 @@
   accessLogValve.alreadyStarted=Access Logger has already been started
   accessLogValve.notStarted=Access Logger has not yet been started
  +semaphoreValve.alreadyStarted=Semaphore valve has already been started
  +semaphoreValve.notStarted=Semaphore valve has not yet been started
   certificatesValve.alreadyStarted=Certificates Valve has already been started
   certificatesValve.notStarted=Certificates Valve has not yet been started
   interceptorValve.alreadyStarted=Interceptor Valve has already been started
  
  
  

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

Reply via email to