You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by jm...@apache.org on 2002/11/13 06:24:20 UTC

cvs commit: xml-axis/java/src/org/apache/axis/ime MessageExchangeEvent.java MessageExchangeEventListener.java MessageExchange.java MessageExchangeFaultListener.java MessageExchangeStatusListener.java MessageContextListener.java

jmsnell     2002/11/12 21:24:20

  Modified:    java/src/org/apache/axis/ime/internal
                        MessageExchangeSendContext.java
                        FirstComeFirstServeDispatchPolicy.java
                        MessageExchangeProvider.java
                        MessageExchangeImpl.java
                        MessageExchangeReceiveContext.java
               java/src/org/apache/axis/ime/internal/util/handler
                        HandlerMessageExchange.java
               java/src/org/apache/axis/ime MessageExchange.java
  Added:       java/src/org/apache/axis/ime/event MessageSendEvent.java
                        MessageCorrelatedEvent.java MessageFaultEvent.java
                        MessageReceiveEvent.java MessageStatusEvent.java
               java/src/org/apache/axis/ime MessageExchangeEvent.java
                        MessageExchangeEventListener.java
  Removed:     java/src/org/apache/axis/ime/internal
                        MessageExchangeSendListener.java
               java/src/org/apache/axis/ime
                        MessageExchangeFaultListener.java
                        MessageExchangeStatusListener.java
                        MessageContextListener.java
  Log:
  Commiting some changes made by the Sonic folks
  
  Revision  Changes    Path
  1.2       +7 -14     xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeSendContext.java
  
  Index: MessageExchangeSendContext.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeSendContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MessageExchangeSendContext.java	29 Oct 2002 05:15:29 -0000	1.1
  +++ MessageExchangeSendContext.java	13 Nov 2002 05:24:19 -0000	1.2
  @@ -56,8 +56,7 @@
   
   import org.apache.axis.MessageContext;
   import org.apache.axis.ime.MessageExchangeCorrelator;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  -import org.apache.axis.ime.MessageExchangeStatusListener;
  +import org.apache.axis.ime.MessageExchangeEventListener;
   
   import java.io.Serializable;
   
  @@ -70,6 +69,7 @@
    * For thread safety, instances of this class are immutable
    * 
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public final class MessageExchangeSendContext
           implements Serializable {
  @@ -77,20 +77,17 @@
       public static MessageExchangeSendContext newInstance(
               MessageExchangeCorrelator correlator,
               MessageContext context,
  -            MessageExchangeFaultListener faultListener,
  -            MessageExchangeStatusListener statusListener) {
  +            MessageExchangeEventListener eventListener) {
           MessageExchangeSendContext mectx =
                   new MessageExchangeSendContext();
           mectx.correlator = correlator;
           mectx.context = context;
  -        mectx.faultListener = faultListener;
  -        mectx.statusListener = statusListener;
  +        mectx.eventListener = eventListener;
           return mectx;
       }
   
       protected MessageExchangeCorrelator correlator;
  -    protected MessageExchangeFaultListener faultListener;
  -    protected MessageExchangeStatusListener statusListener;
  +    protected MessageExchangeEventListener eventListener;
       protected MessageContext context;
   
       protected MessageExchangeSendContext() {
  @@ -104,11 +101,7 @@
           return this.context;
       }
   
  -    public MessageExchangeFaultListener getMessageExchangeFaultListener() {
  -        return this.faultListener;
  -    }
  -
  -    public MessageExchangeStatusListener getMessageExchangeStatusListener() {
  -        return this.statusListener;
  +    public MessageExchangeEventListener getMessageExchangeEventListener() {
  +        return this.eventListener;
       }    
   }
  
  
  
  1.3       +18 -11    xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstServeDispatchPolicy.java
  
  Index: FirstComeFirstServeDispatchPolicy.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstServeDispatchPolicy.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FirstComeFirstServeDispatchPolicy.java	29 Oct 2002 23:33:40 -0000	1.2
  +++ FirstComeFirstServeDispatchPolicy.java	13 Nov 2002 05:24:20 -0000	1.3
  @@ -56,14 +56,16 @@
   
   import org.apache.axis.MessageContext;
   import org.apache.axis.ime.MessageExchangeCorrelator;
  -import org.apache.axis.ime.MessageContextListener;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  +import org.apache.axis.ime.MessageExchangeEventListener;
  +import org.apache.axis.ime.event.MessageFaultEvent;
  +import org.apache.axis.ime.event.MessageReceiveEvent;
   import org.apache.axis.ime.internal.util.KeyedBuffer;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
   
   /**
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public class FirstComeFirstServeDispatchPolicy
           implements ReceivedMessageDispatchPolicy {
  @@ -104,19 +106,24 @@
           if (receiveContext == null) 
               RECEIVE.put(correlator,context);
           else {
  -            MessageExchangeFaultListener faultListener = 
  -              receiveContext.getMessageExchangeFaultListener();
  -            MessageContextListener contextListener = 
  -              receiveContext.getMessageContextListener();
  +            MessageExchangeEventListener eventListener = 
  +              receiveContext.getMessageExchangeEventListener();
               MessageContext msgContext = 
                 context.getMessageContext();
               try {
  -                contextListener.onReceive(
  -                    correlator, msgContext);       
  +                MessageReceiveEvent receiveEvent = 
  +                    new org.apache.axis.ime.event.MessageReceiveEvent(
  +                            correlator, 
  +                            receiveContext, 
  +                            context.getMessageContext());
  +                eventListener.onEvent(receiveEvent);
               } catch (Exception exception) {
  -              if (faultListener != null)
  -                  faultListener.onFault(
  -                      correlator, exception);
  +              if (eventListener != null) {
  +                  MessageFaultEvent faultEvent = new MessageFaultEvent(
  +                        correlator,
  +                        exception);
  +                  eventListener.onEvent(faultEvent);
  +              }
               }
           }
           if (log.isDebugEnabled()) {
  
  
  
  1.9       +13 -7     xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeProvider.java
  
  Index: MessageExchangeProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeProvider.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MessageExchangeProvider.java	29 Oct 2002 23:33:40 -0000	1.8
  +++ MessageExchangeProvider.java	13 Nov 2002 05:24:20 -0000	1.9
  @@ -60,10 +60,10 @@
   import org.apache.axis.Handler;
   import org.apache.axis.MessageContext;
   import org.apache.axis.ime.MessageExchange;
  -import org.apache.axis.ime.MessageContextListener;
  +import org.apache.axis.ime.MessageExchangeEventListener;
   import org.apache.axis.ime.MessageExchangeCorrelator;
   import org.apache.axis.ime.MessageExchangeFactory;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  +import org.apache.axis.ime.event.MessageSendEvent;
   import org.apache.axis.ime.internal.util.WorkerPool;
   import org.apache.axis.ime.internal.util.KeyedBuffer;
   import org.apache.axis.ime.internal.util.NonPersistentKeyedBuffer;
  @@ -74,6 +74,7 @@
   
   /**
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public abstract class MessageExchangeProvider
           implements MessageExchangeFactory {
  @@ -99,7 +100,7 @@
         return null;
       }
   
  -    protected abstract MessageExchangeSendListener getMessageExchangeSendListener();
  +    protected abstract MessageExchangeEventListener getMessageExchangeEventListener();
   
       protected abstract ReceivedMessageDispatchPolicy getReceivedMessageDispatchPolicy();
   
  @@ -142,7 +143,7 @@
           if (initialized)
               throw new IllegalStateException(Messages.getMessage("illegalStateException00"));
           for (int n = 0; n < THREAD_COUNT; n++) {
  -            WORKERS.addWorker(new MessageSender(WORKERS, SEND, getMessageExchangeSendListener(), getSendHandler()));
  +            WORKERS.addWorker(new MessageSender(WORKERS, SEND, getMessageExchangeEventListener(), getSendHandler()));
               WORKERS.addWorker(new MessageReceiver(WORKERS, RECEIVE, getReceivedMessageDispatchPolicy(), getReceiveHandler()));
           }
           initialized = true;
  @@ -280,13 +281,13 @@
       
           protected WorkerPool pool;
           protected KeyedBuffer channel;
  -        protected MessageExchangeSendListener listener;
  +        protected MessageExchangeEventListener listener;
           protected Handler handler;
       
           protected MessageSender(
                   WorkerPool pool,
                   KeyedBuffer channel,
  -                MessageExchangeSendListener listener,
  +                MessageExchangeEventListener listener,
                   Handler handler) {
               this.pool = pool;
               this.channel = channel;
  @@ -307,7 +308,12 @@
                       if (context != null) {
                         if (handler != null)
                           handler.invoke(context.getMessageContext());
  -                      listener.onSend(context);
  +                      
  +                      MessageSendEvent sendEvent = new MessageSendEvent(
  +                            context.getMessageExchangeCorrelator(), 
  +                            context,
  +                            context.getMessageContext());
  +                      listener.onEvent(sendEvent);
                       }
                   }
               } catch (Throwable t) {
  
  
  
  1.9       +31 -53    xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeImpl.java
  
  Index: MessageExchangeImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeImpl.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MessageExchangeImpl.java	30 Oct 2002 00:07:53 -0000	1.8
  +++ MessageExchangeImpl.java	13 Nov 2002 05:24:20 -0000	1.9
  @@ -60,11 +60,12 @@
   import org.apache.axis.i18n.Messages;
   import org.apache.axis.ime.MessageExchange;
   import org.apache.axis.ime.MessageExchangeConstants;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  -import org.apache.axis.ime.MessageExchangeStatusListener;
   import org.apache.axis.ime.MessageExchangeCorrelator;
  -import org.apache.axis.ime.MessageContextListener;
   import org.apache.axis.ime.MessageExchangeLifecycle;
  +import org.apache.axis.ime.MessageExchangeEventListener;
  +import org.apache.axis.ime.MessageExchangeEvent;
  +import org.apache.axis.ime.event.MessageReceiveEvent;
  +import org.apache.axis.ime.event.MessageFaultEvent;
   import org.apache.axis.components.uuid.UUIDGenFactory;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
  @@ -73,6 +74,7 @@
   
   /**
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public class MessageExchangeImpl
           implements MessageExchange, MessageExchangeLifecycle {
  @@ -83,8 +85,7 @@
       public static final long NO_TIMEOUT = -1;
       public static final long DEFAULT_TIMEOUT = 1000 * 30;
   
  -    private MessageExchangeFaultListener faultListener;
  -    private MessageExchangeStatusListener statusListener;
  +    private MessageExchangeEventListener eventListener;
       private MessageExchangeProvider provider;
       protected Holder holder;
   
  @@ -106,7 +107,7 @@
        */
       public MessageExchangeCorrelator send(
               MessageContext context,
  -            MessageContextListener listener)
  +            MessageExchangeEventListener listener)
               throws AxisFault {
           if (log.isDebugEnabled()) {
               log.debug("Enter: MessageExchangeImpl::send");
  @@ -125,16 +126,13 @@
               provider.processReceive(
                   MessageExchangeReceiveContext.newInstance(
                       correlator,
  -                    listener,
  -                    faultListener,
  -                    statusListener));
  +                    listener));
           }
           provider.processSend(
               MessageExchangeSendContext.newInstance(
                   correlator,
                   context,
  -                faultListener,
  -                statusListener));
  +                listener));
           if (log.isDebugEnabled()) {
               log.debug("Exit: MessageExchangeImpl::send");
           }
  @@ -179,7 +177,7 @@
           }
           holder = new Holder();
           Listener listener = new Listener(holder);
  -        setMessageExchangeFaultListener(listener);
  +        setMessageExchangeEventListener(listener);
           try {
               this.receive(correlator,listener);
               if (timeout != NO_TIMEOUT) 
  @@ -205,7 +203,7 @@
        * @see org.apache.axis.ime.MessageExchange#receive(MessageContextListener)
        */
       public void receive(
  -            MessageContextListener listener) 
  +            MessageExchangeEventListener listener) 
               throws AxisFault {
           receive(null,listener);
       }
  @@ -215,7 +213,7 @@
        */
       public void receive(
               MessageExchangeCorrelator correlator,
  -            MessageContextListener listener) 
  +            MessageExchangeEventListener listener) 
               throws AxisFault {
           if (log.isDebugEnabled()) {
               log.debug("Enter: MessageExchangeImpl::receive");
  @@ -223,9 +221,7 @@
           provider.processReceive(
               MessageExchangeReceiveContext.newInstance(
                   correlator,
  -                listener,
  -                faultListener,
  -                statusListener));
  +                listener));
           if (log.isDebugEnabled()) {
               log.debug("Exit: MessageExchangeImpl::receive");
           }
  @@ -253,7 +249,7 @@
           }
           holder = new Holder();
           Listener listener = new Listener(holder);
  -        setMessageExchangeFaultListener(listener);
  +        setMessageExchangeEventListener(listener);
           try {
               this.send(context,listener);
               if (timeout != NO_TIMEOUT) 
  @@ -278,31 +274,16 @@
       /**
        * see org.apache.axis.ime.MessageExchange#setMessageExchangeFaultListener(MessageExchangeFaultListener)
        */
  -    public synchronized void setMessageExchangeFaultListener(
  -            MessageExchangeFaultListener listener) {
  -        this.faultListener = listener;
  -    }
  -
  -    /**
  -     * see org.apache.axis.ime.MessageExchange#getMessageExchangeFaultListener()
  -     */    
  -    public synchronized MessageExchangeFaultListener getMessageExchangeFaultListener() {
  -        return this.faultListener;
  -    }
  -
  -    /**
  -     * see org.apache.axis.ime.MessageExchange#setMessageExchangeStatusListener(MessageExchangeStatusListener)
  -     */    
  -    public synchronized void setMessageExchangeStatusListener(
  -            MessageExchangeStatusListener listener) {
  -        this.statusListener = listener;
  +    public synchronized void setMessageExchangeEventListener(
  +            MessageExchangeEventListener listener) {
  +        this.eventListener = listener;
       }
   
       /**
        * see org.apache.axis.ime.MessageExchange#getMessageExchangeStatusListener()
        */        
  -    public synchronized MessageExchangeStatusListener getMessageExchangeStatusListener() {
  -        return this.statusListener;
  +    public synchronized MessageExchangeEventListener getMessageExchangeEventListener() {
  +        return this.eventListener;
       }
   
       /**
  @@ -428,8 +409,7 @@
       }
   
       public class Listener 
  -            extends MessageContextListener
  -            implements MessageExchangeFaultListener {
  +            implements MessageExchangeEventListener {
   
           protected Holder holder;
   
  @@ -440,21 +420,19 @@
           /**
            * @see org.apache.axis.ime.MessageExchangeReceiveListener#onReceive(MessageExchangeCorrelator, MessageContext)
            */
  -        public void onReceive(
  -                MessageExchangeCorrelator correlator,
  -                MessageContext context) {
  -            holder.set(correlator, context);
  +        public void onEvent(
  +                MessageExchangeEvent event) {
  +            if (event instanceof MessageReceiveEvent) {
  +                MessageReceiveEvent receiveEvent = (MessageReceiveEvent)event;
  +                holder.set(
  +                        receiveEvent.getMessageExchangeCorrelator(), 
  +                        receiveEvent.getMessageContext());
  +            }
  +            else if (event instanceof MessageFaultEvent) {
  +                MessageFaultEvent faultEvent = (MessageFaultEvent)event;
  +                holder.set(faultEvent.getMessageExchangeCorrelator(), faultEvent.getException());
           }
  -
  -        /**
  -         * @see org.apache.axis.ime.MessageExchangeFaultListener#onFault(MessageExchangeCorrelator, Throwable)
  -         */
  -        public void onFault(
  -                MessageExchangeCorrelator correlator,
  -                Throwable exception) {
  -            holder.set(correlator, exception);
           }
  -
       }
   
   
  
  
  
  1.2       +59 -20    xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeReceiveContext.java
  
  Index: MessageExchangeReceiveContext.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeReceiveContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MessageExchangeReceiveContext.java	29 Oct 2002 05:15:29 -0000	1.1
  +++ MessageExchangeReceiveContext.java	13 Nov 2002 05:24:20 -0000	1.2
  @@ -1,32 +1,79 @@
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.internal;
   
  -import org.apache.axis.ime.MessageContextListener;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  -import org.apache.axis.ime.MessageExchangeStatusListener;
   import org.apache.axis.ime.MessageExchangeCorrelator;
  +import org.apache.axis.ime.MessageExchangeEventListener;
   
   /**
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public class MessageExchangeReceiveContext {
   
       public static MessageExchangeReceiveContext newInstance(
               MessageExchangeCorrelator correlator,
  -            MessageContextListener listener,
  -            MessageExchangeFaultListener faultListener,
  -            MessageExchangeStatusListener statusListener) {
  +            MessageExchangeEventListener listener) {
           MessageExchangeReceiveContext mectx =
                   new MessageExchangeReceiveContext();
           mectx.correlator = correlator;
           mectx.listener = listener;
  -        mectx.faultListener = faultListener;
  -        mectx.statusListener = statusListener;
           return mectx;
       }
   
  -  protected MessageContextListener listener;
  -  protected MessageExchangeFaultListener faultListener;
  -  protected MessageExchangeStatusListener statusListener;
  +    protected MessageExchangeEventListener listener;
     protected MessageExchangeCorrelator correlator;
   
     protected MessageExchangeReceiveContext() {}
  @@ -35,15 +82,7 @@
           return this.correlator;
       }
   
  -    public MessageContextListener getMessageContextListener() {
  +    public MessageExchangeEventListener getMessageExchangeEventListener() {
           return this.listener;
       }
  -
  -    public MessageExchangeFaultListener getMessageExchangeFaultListener() {
  -        return this.faultListener;
  -    }
  -    
  -    public MessageExchangeStatusListener getMessageExchangeStatusListener() {
  -        return this.statusListener;
  -    } 
   }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/event/MessageSendEvent.java
  
  Index: MessageSendEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.event;
  
  import org.apache.axis.ime.MessageExchangeCorrelator;
  import org.apache.axis.ime.internal.MessageExchangeSendContext;
  import org.apache.axis.MessageContext;
  
  /**
   * The MessageSendEvent is used to indicate that a message has been dispatched.
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public class MessageSendEvent
          extends MessageCorrelatedEvent {
  
      protected MessageExchangeSendContext sendContext;
      
      public MessageSendEvent(
              MessageExchangeCorrelator correlator,
              MessageExchangeSendContext sendContext,
              MessageContext context) {
          super(correlator, context);
          this.sendContext = sendContext;
      }
      
      public MessageExchangeSendContext getMessageExchangeSendContext()
      {
          return sendContext;
      }
  }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/event/MessageCorrelatedEvent.java
  
  Index: MessageCorrelatedEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.event;
  
  import org.apache.axis.ime.MessageExchangeEvent;
  import org.apache.axis.ime.MessageExchangeCorrelator;
  import org.apache.axis.MessageContext;
  import java.io.Serializable;
  
  /**
   * MessageCorrelatedEvent is the base abstract class for all 
   * events which are associated with a particular message.  
   * It contains a reference to the message via the MessageContext.
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public abstract class MessageCorrelatedEvent
          implements MessageExchangeEvent, Serializable {
     
      protected MessageExchangeCorrelator correlator;
      protected MessageContext context;
  
      public MessageCorrelatedEvent(
              MessageExchangeCorrelator correlator) {
          this.correlator = correlator;
      }
  
      public MessageCorrelatedEvent(
              MessageExchangeCorrelator correlator,
              MessageContext context) {
          this.correlator = correlator;
          this.context = context;
      }
      
      public MessageExchangeCorrelator getMessageExchangeCorrelator() {
          return correlator;
      }
      
      public MessageContext getMessageContext() {
          return context;
      }
  }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/event/MessageFaultEvent.java
  
  Index: MessageFaultEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.event;
  
  import org.apache.axis.ime.MessageExchangeCorrelator;
  
  /**
   * The MessageFaultEvent is used to indicate an exception in the 
   * processing of a message.
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public class MessageFaultEvent
          extends MessageCorrelatedEvent {
  
      protected Throwable exception;
      
      public MessageFaultEvent(
              MessageExchangeCorrelator correlator,
              Throwable exception) {
          super(correlator);
          this.exception = exception;
      }
      
      public Throwable getException()
      {
          return exception;
      }
  }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/event/MessageReceiveEvent.java
  
  Index: MessageReceiveEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.event;
  
  import org.apache.axis.ime.MessageExchangeCorrelator;
  import org.apache.axis.ime.internal.MessageExchangeReceiveContext;
  import org.apache.axis.MessageContext;
  
  /**
   * The MessageReceiveEvent is used to notify listeners that a message
   * has been received.
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public class MessageReceiveEvent
          extends MessageCorrelatedEvent {
  
      protected MessageExchangeReceiveContext receiveContext;
      
      public MessageReceiveEvent(
              MessageExchangeCorrelator correlator, 
              MessageExchangeReceiveContext receiveContext,
              MessageContext context) {
          super(correlator, context);
          this.receiveContext = receiveContext;
      }
      
      public MessageExchangeReceiveContext getMessageExchangeReceiveContext()
      {
          return receiveContext;
      }
  }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/event/MessageStatusEvent.java
  
  Index: MessageStatusEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime.event;
  
  import org.apache.axis.ime.MessageExchangeCorrelator;
  import org.apache.axis.ime.MessageExchangeStatus;
  
  /**
   * The MessageExchangeStatus event is used to provide status 
   * notifications to registered listeners.
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public class MessageStatusEvent
          extends MessageCorrelatedEvent {
  
      protected MessageExchangeStatus status;
      
      public MessageStatusEvent(
              MessageExchangeCorrelator correlator,
              MessageExchangeStatus status) {
          super(correlator);
          this.status = status;
      }
      
      public MessageExchangeStatus getMessageExchangeStatus()
      {
          return status;
      }
  
  }
  
  
  
  1.4       +20 -11    xml-axis/java/src/org/apache/axis/ime/internal/util/handler/HandlerMessageExchange.java
  
  Index: HandlerMessageExchange.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/util/handler/HandlerMessageExchange.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HandlerMessageExchange.java	29 Oct 2002 23:58:02 -0000	1.3
  +++ HandlerMessageExchange.java	13 Nov 2002 05:24:20 -0000	1.4
  @@ -59,11 +59,12 @@
   import org.apache.axis.TargetedChain;
   import org.apache.axis.MessageContext;
   import org.apache.axis.ime.MessageExchangeCorrelator;
  -import org.apache.axis.ime.MessageContextListener;
  -import org.apache.axis.ime.MessageExchangeFaultListener;
  +import org.apache.axis.ime.MessageExchangeEventListener;
  +import org.apache.axis.ime.MessageExchangeEvent;
  +import org.apache.axis.ime.event.MessageFaultEvent;
  +import org.apache.axis.ime.event.MessageSendEvent;
   import org.apache.axis.ime.internal.MessageExchangeProvider;
   import org.apache.axis.ime.internal.MessageExchangeSendContext;
  -import org.apache.axis.ime.internal.MessageExchangeSendListener;
   import org.apache.axis.ime.internal.ReceivedMessageDispatchPolicy;
   import org.apache.axis.ime.internal.FirstComeFirstServeDispatchPolicy;
   import org.apache.axis.components.logger.LogFactory;
  @@ -89,7 +90,7 @@
       /**
        * @see org.apache.axis.ime.internal.MessageExchangeProvider1#createSendMessageContextListener()
        */
  -    protected MessageExchangeSendListener getMessageExchangeSendListener() {
  +    protected MessageExchangeEventListener getMessageExchangeEventListener() {
           return new Listener(handler);
       }
   
  @@ -114,7 +115,7 @@
       }
   
       public class Listener
  -            implements MessageExchangeSendListener {
  +            implements MessageExchangeEventListener {
   
           private Handler handler;
   
  @@ -125,13 +126,19 @@
           /**
            * @see org.apache.axis.ime.MessageExchangeContextListener#onMessageExchangeContext(MessageExchangeContext)
            */
  -        public void onSend(
  -                MessageExchangeSendContext context) {
  +        public void onEvent(
  +                MessageExchangeEvent event) {
  +            if (!(event instanceof MessageSendEvent))
  +                return;
  +            
  +            MessageSendEvent sendEvent = (MessageSendEvent)event;
  +            MessageExchangeSendContext context = sendEvent.getMessageExchangeSendContext();
  +            
               if (log.isDebugEnabled()) {
                   log.debug("Enter: HandlerMessageExchange.Listener::onSend");
               }
  -            MessageExchangeFaultListener listener = 
  -                context.getMessageExchangeFaultListener();
  +            MessageExchangeEventListener listener = 
  +                context.getMessageExchangeEventListener();
               try {
                   MessageContext msgContext =
                           context.getMessageContext();
  @@ -147,10 +154,12 @@
   
                   RECEIVE.put(correlator, context);
               } catch (Exception exception) {
  -                if (listener != null)
  -                    listener.onFault(
  +                if (listener != null) {
  +                    MessageFaultEvent faultEvent = new MessageFaultEvent(
                               context.getMessageExchangeCorrelator(),
                               exception);
  +                    listener.onEvent(faultEvent);
  +                }
               } finally {
                   if (log.isDebugEnabled()) {
                       log.debug("Exit: HandlerMessageExchange.Listener::onSend");
  
  
  
  1.7       +7 -13     xml-axis/java/src/org/apache/axis/ime/MessageExchange.java
  
  Index: MessageExchange.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/ime/MessageExchange.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MessageExchange.java	29 Oct 2002 06:39:57 -0000	1.6
  +++ MessageExchange.java	13 Nov 2002 05:24:20 -0000	1.7
  @@ -65,6 +65,7 @@
    * models for receiving inbound messages.
    * 
    * @author James M Snell (jasnell@us.ibm.com)
  + * @author Ray Chun (rchun@sonicsoftware.com)
    */
   public interface MessageExchange {
   
  @@ -93,7 +94,7 @@
        */
       public MessageExchangeCorrelator send(
               MessageContext context,
  -            MessageContextListener listener)
  +            MessageExchangeEventListener listener)
               throws AxisFault;
   
       /**
  @@ -150,7 +151,7 @@
        * @throws AxisFault
        */
       public void receive(
  -            MessageContextListener listener)
  +            MessageExchangeEventListener listener)
               throws AxisFault;
   
       /**
  @@ -162,7 +163,7 @@
        */            
       public void receive(
               MessageExchangeCorrelator correlator,
  -            MessageContextListener listener)
  +            MessageExchangeEventListener listener)
               throws AxisFault;
   
       /**
  @@ -187,17 +188,10 @@
               long timeout)
               throws AxisFault;
   
  -    public void setMessageExchangeFaultListener(
  -            MessageExchangeFaultListener listener);
  -            
  -    public MessageExchangeFaultListener getMessageExchangeFaultListener();
  -    
  -    public void setMessageExchangeStatusListener(
  -            MessageExchangeStatusListener listener);
  -            
  -    public MessageExchangeStatusListener getMessageExchangeStatusListener();
  -        
  +    public void setMessageExchangeEventListener(
  +            MessageExchangeEventListener listener);
           
  +    public MessageExchangeEventListener getMessageExchangeEventListener();
   
       /**
        * @param String The id of the feature to enable
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/MessageExchangeEvent.java
  
  Index: MessageExchangeEvent.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime;
  
  import java.io.Serializable;
  
  /**
   * The base interface for all MessageExchange events, such as message receipt 
   * notification, delivery acknowledgement, exception notification, and status. 
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public interface MessageExchangeEvent
          extends Serializable {
              
  }
  
  
  
  1.1                  xml-axis/java/src/org/apache/axis/ime/MessageExchangeEventListener.java
  
  Index: MessageExchangeEventListener.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 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 "Axis" 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 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.axis.ime;
  
  import java.io.Serializable;
  
  /**
   * The base interface to be extended by all MessageExchangeEvent listeners.
   *
   * @author Ray Chun (rchun@sonicsoftware.com)
   */
  public interface MessageExchangeEventListener
          extends Serializable {
  
      public void onEvent(
              MessageExchangeEvent event);
  
  }
  
  
  

RE: cvs commit: xml-axis/java/src/org/apache/axis/ime MessageExchangeEvent.java MessageExchangeEventListener.java MessageExchange.java MessageExchangeFaultListener.java MessageExchangeStatusListener.java MessageContextListener.java

Posted by Jaime Meritt <jm...@sonicsoftware.com>.
Dims,

Basically the changes entail replacing the fine-grained event model that
existed in the IME with a generic event/listener model.  For example, in
the previous versions there were MessageContextListener implementations
that received MessageContext messages, StatusEventListeners that
received StatusEvents and FaultListeners that received FaultEvents.  The
new model is that there is a single listener that receives
MessageExchangeEvents.  All of the previous events are extensions of the
MessageExchangeEvents.  This allows a single listener to receive all
events that are applicable to a MessageExchange as opposed to requiring
individual listeners for every event type.

Thanks,
Jaime 

-----Original Message-----
From: Davanum Srinivas [mailto:dims@yahoo.com] 
Sent: Wednesday, November 13, 2002 9:39 AM
To: axis-dev@xml.apache.org
Cc: jmsnell@apache.org
Subject: Re: cvs commit: xml-axis/java/src/org/apache/axis/ime
MessageExchangeEvent.java MessageExchangeEventListener.java
MessageExchange.java MessageExchangeFaultListener.java
MessageExchangeStatusListener.java MessageContextListener.java

James,

Is there a summary list of items for this changes?

Thanks,
dims


--- jmsnell@apache.org wrote:
> jmsnell     2002/11/12 21:24:20
> 
>   Modified:    java/src/org/apache/axis/ime/internal
>                         MessageExchangeSendContext.java
>                         FirstComeFirstServeDispatchPolicy.java
>                         MessageExchangeProvider.java
>                         MessageExchangeImpl.java
>                         MessageExchangeReceiveContext.java
>                java/src/org/apache/axis/ime/internal/util/handler
>                         HandlerMessageExchange.java
>                java/src/org/apache/axis/ime MessageExchange.java
>   Added:       java/src/org/apache/axis/ime/event
MessageSendEvent.java
>                         MessageCorrelatedEvent.java
MessageFaultEvent.java
>                         MessageReceiveEvent.java
MessageStatusEvent.java
>                java/src/org/apache/axis/ime MessageExchangeEvent.java
>                         MessageExchangeEventListener.java
>   Removed:     java/src/org/apache/axis/ime/internal
>                         MessageExchangeSendListener.java
>                java/src/org/apache/axis/ime
>                         MessageExchangeFaultListener.java
>                         MessageExchangeStatusListener.java
>                         MessageContextListener.java
>   Log:
>   Commiting some changes made by the Sonic folks
>   
>   Revision  Changes    Path
>   1.2       +7 -14    
>
xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeSendContex
t.java
>   
>   Index: MessageExchangeSendContext.java
>   ===================================================================
>   RCS file:
>
/home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchange
SendContext.java,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- MessageExchangeSendContext.java	29 Oct 2002 05:15:29 -0000
1.1
>   +++ MessageExchangeSendContext.java	13 Nov 2002 05:24:19 -0000
1.2
>   @@ -56,8 +56,7 @@
>    
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   -import org.apache.axis.ime.MessageExchangeStatusListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>    
>    import java.io.Serializable;
>    
>   @@ -70,6 +69,7 @@
>     * For thread safety, instances of this class are immutable
>     * 
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public final class MessageExchangeSendContext
>            implements Serializable {
>   @@ -77,20 +77,17 @@
>        public static MessageExchangeSendContext newInstance(
>                MessageExchangeCorrelator correlator,
>                MessageContext context,
>   -            MessageExchangeFaultListener faultListener,
>   -            MessageExchangeStatusListener statusListener) {
>   +            MessageExchangeEventListener eventListener) {
>            MessageExchangeSendContext mectx =
>                    new MessageExchangeSendContext();
>            mectx.correlator = correlator;
>            mectx.context = context;
>   -        mectx.faultListener = faultListener;
>   -        mectx.statusListener = statusListener;
>   +        mectx.eventListener = eventListener;
>            return mectx;
>        }
>    
>        protected MessageExchangeCorrelator correlator;
>   -    protected MessageExchangeFaultListener faultListener;
>   -    protected MessageExchangeStatusListener statusListener;
>   +    protected MessageExchangeEventListener eventListener;
>        protected MessageContext context;
>    
>        protected MessageExchangeSendContext() {
>   @@ -104,11 +101,7 @@
>            return this.context;
>        }
>    
>   -    public MessageExchangeFaultListener
getMessageExchangeFaultListener() {
>   -        return this.faultListener;
>   -    }
>   -
>   -    public MessageExchangeStatusListener
getMessageExchangeStatusListener() {
>   -        return this.statusListener;
>   +    public MessageExchangeEventListener
getMessageExchangeEventListener() {
>   +        return this.eventListener;
>        }    
>    }
>   
>   
>   
>   1.3       +18 -11   
>
xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstServeDispat
chPolicy.java
>   
>   Index: FirstComeFirstServeDispatchPolicy.java
>   ===================================================================
>   RCS file:
>
/home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstS
erveDispatchPolicy.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- FirstComeFirstServeDispatchPolicy.java	29 Oct 2002 23:33:40
-0000	1.2
>   +++ FirstComeFirstServeDispatchPolicy.java	13 Nov 2002 05:24:20
-0000	1.3
>   @@ -56,14 +56,16 @@
>    
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>   -import org.apache.axis.ime.MessageContextListener;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>   +import org.apache.axis.ime.event.MessageFaultEvent;
>   +import org.apache.axis.ime.event.MessageReceiveEvent;
>    import org.apache.axis.ime.internal.util.KeyedBuffer;
>    import org.apache.axis.components.logger.LogFactory;
>    import org.apache.commons.logging.Log;
>    
>    /**
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public class FirstComeFirstServeDispatchPolicy
>            implements ReceivedMessageDispatchPolicy {
>   @@ -104,19 +106,24 @@
>            if (receiveContext == null) 
>                RECEIVE.put(correlator,context);
>            else {
>   -            MessageExchangeFaultListener faultListener = 
>   -              receiveContext.getMessageExchangeFaultListener();
>   -            MessageContextListener contextListener = 
>   -              receiveContext.getMessageContextListener();
>   +            MessageExchangeEventListener eventListener = 
>   +              receiveContext.getMessageExchangeEventListener();
>                MessageContext msgContext = 
>                  context.getMessageContext();
>                try {
>   -                contextListener.onReceive(
>   -                    correlator, msgContext);       
>   +                MessageReceiveEvent receiveEvent = 
>   +                    new
org.apache.axis.ime.event.MessageReceiveEvent(
>   +                            correlator, 
>   +                            receiveContext, 
>   +                            context.getMessageContext());
>   +                eventListener.onEvent(receiveEvent);
>                } catch (Exception exception) {
>   -              if (faultListener != null)
>   -                  faultListener.onFault(
>   -                      correlator, exception);
>   +              if (eventListener != null) {
>   +                  MessageFaultEvent faultEvent = new
MessageFaultEvent(
>   +                        correlator,
>   +                        exception);
>   +                  eventListener.onEvent(faultEvent);
>   +              }
>                }
>            }
>            if (log.isDebugEnabled()) {
>   
>   
>   
>   1.9       +13 -7    
>
xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeProvider.j
ava
>   
>   Index: MessageExchangeProvider.java
>   ===================================================================
>   RCS file:
>
/home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchange
Provider.java,v
>   retrieving revision 1.8
>   retrieving revision 1.9
>   diff -u -r1.8 -r1.9
>   --- MessageExchangeProvider.java	29 Oct 2002 23:33:40 -0000
1.8
>   +++ MessageExchangeProvider.java	13 Nov 2002 05:24:20 -0000
1.9
>   @@ -60,10 +60,10 @@
>    import org.apache.axis.Handler;
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchange;
>   -import org.apache.axis.ime.MessageContextListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>    import org.apache.axis.ime.MessageExchangeFactory;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   +import org.apache.axis.ime.event.MessageSendEvent;
>    import org.apache.axis.ime.internal.util.WorkerPool;
>    import org.apache.axis.ime.internal.util.KeyedBuffer;
>    import org.apache.axis.ime.internal.util.NonPersistentKeyedBuffer;
>   @@ -74,6 +74,7 @@
>    
>    /**
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public abstract class MessageExchangeProvider
>            implements MessageExchangeFactory {
>   @@ -99,7 +100,7 @@
>          return null;
>        }
> 
=== message truncated ===


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do you Yahoo!?
U2 on LAUNCH - Exclusive greatest hits videos
http://launch.yahoo.com/u2


Re: cvs commit: xml-axis/java/src/org/apache/axis/ime MessageExchangeEvent.java MessageExchangeEventListener.java MessageExchange.java MessageExchangeFaultListener.java MessageExchangeStatusListener.java MessageContextListener.java

Posted by Davanum Srinivas <di...@yahoo.com>.
James,

Is there a summary list of items for this changes?

Thanks,
dims


--- jmsnell@apache.org wrote:
> jmsnell     2002/11/12 21:24:20
> 
>   Modified:    java/src/org/apache/axis/ime/internal
>                         MessageExchangeSendContext.java
>                         FirstComeFirstServeDispatchPolicy.java
>                         MessageExchangeProvider.java
>                         MessageExchangeImpl.java
>                         MessageExchangeReceiveContext.java
>                java/src/org/apache/axis/ime/internal/util/handler
>                         HandlerMessageExchange.java
>                java/src/org/apache/axis/ime MessageExchange.java
>   Added:       java/src/org/apache/axis/ime/event MessageSendEvent.java
>                         MessageCorrelatedEvent.java MessageFaultEvent.java
>                         MessageReceiveEvent.java MessageStatusEvent.java
>                java/src/org/apache/axis/ime MessageExchangeEvent.java
>                         MessageExchangeEventListener.java
>   Removed:     java/src/org/apache/axis/ime/internal
>                         MessageExchangeSendListener.java
>                java/src/org/apache/axis/ime
>                         MessageExchangeFaultListener.java
>                         MessageExchangeStatusListener.java
>                         MessageContextListener.java
>   Log:
>   Commiting some changes made by the Sonic folks
>   
>   Revision  Changes    Path
>   1.2       +7 -14    
> xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeSendContext.java
>   
>   Index: MessageExchangeSendContext.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeSendContext.java,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- MessageExchangeSendContext.java	29 Oct 2002 05:15:29 -0000	1.1
>   +++ MessageExchangeSendContext.java	13 Nov 2002 05:24:19 -0000	1.2
>   @@ -56,8 +56,7 @@
>    
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   -import org.apache.axis.ime.MessageExchangeStatusListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>    
>    import java.io.Serializable;
>    
>   @@ -70,6 +69,7 @@
>     * For thread safety, instances of this class are immutable
>     * 
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public final class MessageExchangeSendContext
>            implements Serializable {
>   @@ -77,20 +77,17 @@
>        public static MessageExchangeSendContext newInstance(
>                MessageExchangeCorrelator correlator,
>                MessageContext context,
>   -            MessageExchangeFaultListener faultListener,
>   -            MessageExchangeStatusListener statusListener) {
>   +            MessageExchangeEventListener eventListener) {
>            MessageExchangeSendContext mectx =
>                    new MessageExchangeSendContext();
>            mectx.correlator = correlator;
>            mectx.context = context;
>   -        mectx.faultListener = faultListener;
>   -        mectx.statusListener = statusListener;
>   +        mectx.eventListener = eventListener;
>            return mectx;
>        }
>    
>        protected MessageExchangeCorrelator correlator;
>   -    protected MessageExchangeFaultListener faultListener;
>   -    protected MessageExchangeStatusListener statusListener;
>   +    protected MessageExchangeEventListener eventListener;
>        protected MessageContext context;
>    
>        protected MessageExchangeSendContext() {
>   @@ -104,11 +101,7 @@
>            return this.context;
>        }
>    
>   -    public MessageExchangeFaultListener getMessageExchangeFaultListener() {
>   -        return this.faultListener;
>   -    }
>   -
>   -    public MessageExchangeStatusListener getMessageExchangeStatusListener() {
>   -        return this.statusListener;
>   +    public MessageExchangeEventListener getMessageExchangeEventListener() {
>   +        return this.eventListener;
>        }    
>    }
>   
>   
>   
>   1.3       +18 -11   
> xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstServeDispatchPolicy.java
>   
>   Index: FirstComeFirstServeDispatchPolicy.java
>   ===================================================================
>   RCS file:
>
/home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/FirstComeFirstServeDispatchPolicy.java,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- FirstComeFirstServeDispatchPolicy.java	29 Oct 2002 23:33:40 -0000	1.2
>   +++ FirstComeFirstServeDispatchPolicy.java	13 Nov 2002 05:24:20 -0000	1.3
>   @@ -56,14 +56,16 @@
>    
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>   -import org.apache.axis.ime.MessageContextListener;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>   +import org.apache.axis.ime.event.MessageFaultEvent;
>   +import org.apache.axis.ime.event.MessageReceiveEvent;
>    import org.apache.axis.ime.internal.util.KeyedBuffer;
>    import org.apache.axis.components.logger.LogFactory;
>    import org.apache.commons.logging.Log;
>    
>    /**
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public class FirstComeFirstServeDispatchPolicy
>            implements ReceivedMessageDispatchPolicy {
>   @@ -104,19 +106,24 @@
>            if (receiveContext == null) 
>                RECEIVE.put(correlator,context);
>            else {
>   -            MessageExchangeFaultListener faultListener = 
>   -              receiveContext.getMessageExchangeFaultListener();
>   -            MessageContextListener contextListener = 
>   -              receiveContext.getMessageContextListener();
>   +            MessageExchangeEventListener eventListener = 
>   +              receiveContext.getMessageExchangeEventListener();
>                MessageContext msgContext = 
>                  context.getMessageContext();
>                try {
>   -                contextListener.onReceive(
>   -                    correlator, msgContext);       
>   +                MessageReceiveEvent receiveEvent = 
>   +                    new org.apache.axis.ime.event.MessageReceiveEvent(
>   +                            correlator, 
>   +                            receiveContext, 
>   +                            context.getMessageContext());
>   +                eventListener.onEvent(receiveEvent);
>                } catch (Exception exception) {
>   -              if (faultListener != null)
>   -                  faultListener.onFault(
>   -                      correlator, exception);
>   +              if (eventListener != null) {
>   +                  MessageFaultEvent faultEvent = new MessageFaultEvent(
>   +                        correlator,
>   +                        exception);
>   +                  eventListener.onEvent(faultEvent);
>   +              }
>                }
>            }
>            if (log.isDebugEnabled()) {
>   
>   
>   
>   1.9       +13 -7    
> xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeProvider.java
>   
>   Index: MessageExchangeProvider.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/ime/internal/MessageExchangeProvider.java,v
>   retrieving revision 1.8
>   retrieving revision 1.9
>   diff -u -r1.8 -r1.9
>   --- MessageExchangeProvider.java	29 Oct 2002 23:33:40 -0000	1.8
>   +++ MessageExchangeProvider.java	13 Nov 2002 05:24:20 -0000	1.9
>   @@ -60,10 +60,10 @@
>    import org.apache.axis.Handler;
>    import org.apache.axis.MessageContext;
>    import org.apache.axis.ime.MessageExchange;
>   -import org.apache.axis.ime.MessageContextListener;
>   +import org.apache.axis.ime.MessageExchangeEventListener;
>    import org.apache.axis.ime.MessageExchangeCorrelator;
>    import org.apache.axis.ime.MessageExchangeFactory;
>   -import org.apache.axis.ime.MessageExchangeFaultListener;
>   +import org.apache.axis.ime.event.MessageSendEvent;
>    import org.apache.axis.ime.internal.util.WorkerPool;
>    import org.apache.axis.ime.internal.util.KeyedBuffer;
>    import org.apache.axis.ime.internal.util.NonPersistentKeyedBuffer;
>   @@ -74,6 +74,7 @@
>    
>    /**
>     * @author James M Snell (jasnell@us.ibm.com)
>   + * @author Ray Chun (rchun@sonicsoftware.com)
>     */
>    public abstract class MessageExchangeProvider
>            implements MessageExchangeFactory {
>   @@ -99,7 +100,7 @@
>          return null;
>        }
> 
=== message truncated ===


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do you Yahoo!?
U2 on LAUNCH - Exclusive greatest hits videos
http://launch.yahoo.com/u2