You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/03/07 00:19:38 UTC

svn commit: r383702 [1/3] - in /incubator/servicemix/trunk: servicemix-components/src/test/resources/org/apache/servicemix/components/email/ servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/ servicemix-core/src/main/java/org/apache/service...

Author: gnodet
Date: Mon Mar  6 15:19:33 2006
New Revision: 383702

URL: http://svn.apache.org/viewcvs?rev=383702&view=rev
Log:
SM-295: SA connections handling
SM-149: clustering on endpoints
SM-337: jms flow routes to components before they are started

Added:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentAdapter.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentListener.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointAdapter.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointListener.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeListener.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyAdapter.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyListener.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitAdapter.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitListener.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/nmr/ConnectionsTest.java
Removed:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacketEvent.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacketEventListener.java
Modified:
    incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/email/example.xml
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/AbstractAuditor.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/jdbc/JdbcAuditor.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/lucene/LuceneAuditor.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SubscriptionSpec.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentConnector.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentContextImpl.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacket.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentRegistry.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/DeploymentService.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Endpoint.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/LocalComponentConnector.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Registry.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyLifeCycle.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceUnitLifeCycle.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/nmr/Broker.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/nmr/flow/AbstractFlow.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/nmr/flow/jca/JCAFlow.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/nmr/flow/jms/JMSFlow.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/nmr/flow/seda/SedaFlow.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/AbstractServiceEndpoint.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/InternalEndpoint.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/LinkedEndpoint.java
    incubator/servicemix/trunk/servicemix-core/src/test/components/logger-component-1.0-exploded.jar/META-INF/jbi.xml
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/framework/ComponentPacketTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/installation/DeploymentTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/management/ManagementAttributesTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/management/ManagementContextTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/nmr/flow/jms/JMSFlowTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/nmr/flow/jms/MultipleJMSFlowTest.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/servicedesc/InternalEndpointTest.java

Modified: incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/email/example.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/email/example.xml?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/email/example.xml (original)
+++ incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/email/example.xml Mon Mar  6 15:19:33 2006
@@ -7,7 +7,7 @@
     <sm:activationSpecs>
 
       <!-- START SNIPPET: mime -->
-      <sm:activationSpec componentName="emailSender" service="foo:emailSender">
+      <sm:activationSpec componentName="emailSender" service="foo:mimeSender">
         <sm:component><bean class="org.apache.servicemix.components.email.MimeMailSender">
           <property name="sender">
             <bean class="org.springframework.mail.javamail.JavaMailSenderImpl">

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/AbstractAuditor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/AbstractAuditor.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/AbstractAuditor.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/AbstractAuditor.java Mon Mar  6 15:19:33 2006
@@ -23,8 +23,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.servicemix.MessageExchangeListener;
 import org.apache.servicemix.jbi.container.JBIContainer;
+import org.apache.servicemix.jbi.event.ExchangeListener;
 import org.apache.servicemix.jbi.management.AttributeInfoHelper;
 import org.apache.servicemix.jbi.management.BaseSystemService;
 import org.apache.servicemix.jbi.management.OperationInfoHelper;
@@ -37,7 +37,7 @@
  * @since 2.1
  * @version $Revision$
  */
-public abstract class AbstractAuditor extends BaseSystemService implements AuditorMBean, MessageExchangeListener {
+public abstract class AbstractAuditor extends BaseSystemService implements AuditorMBean, ExchangeListener {
 
     protected final Log log = LogFactory.getLog(getClass());
     

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/jdbc/JdbcAuditor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/jdbc/JdbcAuditor.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/jdbc/JdbcAuditor.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/jdbc/JdbcAuditor.java Mon Mar  6 15:19:33 2006
@@ -23,7 +23,6 @@
 import java.sql.Statement;
 
 import javax.jbi.messaging.MessageExchange;
-import javax.jbi.messaging.MessagingException;
 import javax.sql.DataSource;
 
 import org.apache.ddlutils.Platform;
@@ -33,6 +32,7 @@
 import org.apache.ddlutils.model.Table;
 import org.apache.servicemix.jbi.audit.AbstractAuditor;
 import org.apache.servicemix.jbi.audit.AuditorException;
+import org.apache.servicemix.jbi.event.ExchangeEvent;
 import org.apache.servicemix.jbi.messaging.ExchangePacket;
 import org.apache.servicemix.jbi.messaging.InOnlyImpl;
 import org.apache.servicemix.jbi.messaging.InOptionalOutImpl;
@@ -109,7 +109,8 @@
         return db;
     }
 
-    public void onMessageExchange(MessageExchange exchange) throws MessagingException {
+    public void exchangeSent(ExchangeEvent event) {
+        MessageExchange exchange = event.getExchange();
         if (exchange instanceof MessageExchangeImpl == false) {
             throw new IllegalArgumentException("exchange should be a MessageExchangeImpl");
         }
@@ -124,7 +125,7 @@
                 platform.returnConnection(connection);
             }
         } catch (Exception e) {
-            throw new MessagingException("Could not persist exchange", e);
+            log.error("Could not persist exchange", e);
         }
     }
     

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/lucene/LuceneAuditor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/lucene/LuceneAuditor.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/lucene/LuceneAuditor.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/audit/lucene/LuceneAuditor.java Mon Mar  6 15:19:33 2006
@@ -31,6 +31,8 @@
 import org.apache.servicemix.jbi.audit.AuditorException;
 import org.apache.servicemix.jbi.audit.AuditorMBean;
 import org.apache.servicemix.jbi.audit.AuditorQueryMBean;
+import org.apache.servicemix.jbi.event.ExchangeEvent;
+import org.apache.servicemix.jbi.event.ExchangeListener;
 import org.apache.servicemix.jbi.jaxp.SourceTransformer;
 
 /**
@@ -53,6 +55,7 @@
  * @version $Revision$
  */
 public class LuceneAuditor extends AbstractAuditor implements AuditorQueryMBean {
+    
 	private AuditorMBean delegatedAuditor;
 	private LuceneIndexer luceneIndexer = new LuceneIndexer();
 
@@ -126,15 +129,16 @@
 		return this.delegatedAuditor.deleteExchanges(ids);
 	}
 
-	public void onMessageExchange(MessageExchange exchange) throws MessagingException {
+    public void exchangeSent(ExchangeEvent event) {
+        MessageExchange exchange = event.getExchange();
 		try {
 			Document doc = createDocument(exchange);
 			this.luceneIndexer.add(doc,exchange.getExchangeId());
-		} catch (IOException e) {
-			throw new MessagingException("Error while adding to lucene",e);
-		}
-		if (delegatedAuditor instanceof AbstractAuditor) {
-			((AbstractAuditor)delegatedAuditor).onMessageExchange(exchange);
+			if (delegatedAuditor instanceof ExchangeListener) {
+			    ((ExchangeListener) delegatedAuditor).exchangeSent(event);
+			}
+		} catch (Exception e) {
+			log.error("Error while adding to lucene", e);
 		}
 	}
 

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java Mon Mar  6 15:19:33 2006
@@ -18,8 +18,7 @@
 import java.io.File;
 import java.util.Calendar;
 import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
+import java.util.EventListener;
 import java.util.MissingResourceException;
 import java.util.logging.Logger;
 
@@ -39,6 +38,7 @@
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import javax.resource.spi.work.WorkManager;
+import javax.swing.event.EventListenerList;
 import javax.transaction.TransactionManager;
 import javax.xml.namespace.QName;
 
@@ -53,6 +53,13 @@
 import org.apache.servicemix.components.util.ComponentSupport;
 import org.apache.servicemix.components.util.PojoLifecycleAdaptor;
 import org.apache.servicemix.components.util.PojoSupport;
+import org.apache.servicemix.jbi.event.ComponentListener;
+import org.apache.servicemix.jbi.event.EndpointListener;
+import org.apache.servicemix.jbi.event.ExchangeEvent;
+import org.apache.servicemix.jbi.event.ExchangeListener;
+import org.apache.servicemix.jbi.event.ServiceAssemblyListener;
+import org.apache.servicemix.jbi.event.ServiceUnitListener;
+import org.apache.servicemix.jbi.framework.AdminCommandsService;
 import org.apache.servicemix.jbi.framework.AutoDeploymentService;
 import org.apache.servicemix.jbi.framework.ComponentContextImpl;
 import org.apache.servicemix.jbi.framework.ComponentNameSpace;
@@ -60,7 +67,6 @@
 import org.apache.servicemix.jbi.framework.InstallationService;
 import org.apache.servicemix.jbi.framework.LocalComponentConnector;
 import org.apache.servicemix.jbi.framework.Registry;
-import org.apache.servicemix.jbi.framework.AdminCommandsService;
 import org.apache.servicemix.jbi.management.BaseLifeCycle;
 import org.apache.servicemix.jbi.management.ManagementContext;
 import org.apache.servicemix.jbi.messaging.MessageExchangeImpl;
@@ -69,7 +75,6 @@
 import org.jencks.factory.WorkManagerFactoryBean;
 import org.w3c.dom.DocumentFragment;
 
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
 import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBoolean;
 
 /**
@@ -104,9 +109,9 @@
     protected boolean isWorkManagerCreated;
     protected boolean autoEnlistInTransaction = false;
     protected boolean persistent = false;
-    protected List listeners = new CopyOnWriteArrayList();
     protected boolean embedded = false;
     protected boolean notifyStatistics = false;
+    protected EventListenerList listeners = new EventListenerList();
     
     /**
      * Default Constructor
@@ -691,9 +696,9 @@
      * @param externalEndpoint
      * @throws JBIException
      */
-    public void registerExternalEndpoint(ComponentContextImpl context, ServiceEndpoint externalEndpoint)
+    public void registerExternalEndpoint(ComponentNameSpace cns, ServiceEndpoint externalEndpoint)
             throws JBIException {
-        registry.registerExternalEndpoint(context, externalEndpoint);
+        registry.registerExternalEndpoint(cns, externalEndpoint);
     }
 
     /**
@@ -701,9 +706,9 @@
      * @param externalEndpoint
      * @throws JBIException
      */
-    public void deregisterExternalEndpoint(ComponentContextImpl context, ServiceEndpoint externalEndpoint)
+    public void deregisterExternalEndpoint(ComponentNameSpace cns, ServiceEndpoint externalEndpoint)
             throws JBIException {
-        registry.deregisterExternalEndpoint(context, externalEndpoint);
+        registry.deregisterExternalEndpoint(cns, externalEndpoint);
     }
 
     /**
@@ -731,7 +736,7 @@
      * @return endpoints that match the interface name
      */
     public ServiceEndpoint[] getEndpoints(ComponentContextImpl context, QName interfaceName) {
-        return registry.getEndpoints(interfaceName);
+        return registry.getEndpointsForInterface(interfaceName);
     }
 
     /**
@@ -1114,19 +1119,52 @@
 		this.persistent = persistent;
 	}
     
-    public void addListener(MessageExchangeListener listener) {
-        listeners.add(listener);
+    public void addListener(EventListener listener) {
+        if (listener instanceof ExchangeListener) {
+            listeners.add(ExchangeListener.class, (ExchangeListener) listener);
+        }
+        if (listener instanceof ComponentListener) {
+            listeners.add(ComponentListener.class, (ComponentListener) listener);
+        }
+        if (listener instanceof ServiceAssemblyListener) {
+            listeners.add(ServiceAssemblyListener.class, (ServiceAssemblyListener) listener);
+        }
+        if (listener instanceof ServiceUnitListener) {
+            listeners.add(ServiceUnitListener.class, (ServiceUnitListener) listener);
+        }
+        if (listener instanceof EndpointListener) {
+            listeners.add(EndpointListener.class, (EndpointListener) listener);
+        }
+    }
+    
+    public void removeListener(EventListener listener) {
+        if (listener instanceof ExchangeListener) {
+            listeners.remove(ExchangeListener.class, (ExchangeListener) listener);
+        }
+        if (listener instanceof ComponentListener) {
+            listeners.remove(ComponentListener.class, (ComponentListener) listener);
+        }
+        if (listener instanceof ServiceAssemblyListener) {
+            listeners.remove(ServiceAssemblyListener.class, (ServiceAssemblyListener) listener);
+        }
+        if (listener instanceof ServiceUnitListener) {
+            listeners.remove(ServiceUnitListener.class, (ServiceUnitListener) listener);
+        }
+        if (listener instanceof EndpointListener) {
+            listeners.remove(EndpointListener.class, (EndpointListener) listener);
+        }
     }
     
-    public void removeListener(MessageExchangeListener listener) {
-        listeners.remove(listener);
+    public Object[] getListeners(Class lc) {
+        return listeners.getListeners(lc);
     }
     
     public void callListeners(MessageExchange exchange) {
-        for (Iterator iter = listeners.iterator(); iter.hasNext();) {
-            MessageExchangeListener listener = (MessageExchangeListener) iter.next();
+        ExchangeListener[] l = (ExchangeListener[]) listeners.getListeners(ExchangeListener.class);
+        ExchangeEvent event = new ExchangeEvent(exchange);
+        for (int i = 0; i < l.length; i++) {
             try {
-                listener.onMessageExchange(exchange);
+                l[i].exchangeSent(event);
             } catch (Exception e) {
                 log.warn("Error calling listener: " + e.getMessage(), e);
             }

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SubscriptionSpec.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SubscriptionSpec.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SubscriptionSpec.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SubscriptionSpec.java Mon Mar  6 15:19:33 2006
@@ -132,7 +132,7 @@
                 }
             }
             if (result && interfaceName != null) {
-                ServiceEndpoint[] ses = registry.getEndpoints(interfaceName);
+                ServiceEndpoint[] ses = registry.getEndpointsForInterface(interfaceName);
                 if (ses != null) {
                     result = false;
                     for (int i = 0; i < ses.length; i++) {

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentAdapter.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentAdapter.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentAdapter.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+public abstract class ComponentAdapter implements ComponentListener {
+
+    public void componentInstalled(ComponentEvent event) {
+    }
+
+    public void componentStarted(ComponentEvent event) {
+    }
+
+    public void componentStopped(ComponentEvent event) {
+    }
+
+    public void componentShutDown(ComponentEvent event) {
+    }
+
+    public void componentUninstalled(ComponentEvent event) {
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentEvent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentEvent.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentEvent.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentEvent.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventObject;
+
+import org.apache.servicemix.jbi.framework.LocalComponentConnector;
+
+public class ComponentEvent extends EventObject {
+
+    private static final long serialVersionUID = -4075242868959881673L;
+    
+    public static final int COMPONENT_INSTALLED = 0;
+    public static final int COMPONENT_STARTED = 1;
+    public static final int COMPONENT_STOPPED = 2;
+    public static final int COMPONENT_SHUTDOWN = 3;
+    public static final int COMPONENT_UNINSTALLED = 4;
+    
+    private LocalComponentConnector lcc;
+    private int type;
+    
+    public ComponentEvent(LocalComponentConnector lcc, int type) {
+        super(lcc);
+        this.lcc = lcc;
+        this.type = type;
+    }
+    
+    public LocalComponentConnector getComponent() {
+        return lcc;
+    }
+    
+    public int getEventType() {
+        return type;
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentListener.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentListener.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentListener.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ComponentListener.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventListener;
+
+public interface ComponentListener extends EventListener {
+    
+    public void componentInstalled(ComponentEvent event);
+
+    public void componentStarted(ComponentEvent event);
+
+    public void componentStopped(ComponentEvent event);
+
+    public void componentShutDown(ComponentEvent event);
+    
+    public void componentUninstalled(ComponentEvent event);
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointAdapter.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointAdapter.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointAdapter.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+public class EndpointAdapter implements EndpointListener {
+
+    public void internalEndpointRegistered(EndpointEvent event) {
+    }
+
+    public void internalEndpointUnregistered(EndpointEvent event) {
+    }
+
+    public void externalEndpointRegistered(EndpointEvent event) {
+    }
+
+    public void externalEndpointUnregistered(EndpointEvent event) {
+    }
+
+    public void linkedEndpointRegistered(EndpointEvent event) {
+    }
+
+    public void linkedEndpointUnregistered(EndpointEvent event) {
+    }
+
+    public void remoteEndpointRegistered(EndpointEvent event) {
+    }
+
+    public void remoteEndpointUnregistered(EndpointEvent event) {
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointEvent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointEvent.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointEvent.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointEvent.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventObject;
+
+import javax.jbi.servicedesc.ServiceEndpoint;
+
+public class EndpointEvent extends EventObject {
+
+    private static final long serialVersionUID = -4480619483039133388L;
+    
+    public static final int INTERNAL_ENDPOINT_REGISTERED = 0;
+    public static final int INTERNAL_ENDPOINT_UNREGISTERED = 1;
+    public static final int EXTERNAL_ENDPOINT_REGISTERED = 2;
+    public static final int EXTERNAL_ENDPOINT_UNREGISTERED = 3;
+    public static final int LINKED_ENDPOINT_REGISTERED = 4;
+    public static final int LINKED_ENDPOINT_UNREGISTERED = 5;
+    public static final int REMOTE_ENDPOINT_REGISTERED = 6;
+    public static final int REMOTE_ENDPOINT_UNREGISTERED = 7;
+    
+    private ServiceEndpoint endpoint;
+    private int type;
+    
+    public EndpointEvent(ServiceEndpoint endpoint, int type) {
+        super(endpoint);
+        this.endpoint = endpoint;
+        this.type = type;
+    }
+    
+    public ServiceEndpoint getEndpoint() {
+        return endpoint;
+    }
+
+    public int getEventType() {
+        return type;
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointListener.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointListener.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointListener.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/EndpointListener.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventListener;
+
+public interface EndpointListener extends EventListener {
+
+    public void internalEndpointRegistered(EndpointEvent event);
+    
+    public void internalEndpointUnregistered(EndpointEvent event);
+    
+    public void externalEndpointRegistered(EndpointEvent event);
+    
+    public void externalEndpointUnregistered(EndpointEvent event);
+    
+    public void linkedEndpointRegistered(EndpointEvent event);
+    
+    public void linkedEndpointUnregistered(EndpointEvent event);
+    
+    public void remoteEndpointRegistered(EndpointEvent event);
+    
+    public void remoteEndpointUnregistered(EndpointEvent event);
+    
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeEvent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeEvent.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeEvent.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeEvent.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventObject;
+
+import javax.jbi.messaging.MessageExchange;
+
+public class ExchangeEvent extends EventObject {
+
+    private static final long serialVersionUID = -8349785806912334977L;
+
+    public ExchangeEvent(MessageExchange exchange) {
+        super(exchange);
+    }
+    
+    public MessageExchange getExchange() {
+        return (MessageExchange) getSource();
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeListener.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeListener.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeListener.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ExchangeListener.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventListener;
+
+public interface ExchangeListener extends EventListener {
+
+    public void exchangeSent(ExchangeEvent event);
+    
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyAdapter.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyAdapter.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyAdapter.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+public class ServiceAssemblyAdapter implements ServiceAssemblyListener {
+
+    public void assemblyDeployed(ServiceAssemblyEvent event) {
+    }
+
+    public void assemblyStarted(ServiceAssemblyEvent event) {
+    }
+
+    public void assemblyStopped(ServiceAssemblyEvent event) {
+    }
+
+    public void assemblyShutDown(ServiceAssemblyEvent event) {
+    }
+
+    public void assemblyUndeployed(ServiceAssemblyEvent event) {
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyEvent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyEvent.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyEvent.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyEvent.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventObject;
+
+import org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle;
+
+public class ServiceAssemblyEvent extends EventObject {
+
+    private static final long serialVersionUID = 8441830155548563543L;
+    
+    public static final int ASSEMBLY_DEPLOYED = 0;
+    public static final int ASSEMBLY_STARTED = 1;
+    public static final int ASSEMBLY_STOPPED = 2;
+    public static final int ASSEMBLY_SHUTDOWN = 3;
+    public static final int ASSEMBLY_UNDEPLOYED = 4;
+    
+    private ServiceAssemblyLifeCycle assembly;
+    private int type;
+    
+    public ServiceAssemblyEvent(ServiceAssemblyLifeCycle assembly, int type) {
+        super(assembly);
+        this.assembly = assembly;
+        this.type = type;
+    }
+    
+    public ServiceAssemblyLifeCycle getAssembly() {
+        return assembly;
+    }
+
+    public int getEventType() {
+        return type;
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyListener.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyListener.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyListener.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceAssemblyListener.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventListener;
+
+public interface ServiceAssemblyListener extends EventListener {
+
+    public void assemblyDeployed(ServiceAssemblyEvent event);
+
+    public void assemblyStarted(ServiceAssemblyEvent event);
+
+    public void assemblyStopped(ServiceAssemblyEvent event);
+
+    public void assemblyShutDown(ServiceAssemblyEvent event);
+
+    public void assemblyUndeployed(ServiceAssemblyEvent event);
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitAdapter.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitAdapter.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitAdapter.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+public class ServiceUnitAdapter implements ServiceUnitListener {
+
+    public void unitDeployed(ServiceUnitEvent event) {
+    }
+
+    public void unitStarted(ServiceUnitEvent event) {
+    }
+
+    public void unitStopped(ServiceUnitEvent event) {
+    }
+
+    public void unitShutDown(ServiceUnitEvent event) {
+    }
+
+    public void unitUndeployed(ServiceUnitEvent event) {
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitEvent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitEvent.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitEvent.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitEvent.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventObject;
+
+import org.apache.servicemix.jbi.framework.ServiceUnitLifeCycle;
+
+public class ServiceUnitEvent extends EventObject {
+
+    private static final long serialVersionUID = 7825652001472392923L;
+    
+    public static final int UNIT_DEPLOYED = 0;
+    public static final int UNIT_STARTED = 1;
+    public static final int UNIT_STOPPED = 2;
+    public static final int UNIT_SHUTDOWN = 3;
+    public static final int UNIT_UNDEPLOYED = 4;
+    
+    private ServiceUnitLifeCycle unit;
+    private int type;
+    
+    public ServiceUnitEvent(ServiceUnitLifeCycle unit, int type) {
+        super(unit);
+        this.unit = unit;
+        this.type = type;
+    }
+    
+    public ServiceUnitLifeCycle getServiceUnit() {
+        return unit;
+    }
+
+    public int getEventType() {
+        return type;
+    }
+
+}

Added: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitListener.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitListener.java?rev=383702&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitListener.java (added)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/event/ServiceUnitListener.java Mon Mar  6 15:19:33 2006
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jbi.event;
+
+import java.util.EventListener;
+
+public interface ServiceUnitListener extends EventListener {
+
+    public void unitDeployed(ServiceUnitEvent event);
+
+    public void unitStarted(ServiceUnitEvent event);
+
+    public void unitStopped(ServiceUnitEvent event);
+
+    public void unitShutDown(ServiceUnitEvent event);
+
+    public void unitUndeployed(ServiceUnitEvent event);
+
+}

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentConnector.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentConnector.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentConnector.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentConnector.java Mon Mar  6 15:19:33 2006
@@ -15,9 +15,6 @@
  */
 package org.apache.servicemix.jbi.framework;
 
-import javax.jbi.servicedesc.ServiceEndpoint;
-
-import java.util.Set;
 
 /**
  * ComponentConnector is used internally for message routing
@@ -89,61 +86,6 @@
         return packet.getComponentNameSpace();
     }
 
-   
-    /**
-     * Get the Set of activated endpoints
-     * 
-     * @return the activated endpoint Set
-     */
-    public Set getActiveEndpoints() {
-        return packet.getActiveEndpoints();
-    }
-
-    /**
-     * Add an activated endpoint
-     * 
-     * @param endpoint
-     */
-    public void addActiveEndpoint(ServiceEndpoint endpoint) {
-        throw new RuntimeException("Not a LocalComponentConnector");
-    }
-
-    /**
-     * remove an activated endpoint
-     * 
-     * @param endpoint
-     */
-    public void removeActiveEndpoint(ServiceEndpoint endpoint) {
-        throw new RuntimeException("Not a LocalComponentConnector");
-    }
-
-    /**
-     * Add an external activated endpoint
-     * 
-     * @param endpoint
-     */
-    public void addExternalActiveEndpoint(ServiceEndpoint endpoint) {
-        throw new RuntimeException("Not a LocalComponentConnector");
-    }
-
-    /**
-     * remove an external activated endpoint
-     * 
-     * @param endpoint
-     */
-    public void removeExternalActiveEndpoint(ServiceEndpoint endpoint) {
-        throw new RuntimeException("Not a LocalComponentConnector");
-    }
-
-    /**
-     * Get the Set of external activated endpoints
-     * 
-     * @return the activated endpoint Set
-     */
-    public Set getExternalActiveEndpoints() {
-        return packet.getExternalActiveEndpoints();
-    }
-    
     /**
      * @return Returns the binding.
      */

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentContextImpl.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentContextImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentContextImpl.java Mon Mar  6 15:19:33 2006
@@ -318,7 +318,7 @@
         if (externalEndpoint == null) {
             throw new IllegalArgumentException("externalEndpoint should be non null");
         }
-        container.registerExternalEndpoint(this, externalEndpoint);
+        container.getRegistry().registerExternalEndpoint(getComponentNameSpace(), externalEndpoint);
     }
 
     /**
@@ -331,7 +331,7 @@
      */
     public void deregisterExternalEndpoint(ServiceEndpoint externalEndpoint) throws JBIException {
         checkActivated();
-        container.deregisterExternalEndpoint(this, externalEndpoint);
+        container.getRegistry().deregisterExternalEndpoint(getComponentNameSpace(), externalEndpoint);
     }
 
     /**
@@ -348,7 +348,7 @@
      */
     public ServiceEndpoint resolveEndpointReference(DocumentFragment epr) {
         checkActivated();
-        return container.resolveEndpointReference(this, epr);
+        return container.getRegistry().resolveEndpointReference(epr);
     }
 
     /**
@@ -360,7 +360,7 @@
      */
     public ServiceEndpoint getEndpoint(QName service, String name) {
         checkActivated();
-        return container.getEndpoint(this, service, name);
+        return container.getRegistry().getEndpoint(service, name);
     }
 
     /**
@@ -388,7 +388,7 @@
      */
     public ServiceEndpoint[] getEndpoints(QName interfaceName) {
         checkActivated();
-        return container.getEndpoints(this, interfaceName);
+        return container.getRegistry().getEndpointsForInterface(interfaceName);
     }
 
     /**
@@ -400,7 +400,7 @@
      */
     public ServiceEndpoint[] getEndpointsForService(QName serviceName) {
         checkActivated();
-        return container.getEndpointsForService(this, serviceName);
+        return container.getRegistry().getEndpointsForService(serviceName);
     }
 
     /**
@@ -413,7 +413,7 @@
      */
     public ServiceEndpoint[] getExternalEndpoints(QName interfaceName) {
         checkActivated();
-        return container.getExternalEndpoints(this, interfaceName);
+        return container.getRegistry().getExternalEndpoints(interfaceName);
     }
 
     /**
@@ -424,7 +424,7 @@
      */
     public ServiceEndpoint[] getExternalEndpointsForService(QName serviceName) {
         checkActivated();
-        return container.getExternalEndpointsForService(this, serviceName);
+        return container.getRegistry().getExternalEndpointsForService(serviceName);
     }
 
     /**

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java Mon Mar  6 15:19:33 2006
@@ -25,6 +25,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.servicemix.jbi.container.JBIContainer;
+import org.apache.servicemix.jbi.event.ComponentEvent;
+import org.apache.servicemix.jbi.event.ComponentListener;
 import org.apache.servicemix.jbi.management.AttributeInfoHelper;
 import org.apache.servicemix.jbi.management.BaseLifeCycle;
 import org.apache.servicemix.jbi.management.OperationInfoHelper;
@@ -182,6 +184,7 @@
             initServiceAssemblies();
             startServiceAssemblies();
         }
+        fireEvent(ComponentEvent.COMPONENT_STARTED);
     }
 
     /**
@@ -196,6 +199,7 @@
 	        connector.getLifeCycle().stop();
 	        super.stop();
         }
+        fireEvent(ComponentEvent.COMPONENT_STOPPED);
     }
 
     /**
@@ -216,6 +220,7 @@
             }
         }
         super.shutDown();
+        fireEvent(ComponentEvent.COMPONENT_SHUTDOWN);
     }
     
     
@@ -362,7 +367,7 @@
             ServiceAssemblyLifeCycle sa = registry.getServiceAssembly(sas[i]);
             if (sa.isStarted()) {
                 try {
-                    sa.stop(false);
+                    sa.stop(false, false);
                     // TODO: add sa to a list of pending sa 
                 } catch (Exception e) {
                     log.error("Error stopping service assembly " + sas[i]);
@@ -387,6 +392,25 @@
                 }
             }
         }
+    }
+    
+    protected void fireEvent(int type) {
+        ComponentEvent event = new ComponentEvent(connector, type);
+        ComponentListener[] listeners = (ComponentListener[]) connector.getContainer().getListeners(ComponentListener.class);
+        for (int i = 0; i < listeners.length; i++) {
+            switch (type) {
+            case ComponentEvent.COMPONENT_STARTED:
+                listeners[i].componentStarted(event);
+                break;
+            case ComponentEvent.COMPONENT_STOPPED:
+                listeners[i].componentStopped(event);
+                break;
+            case ComponentEvent.COMPONENT_SHUTDOWN:
+                listeners[i].componentShutDown(event);
+                break;
+            }
+        }
+        
     }
 
 }

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacket.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacket.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacket.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentPacket.java Mon Mar  6 15:19:33 2006
@@ -15,14 +15,12 @@
  */
 package org.apache.servicemix.jbi.framework;
 
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArraySet;
+import java.io.Serializable;
+import java.util.Set;
 
 import org.apache.servicemix.jbi.container.SubscriptionSpec;
 
-import javax.jbi.servicedesc.ServiceEndpoint;
-
-import java.io.Serializable;
-import java.util.Set;
+import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArraySet;
 
 /**
  * ComponentPacket - potentially passed around clusters
@@ -38,8 +36,6 @@
     
     private ComponentNameSpace componentName;
     private String description = "POJO Component";
-    private Set endpoints = new CopyOnWriteArraySet();
-    private Set externalEndpoints = new CopyOnWriteArraySet();
     private Set subscriptionSpecs = new CopyOnWriteArraySet();
     private boolean binding;
     private boolean service;
@@ -73,60 +69,9 @@
         this.componentName = componentName;
     }
     
-    
-    /**
-     * Add an activated endpoint
-     * @param endpoint
-     */
-    public void addActiveEndpoint(ServiceEndpoint endpoint) {
-        endpoints.add(endpoint);
-    }
-    
-    /**
-     * remove an activated endpoint
-     * @param endpoint
-     */
-    public void removeActiveEndpoint(ServiceEndpoint endpoint) {
-        endpoints.remove(endpoint);
-    }
-    
-    /**
-     * Get the Set of activated endpoints
-     * @return the activated endpoint Set
-     */
-    public Set getActiveEndpoints() {
-        return endpoints;
-    }
-    
-    /**
-     * Add an external activated endpoint
-     * @param endpoint
-     */
-    public void addExternalActiveEndpoint(ServiceEndpoint endpoint) {
-        externalEndpoints.add(endpoint);
-    }
-    
-    /**
-     * remove an external activated endpoint
-     * @param endpoint
-     */
-    public void removeExternalActiveEndpoint(ServiceEndpoint endpoint) {
-        externalEndpoints.remove(endpoint);
-    }
-    
-    /**
-     * Get the Set of external activated endpoints
-     * @return the activated endpoint Set
-     */
-    public Set getExternalActiveEndpoints() {
-        return externalEndpoints;
-    }
-    
-    
     public void addSubscriptionSpec(SubscriptionSpec ss) {
         subscriptionSpecs.add(ss);
     }
-    
     
     public void removeSubscriptionSpec(SubscriptionSpec ss) {
         subscriptionSpecs.remove(ss);

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentRegistry.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentRegistry.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentRegistry.java Mon Mar  6 15:19:33 2006
@@ -18,7 +18,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.Map;
 import java.util.Set;
 
@@ -39,7 +38,6 @@
     private Map componentByNameMap = new ConcurrentHashMap();
     private Map idMap = new ConcurrentHashMap();
     private Map localIdMap = new ConcurrentHashMap();
-    private Map loadBalancedComponentMap = new ConcurrentHashMap();
     private boolean runningStateInitialized = false;
     private Registry registry;
     
@@ -69,7 +67,6 @@
             localIdMap.put(name, result);
             addComponentConnector(result);
             componentByNameMap.put(name, component);
-            addToLoadBalancedMap(name);
         }
         return result;
     }
@@ -128,7 +125,6 @@
             removeComponentConnector(result.getComponentNameSpace());
             localIdMap.remove(result.getComponentNameSpace());
             componentByNameMap.remove(result.getComponentNameSpace());
-            removeFromLoadBalancedMap(result.getComponentNameSpace());
         }
         return result;
     }
@@ -168,15 +164,6 @@
     }
     
     /**
-     * For distributed containers, get a ComponentConnector by round-robin
-     * @param id
-     * @return the ComponentConnector or null
-     */
-    public ComponentConnector getLoadBalancedComponentConnector(ComponentNameSpace id){
-        return getComponentConnector(getLoadBalancedComponentName(id));
-    }
-    
-    /**
      * Add a ComponentConnector
      * @param connector
      */
@@ -254,38 +241,6 @@
      */
     public void setContainerName(String containerName) {
         this.containerName = containerName;
-    }
-    
-    private synchronized void addToLoadBalancedMap(ComponentNameSpace cns){
-        String key = cns.getName();
-        LinkedList list = (LinkedList)loadBalancedComponentMap.get(key);
-        if (list == null){
-            list = new LinkedList();
-        }
-        list.add(cns);
-        
-    }
-    
-    private synchronized void removeFromLoadBalancedMap(ComponentNameSpace cns){
-        String key = cns.getName();
-        LinkedList list = (LinkedList)loadBalancedComponentMap.get(key);
-        if (list != null){
-            list.remove(cns);
-            if (list.isEmpty()){
-                loadBalancedComponentMap.remove(key);
-            }
-        }
-    }
-    
-    private synchronized ComponentNameSpace getLoadBalancedComponentName(ComponentNameSpace cns){
-        ComponentNameSpace result = null;
-        String key = cns.getName();
-        LinkedList list = (LinkedList)loadBalancedComponentMap.get(key);
-        if (list != null && !list.isEmpty()){
-            result = (ComponentNameSpace) list.removeFirst();
-            list.addLast(result);
-        }
-        return result;
     }
     
     private boolean setInitialRunningStateFromStart() throws JBIException{

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/DeploymentService.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/DeploymentService.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/DeploymentService.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/DeploymentService.java Mon Mar  6 15:19:33 2006
@@ -382,7 +382,7 @@
     public String stop(String serviceAssemblyName) throws Exception {
         try {
             ServiceAssemblyLifeCycle sa = registry.getServiceAssembly(serviceAssemblyName);
-            return sa.stop(true);
+            return sa.stop(true, false);
         } catch (Exception e) {
             log.info("Error in stop", e);
             throw e;
@@ -539,7 +539,8 @@
         else {
             // Register SA
             String[] deployedSUs = (String[]) suKeys.toArray(new String[suKeys.size()]);
-            registry.registerServiceAssembly(sa, deployedSUs);
+            ServiceAssemblyLifeCycle salc = registry.registerServiceAssembly(sa, deployedSUs);
+            salc.writeRunningState();
             // Build result string
             if (nbFailures > 0) {
                 return ManagementSupport.createWarningMessage("deploy", "Failed to deploy some service units", componentResults);

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Endpoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Endpoint.java?rev=383702&r1=383701&r2=383702&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Endpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Endpoint.java Mon Mar  6 15:19:33 2006
@@ -27,16 +27,19 @@
 import org.apache.servicemix.jbi.management.MBeanInfoProvider;
 import org.apache.servicemix.jbi.management.OperationInfoHelper;
 import org.apache.servicemix.jbi.servicedesc.AbstractServiceEndpoint;
+import org.apache.servicemix.jbi.servicedesc.ExternalEndpoint;
+import org.apache.servicemix.jbi.servicedesc.InternalEndpoint;
+import org.apache.servicemix.jbi.servicedesc.LinkedEndpoint;
 import org.apache.servicemix.jbi.util.DOMUtil;
 
 public class Endpoint implements EndpointMBean, MBeanInfoProvider {
 
     private AbstractServiceEndpoint endpoint;
-    private EndpointRegistry endpointRegistry;
+    private Registry registry;
     
-    public Endpoint(AbstractServiceEndpoint endpoint, EndpointRegistry endpointRegistry) {
+    public Endpoint(AbstractServiceEndpoint endpoint, Registry registry) {
         this.endpoint = endpoint;
-        this.endpointRegistry = endpointRegistry;
+        this.registry = registry;
     }
 
     public String getEndpointName() {
@@ -61,14 +64,18 @@
     
     public String getWSDL() {
         try {
-            return DOMUtil.asXML(endpointRegistry.getEndpointDescriptor(endpoint));
+            return DOMUtil.asXML(registry.getEndpointDescriptor(endpoint));
         } catch (Exception e) {
             return null;
         }
     }
 
     public String getComponentName() {
-        return endpoint.getComponentNameSpace().getName();
+        if (endpoint.getComponentNameSpace() != null) {
+            return endpoint.getComponentNameSpace().getName();
+        } else {
+            return null;
+        }
     }
 
     public MBeanAttributeInfo[] getAttributeInfos() throws JMException {
@@ -92,7 +99,7 @@
     }
 
     public String getName() {
-        return endpoint.getServiceName().toString() + endpoint.getEndpointName();
+        return endpoint.getServiceName() + endpoint.getEndpointName();
     }
 
     public String getType() {
@@ -100,7 +107,13 @@
     }
 
     public String getSubType() {
-        // TODO: return internal, external, linked ?
+        if (endpoint instanceof InternalEndpoint) {
+            return "Internal";
+        } else if (endpoint instanceof LinkedEndpoint) {
+            return "Linked";
+        } else if (endpoint instanceof ExternalEndpoint) {
+            return "External";
+        }
         return null;
     }
 
@@ -109,6 +122,10 @@
     }
 
     public void setPropertyChangeListener(PropertyChangeListener l) {
+    }
+
+    protected AbstractServiceEndpoint getEndpoint() {
+        return endpoint;
     }
 
 }