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 2008/09/16 14:49:14 UTC
svn commit: r695854 - in
/servicemix/components/engines/servicemix-wsn2005/trunk/src:
main/java/org/apache/servicemix/wsn/client/
main/java/org/apache/servicemix/wsn/component/
main/java/org/apache/servicemix/wsn/spring/
test/java/org/apache/servicemix...
Author: gnodet
Date: Tue Sep 16 05:49:14 2008
New Revision: 695854
URL: http://svn.apache.org/viewvc?rev=695854&view=rev
Log:
SM-1576: Change endpoints lifecycle to use activate / start / stop / deactivate
Modified:
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNDeployableEndpoint.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNServiceUnit.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java
servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNSpringComponentTest.java
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java Tue Sep 16 05:49:14 2008
@@ -155,7 +155,10 @@
if (transformer == null) {
transformer = new SourceTransformer();
}
- throw new JBIException(transformer.contentToString(exchange.getFault()));
+ String fault = transformer.contentToString(exchange.getFault());
+ exchange.setStatus(ExchangeStatus.DONE);
+ getContext().getDeliveryChannel().send(exchange);
+ throw new JBIException(fault);
} else {
NormalizedMessage out = exchange.getOutMessage();
Source source = out.getContent();
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java Tue Sep 16 05:49:14 2008
@@ -44,6 +44,7 @@
import org.apache.servicemix.common.Endpoint;
import org.apache.servicemix.common.EndpointSupport;
import org.apache.servicemix.common.ServiceUnit;
+import org.apache.servicemix.common.DefaultServiceUnit;
import org.apache.servicemix.common.tools.wsdl.WSDLFlattener;
import org.apache.servicemix.wsn.EndpointManager;
import org.apache.servicemix.wsn.EndpointRegistrationException;
@@ -76,8 +77,7 @@
public WSNComponent() {
configuration = new WSNConfiguration();
- serviceUnit = new ServiceUnit();
- serviceUnit.setComponent(component);
+ serviceUnit = new DefaultServiceUnit(this);
}
public JbiNotificationBroker getNotificationBroker() {
@@ -287,12 +287,17 @@
}
}
- public void unregister(Object endpoint) throws EndpointRegistrationException {
- try {
- WSNComponent.this.removeEndpoint((Endpoint) endpoint);
- } catch (Exception e) {
- throw new EndpointRegistrationException("Unable to activate endpoint", e);
- }
+ public void unregister(final Object endpoint) throws EndpointRegistrationException {
+ WSNComponent.this.getExecutor().execute(new Runnable() {
+ public void run() {
+ try {
+ Endpoint ep = (Endpoint) endpoint;
+ WSNComponent.this.removeEndpoint(ep);
+ } catch (Exception e) {
+ logger.error("Unable to deactivate endpoint", e);
+ }
+ }
+ });
}
}
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNDeployableEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNDeployableEndpoint.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNDeployableEndpoint.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNDeployableEndpoint.java Tue Sep 16 05:49:14 2008
@@ -16,14 +16,15 @@
*/
package org.apache.servicemix.wsn.component;
-import org.apache.servicemix.common.Endpoint;
-import org.apache.servicemix.common.ExchangeProcessor;
+import javax.jbi.messaging.MessageExchange;
+
+import org.apache.servicemix.common.endpoints.AbstractEndpoint;
import org.apache.servicemix.wsn.EndpointManager;
import org.apache.servicemix.wsn.EndpointRegistrationException;
import org.apache.servicemix.wsn.jms.JmsCreatePullPoint;
import org.apache.servicemix.wsn.jbi.JbiNotificationBroker;
-public abstract class WSNDeployableEndpoint extends Endpoint implements EndpointManager {
+public abstract class WSNDeployableEndpoint extends AbstractEndpoint implements EndpointManager {
public JbiNotificationBroker getNotificationBroker() {
return ((WSNComponent) serviceUnit.getComponent()).getNotificationBroker();
@@ -33,9 +34,7 @@
return ((WSNComponent) serviceUnit.getComponent()).getCreatePullPoint();
}
- @Override
- public ExchangeProcessor getProcessor() {
- return null;
+ public void process(MessageExchange exchange) throws Exception {
}
public Object register(String address, Object service) throws EndpointRegistrationException {
@@ -45,4 +44,9 @@
public void unregister(Object endpoint) throws EndpointRegistrationException {
}
+ public void start() throws Exception {
+ }
+
+ public void stop() throws Exception {
+ }
}
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java Tue Sep 16 05:49:14 2008
@@ -49,14 +49,13 @@
import org.w3c.dom.Document;
-import org.apache.servicemix.common.ExchangeProcessor;
import org.apache.servicemix.common.endpoints.ProviderEndpoint;
import org.apache.servicemix.common.util.URIResolver;
import org.apache.servicemix.wsn.ComponentContextAware;
import org.apache.servicemix.wsn.jbi.JbiWrapperHelper;
import org.oasis_open.docs.wsrf.bf_2.BaseFaultType;
-public class WSNEndpoint extends ProviderEndpoint implements ExchangeProcessor {
+public class WSNEndpoint extends ProviderEndpoint {
protected String address;
@@ -75,11 +74,7 @@
}
@Override
- public void start() throws Exception {
- if (pojo instanceof ComponentContextAware) {
- ((ComponentContextAware) pojo).setContext(getContext());
- }
- logger = this.serviceUnit.getComponent().getLogger();
+ public void activate() throws Exception {
WebService ws = getWebServiceAnnotation(pojo.getClass());
if (ws == null) {
throw new IllegalStateException("Unable to find WebService annotation");
@@ -99,7 +94,10 @@
if (ws != null) {
interfaceName = new QName(ws.targetNamespace(), ws.name());
}
- super.start();
+ super.activate();
+ if (pojo instanceof ComponentContextAware) {
+ ((ComponentContextAware) pojo).setContext(getContext());
+ }
}
public static JAXBContext createJAXBContext(Class interfaceClass) throws JAXBException {
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNServiceUnit.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNServiceUnit.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNServiceUnit.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/component/WSNServiceUnit.java Tue Sep 16 05:49:14 2008
@@ -24,44 +24,89 @@
import org.apache.servicemix.common.ServiceUnit;
import org.apache.servicemix.common.Endpoint;
+import org.apache.servicemix.common.DefaultServiceUnit;
-public class WSNServiceUnit extends ServiceUnit {
+public class WSNServiceUnit extends DefaultServiceUnit {
- public void start() throws Exception {
- List<Endpoint> activated = new ArrayList<Endpoint>();
- try {
- for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
- Endpoint endpoint = (Endpoint) iter.next();
- if (endpoint instanceof WSNPullPointEndpoint) {
- endpoint.activate();
- activated.add(endpoint);
+ @Override
+ public void init() throws Exception {
+ if (this.status == LifeCycleMBean.SHUTDOWN) {
+ List<Endpoint> activated = new ArrayList<Endpoint>();
+ try {
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNPullPointEndpoint) {
+ endpoint.activate();
+ activated.add(endpoint);
+ }
}
- }
- for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
- Endpoint endpoint = (Endpoint) iter.next();
- if (endpoint instanceof WSNSubscriptionEndpoint) {
- endpoint.activate();
- activated.add(endpoint);
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNSubscriptionEndpoint) {
+ endpoint.activate();
+ activated.add(endpoint);
+ }
}
- }
- for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
- Endpoint endpoint = (Endpoint) iter.next();
- if (endpoint instanceof WSNPublisherEndpoint) {
- endpoint.activate();
- activated.add(endpoint);
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNPublisherEndpoint) {
+ endpoint.activate();
+ activated.add(endpoint);
+ }
}
+ this.status = LifeCycleMBean.STOPPED;
+ } catch (Exception e) {
+ // Deactivate activated endpoints
+ for (Endpoint endpoint : activated) {
+ try {
+ endpoint.deactivate();
+ } catch (Exception e2) {
+ // do nothing
+ }
+ }
+ throw e;
}
- this.status = LifeCycleMBean.STARTED;
- } catch (Exception e) {
- // Deactivate activated endpoints
- for (Endpoint endpoint : activated) {
- try {
- endpoint.deactivate();
- } catch (Exception e2) {
- // do nothing
+ }
+ }
+
+ @Override
+ public void start() throws Exception {
+ if (this.status == LifeCycleMBean.STOPPED) {
+ List<Endpoint> started = new ArrayList<Endpoint>();
+ try {
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNPullPointEndpoint) {
+ endpoint.start();
+ started.add(endpoint);
+ }
+ }
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNSubscriptionEndpoint) {
+ endpoint.start();
+ started.add(endpoint);
+ }
+ }
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNPublisherEndpoint) {
+ endpoint.start();
+ started.add(endpoint);
+ }
+ }
+ this.status = LifeCycleMBean.STARTED;
+ } catch (Exception e) {
+ // Deactivate activated endpoints
+ for (Endpoint endpoint : started) {
+ try {
+ endpoint.stop();
+ } catch (Exception e2) {
+ // do nothing
+ }
}
+ throw e;
}
- throw e;
}
}
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java Tue Sep 16 05:49:14 2008
@@ -113,6 +113,7 @@
* @see javax.jbi.management.LifeCycleMBean#start()
*/
public void start() throws JBIException {
+ // TODO: do we really need to that in another thread ?
new Thread() {
public void run() {
try {
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java Tue Sep 16 05:49:14 2008
@@ -115,7 +115,7 @@
assertEquals(1, ses.length);
}
- public void testInvalidSubscribription() throws Exception {
+ public void testInvalidSubscription() throws Exception {
try {
wsnBroker.subscribe(null, null, null);
fail("Expected an exception");
@@ -318,7 +318,7 @@
File path = new File(new URI(url.toString()));
path = path.getParentFile();
wsnComponent.getServiceUnitManager().deploy("pullpoint", path.getAbsolutePath());
-
+ wsnComponent.getServiceUnitManager().init("pullpoint", path.getAbsolutePath());
wsnComponent.getServiceUnitManager().start("pullpoint");
wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
@@ -342,6 +342,7 @@
consumer.setComponent(receiver);
jbi.activateComponent(consumer);
+ wsnComponent.getServiceUnitManager().init("subscription", path.getAbsolutePath());
wsnComponent.getServiceUnitManager().start("subscription");
wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
@@ -351,12 +352,14 @@
receiver.getMessageList().flushMessages();
wsnComponent.getServiceUnitManager().stop("subscription");
+ wsnComponent.getServiceUnitManager().shutDown("subscription");
wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
// Wait for notification
Thread.sleep(500);
assertEquals(0, receiver.getMessageList().flushMessages().size());
+ wsnComponent.getServiceUnitManager().init("subscription", path.getAbsolutePath());
wsnComponent.getServiceUnitManager().start("subscription");
wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
Modified: servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNSpringComponentTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNSpringComponentTest.java?rev=695854&r1=695853&r2=695854&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNSpringComponentTest.java (original)
+++ servicemix/components/engines/servicemix-wsn2005/trunk/src/test/java/org/apache/servicemix/wsn/component/WSNSpringComponentTest.java Tue Sep 16 05:49:14 2008
@@ -28,6 +28,9 @@
}
public void test() throws Exception {
+ // Wait for the publisher to be registered
+ Thread.sleep(1000);
+
Receiver receiver = (Receiver) jbi.getBean("receiver");
receiver.getMessageList().assertMessagesReceived(1);
}