You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by js...@apache.org on 2006/10/08 18:39:50 UTC

svn commit: r454170 - in /incubator/servicemix/trunk/servicemix-bean/src: main/java/org/apache/servicemix/bean/ test/java/org/apache/servicemix/bean/ test/java/org/apache/servicemix/bean/beans/ test/resources/

Author: jstrachan
Date: Sun Oct  8 09:39:50 2006
New Revision: 454170

URL: http://svn.apache.org/viewvc?view=rev&rev=454170
Log:
added support for ExchangeProcessor

Added:
    incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/ExchangeProcessorBeanEndpointTest.java
    incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/beans/ExchangeProcessorBean.java
Modified:
    incubator/servicemix/trunk/servicemix-bean/src/main/java/org/apache/servicemix/bean/BeanEndpoint.java
    incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/PlainBeanEndpointTest.java
    incubator/servicemix/trunk/servicemix-bean/src/test/resources/spring-no-endpoints.xml

Modified: incubator/servicemix/trunk/servicemix-bean/src/main/java/org/apache/servicemix/bean/BeanEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-bean/src/main/java/org/apache/servicemix/bean/BeanEndpoint.java?view=diff&rev=454170&r1=454169&r2=454170
==============================================================================
--- incubator/servicemix/trunk/servicemix-bean/src/main/java/org/apache/servicemix/bean/BeanEndpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-bean/src/main/java/org/apache/servicemix/bean/BeanEndpoint.java Sun Oct  8 09:39:50 2006
@@ -19,6 +19,7 @@
 import org.aopalliance.intercept.MethodInvocation;
 import org.apache.servicemix.MessageExchangeListener;
 import org.apache.servicemix.common.ProviderEndpoint;
+import org.apache.servicemix.common.ExchangeProcessor;
 import org.apache.servicemix.bean.support.BeanInfo;
 import org.apache.servicemix.bean.support.DefaultMethodInvocationStrategy;
 import org.apache.servicemix.bean.support.MethodInvocationStrategy;
@@ -62,15 +63,26 @@
             throw new IllegalArgumentException("No 'methodInvocationStrategy' property set");
         }
 
+        injectBean(getBean());
+
         // TODO invoke the bean's lifecycle methods for @PostConstruct
         // could use Spring to do this?
-        injectBean(getBean());
+
+        if (getBean() instanceof ExchangeProcessor) {
+            ExchangeProcessor processor = (ExchangeProcessor) getBean();
+            processor.start();
+        }
     }
 
 
     public void stop() throws Exception {
         super.stop();
 
+        if (getBean() instanceof ExchangeProcessor) {
+            ExchangeProcessor processor = (ExchangeProcessor) getBean();
+            processor.stop();
+        }
+
         // TODO invoke the beans destroy methods for @PreDestroy
 
         // lets allow garbage collection to take place
@@ -166,6 +178,10 @@
         if (pojo instanceof MessageExchangeListener) {
             MessageExchangeListener listener = (MessageExchangeListener) pojo;
             listener.onMessageExchange(exchange);
+        }
+        else if (pojo instanceof ExchangeProcessor) {
+            ExchangeProcessor processor = (ExchangeProcessor) pojo;
+            processor.process(exchange);
         }
         else {
             MethodInvocation invocation = getMethodInvocationStrategy().createInvocation(pojo, getBeanInfo(), exchange, this);

Added: incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/ExchangeProcessorBeanEndpointTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/ExchangeProcessorBeanEndpointTest.java?view=auto&rev=454170
==============================================================================
--- incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/ExchangeProcessorBeanEndpointTest.java (added)
+++ incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/ExchangeProcessorBeanEndpointTest.java Sun Oct  8 09:39:50 2006
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.bean;
+
+import org.apache.servicemix.bean.beans.ExchangeProcessorBean;
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.jbi.resolver.URIResolver;
+import org.apache.servicemix.tck.SpringTestSupport;
+import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.w3c.dom.DocumentFragment;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.MessageExchange;
+import javax.jbi.servicedesc.ServiceEndpoint;
+
+public class ExchangeProcessorBeanEndpointTest extends SpringTestSupport {
+
+    public void testSendingToDynamicEndpointForExchangeProcessorBeanWithFooOperation() throws Exception {
+        // now lets make a request on this endpoint
+        DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
+
+        DocumentFragment epr = URIResolver.createWSAEPR("bean:exchangeProcessorBean");
+        ServiceEndpoint se = client.getContext().resolveEndpointReference(epr);
+        assertNotNull("We should find a service endpoint!", se);
+
+        InOnly exchange = client.createInOnlyExchange();
+        exchange.setEndpoint(se);
+        exchange.getInMessage().setContent(new StringSource("<hello>world</hello>"));
+        client.sendSync(exchange);
+
+        assertExchangeWorked(exchange);
+
+        ExchangeProcessorBean bean = (ExchangeProcessorBean) getBean("exchangeProcessorBean");
+        MessageExchange answer = bean.getLastExchange();
+
+        log.info("Bean's process() method has been invoked: " + answer);
+
+        assertNotNull("Bean's process() method should bave been invoked", answer);
+    }
+
+    protected void assertExchangeWorked(MessageExchange me) throws Exception {
+        if (me.getStatus() == ExchangeStatus.ERROR) {
+            if (me.getError() != null) {
+                throw me.getError();
+            }
+            else {
+                fail("Received ERROR status");
+            }
+        }
+        else if (me.getFault() != null) {
+            fail("Received fault: " + new SourceTransformer().toString(me.getFault().getContent()));
+        }
+    }
+
+    protected AbstractXmlApplicationContext createBeanFactory() {
+        return new ClassPathXmlApplicationContext("spring-no-endpoints.xml");
+    }
+
+}

Modified: incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/PlainBeanEndpointTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/PlainBeanEndpointTest.java?view=diff&rev=454170&r1=454169&r2=454170
==============================================================================
--- incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/PlainBeanEndpointTest.java (original)
+++ incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/PlainBeanEndpointTest.java Sun Oct  8 09:39:50 2006
@@ -35,7 +35,7 @@
 
 public class PlainBeanEndpointTest extends SpringTestSupport {
 
-    public void testSendingToDynamicEndpointForPlainPojoWithFooOperation() throws Exception {
+    public void testSendingToDynamicEndpointForPlainBeanWithFooOperation() throws Exception {
         // now lets make a request on this endpoint
         DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
 
@@ -59,7 +59,7 @@
         assertNotNull("Bean's foo() method should bave been invoked", answer);
     }
 
-    public void testSendingToDynamicEndpointForPlainPojoWithBarOperation() throws Exception {
+    public void testSendingToDynamicEndpointForPlainBeanWithBarOperation() throws Exception {
         // now lets make a request on this endpoint
         DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
 
@@ -82,7 +82,7 @@
         assertNotNull("Bean's bar() method should bave been invoked", bar);
     }
 
-    public void testSendingToDynamicEndpointForPlainPojoWithPropertyExpressionParamameter() throws Exception {
+    public void testSendingToDynamicEndpointForPlainBeanWithPropertyExpressionParamameter() throws Exception {
         // now lets make a request on this endpoint
         DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
 
@@ -107,7 +107,7 @@
         assertEquals("Bean's methodWithPropertyParameter() method should bave been invoked", "James", answer);
     }
 
-    public void testSendingToDynamicEndpointForPlainPojoWithPropertyAndXPathExpressionParamameter() throws Exception {
+    public void testSendingToDynamicEndpointForPlainBeanWithPropertyAndXPathExpressionParamameter() throws Exception {
         // now lets make a request on this endpoint
         DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
 

Added: incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/beans/ExchangeProcessorBean.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/beans/ExchangeProcessorBean.java?view=auto&rev=454170
==============================================================================
--- incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/beans/ExchangeProcessorBean.java (added)
+++ incubator/servicemix/trunk/servicemix-bean/src/test/java/org/apache/servicemix/bean/beans/ExchangeProcessorBean.java Sun Oct  8 09:39:50 2006
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.bean.beans;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.servicemix.common.ExchangeProcessor;
+
+import javax.jbi.messaging.MessageExchange;
+
+/**
+ * A simple POJO which implements the {@link ExchangeProcessor} interface
+ *
+ * @version $Revision: $
+ */
+public class ExchangeProcessorBean implements ExchangeProcessor {
+
+    private static final Log log = LogFactory.getLog(ExchangeProcessorBean.class);
+
+    private MessageExchange lastExchange;
+    private String param;
+
+    public void process(MessageExchange messageExchange) throws Exception {
+        this.lastExchange = messageExchange;
+
+        log.info("Received exchange: " + messageExchange);
+    }
+
+    public void start() throws Exception {
+    }
+
+    public void stop() throws Exception {
+    }
+
+    public MessageExchange getLastExchange() {
+        return lastExchange;
+    }
+
+
+    public String getParam() {
+        return param;
+    }
+
+    public void setParam(String param) {
+        this.param = param;
+    }
+
+
+}

Modified: incubator/servicemix/trunk/servicemix-bean/src/test/resources/spring-no-endpoints.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-bean/src/test/resources/spring-no-endpoints.xml?view=diff&rev=454170&r1=454169&r2=454170
==============================================================================
--- incubator/servicemix/trunk/servicemix-bean/src/test/resources/spring-no-endpoints.xml (original)
+++ incubator/servicemix/trunk/servicemix-bean/src/test/resources/spring-no-endpoints.xml Sun Oct  8 09:39:50 2006
@@ -34,6 +34,7 @@
     </sm:activationSpecs>
   </sm:container>
 
+  <bean id="exchangeProcessorBean" class="org.apache.servicemix.bean.beans.ExchangeProcessorBean"/>
   <bean id="listenerBean" class="org.apache.servicemix.bean.beans.ListenerBean"/>
   <bean id="annotationsBean" class="org.apache.servicemix.bean.beans.AnnotatedBean"/>
   <bean id="plainBean" class="org.apache.servicemix.bean.beans.PlainBean"/>