Author: gertv
Date: Fri May 22 08:42:04 2009
New Revision: 777431
URL: http://svn.apache.org/viewvc?rev=777431&view=rev
Log:
SMXCOMP-532: Improve test coverage for servicemix-camel
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java
(with props)
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java
(with props)
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java
(with props)
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java
(with props)
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java
(with props)
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java
(with props)
Modified:
servicemix/components/engines/servicemix-camel/trunk/pom.xml
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelJbiComponent.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiBinding.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiComponent.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiMessage.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiCamelJbiComponent.java
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelAttachmentTest.java
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiExchangeTest.java
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutCamelErrorHandlingTest.java
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiTestSupport.java
Modified: servicemix/components/engines/servicemix-camel/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/pom.xml?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-camel/trunk/pom.xml (original)
+++ servicemix/components/engines/servicemix-camel/trunk/pom.xml Fri May 22
08:42:04 2009
@@ -156,6 +156,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.servicemix</groupId>
<artifactId>servicemix-core</artifactId>
<version>${servicemix-version}</version>
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelJbiComponent.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelJbiComponent.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelJbiComponent.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/CamelJbiComponent.java
Fri May 22 08:42:04 2009
@@ -21,8 +21,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
import javax.jbi.servicedesc.ServiceEndpoint;
@@ -43,11 +41,8 @@
protected CamelSpringDeployer deployer;
- private ScheduledExecutorService executorService;
-
private List<JbiComponent> jbiComponents = new ArrayList<JbiComponent>();
-
/*
* (non-Javadoc)
*
@@ -153,13 +148,6 @@
return result;
}
- public ScheduledExecutorService getExecutorService() {
- if (executorService == null) {
- executorService = new ScheduledThreadPoolExecutor(5);
- }
- return executorService;
- }
-
/**
* Activating a JBI endpoint created by a camel consumer.
*
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiBinding.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiBinding.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiBinding.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiBinding.java
Fri May 22 08:42:04 2009
@@ -156,10 +156,14 @@
protected Source getJbiInContent(Exchange camelExchange) {
// TODO this should be more smart
- Source content = camelExchange.getIn().getBody(Source.class);
- if (content == null && camelExchange.getIn().getBody() != null) {
- LOG.warn("'in' message content of type " +
camelExchange.getIn().getBody().getClass()
- + " could not be converted to Source and will be
dropped");
+ Source content = null;
+ try {
+ content = camelExchange.getIn().getBody(Source.class);
+ } catch (NoTypeConversionAvailableException e) {
+ if (camelExchange.getIn().getBody() != null) {
+ LOG.warn("'in' message content of type " +
camelExchange.getIn().getBody().getClass()
+ + " could not be converted to Source and will be
dropped");
+ }
}
return content;
}
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiComponent.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiComponent.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiComponent.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiComponent.java
Fri May 22 08:42:04 2009
@@ -38,11 +38,11 @@
public JbiComponent(CamelComponent component) {
setCamelJbiComponent(component);
}
-
+
protected JbiComponent() {
+ super();
}
-
public CamelContext getCamelContext() {
return camelContext;
}
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiEndpoint.java
Fri May 22 08:42:04 2009
@@ -79,6 +79,7 @@
jbiComponent.getCamelJbiComponent().addEndpoint(consumer);
super.start();
}
+
@Override
public void stop() throws Exception {
if (isStopped()) {
@@ -97,6 +98,13 @@
public boolean process(Exchange exchange, AsyncCallback asyncCallback)
{
return consumer.process(exchange, asyncCallback);
}
+
+ /*
+ * Access the underlying JBI Consumer endpoint
+ */
+ protected CamelConsumerEndpoint getCamelConsumerEndpoint() {
+ return consumer;
+ }
}
private void parseUri(String uri) {
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiMessage.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiMessage.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiMessage.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/JbiMessage.java
Fri May 22 08:42:04 2009
@@ -110,9 +110,8 @@
} catch (MessagingException e) {
throw new JbiException(e);
}
- } else {
- super.addAttachment(id, content);
}
+ super.addAttachment(id, content);
}
@Override
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiCamelJbiComponent.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiCamelJbiComponent.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiCamelJbiComponent.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiCamelJbiComponent.java
Fri May 22 08:42:04 2009
@@ -19,7 +19,6 @@
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
-import java.util.Map;
import java.io.File;
import java.net.URL;
@@ -27,20 +26,16 @@
import org.apache.commons.logging.LogFactory;
import org.apache.servicemix.camel.CamelJbiComponent;
import org.apache.servicemix.camel.CamelSpringDeployer;
-import org.apache.servicemix.camel.JbiBinding;
import org.apache.servicemix.common.BaseServiceUnitManager;
import org.apache.servicemix.common.Deployer;
import org.apache.servicemix.common.ServiceMixComponent;
import org.apache.servicemix.common.xbean.ClassLoaderXmlPreprocessor;
-import org.apache.servicemix.common.xbean.ParentBeanFactoryPostProcessor;
import org.apache.xbean.spring.context.SpringApplicationContext;
import org.apache.xbean.classloader.JarFileClassLoader;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
import
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-import org.springframework.core.io.FileSystemResource;
import org.springframework.osgi.context.BundleContextAware;
import org.springframework.osgi.util.BundleDelegatingClassLoader;
import org.osgi.framework.BundleContext;
@@ -49,7 +44,7 @@
/**
* When deploying a JBI packaged SU to camel component, camel-spring and
camel-osgi
* can not be found by Spring/XBean, thus leading to an exception about the
spring
- * and osgi namespaces not being found. We need to hack the clasloader for
SUs to
+ * and osgi namespaces not being found. We need to hack the classloader for
SUs to
* force a reference to camel-spring and camel-osgi in the SU classloader
parents.
*
* We also need to inject the bundleContext into the CamelContextFactoryBean
to
@@ -57,7 +52,8 @@
* with OSGi ResolverUtils
*/
public class OsgiCamelJbiComponent extends CamelJbiComponent implements
BundleContextAware {
- private static final Log LOG =
LogFactory.getLog(OsgiCamelJbiComponent.class);
+
+ private static final Log LOG =
LogFactory.getLog(OsgiCamelJbiComponent.class);
private BundleContext bundleContext;
public void setBundleContext(BundleContext bundleContext) {
@@ -65,7 +61,7 @@
}
public BundleContext getBundleContext() {
- return bundleContext;
+ return bundleContext;
}
public BaseServiceUnitManager createServiceUnitManager() {
@@ -74,10 +70,9 @@
}
public class OsgiCamelSpringDeployer extends CamelSpringDeployer {
- private OsgiCamelJbiComponent osgiCamelJbiComponent;
- public OsgiCamelSpringDeployer(OsgiCamelJbiComponent component) {
+
+ public OsgiCamelSpringDeployer(OsgiCamelJbiComponent component) {
super(component);
- osgiCamelJbiComponent = component;
}
protected List getXmlPreProcessors(String serviceUnitRootPath) {
@@ -98,33 +93,30 @@
}
}
- private class OsgiBundleContextPostprocessor implements
BeanFactoryPostProcessor {
-
- public void
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
- throws BeansException {
- beanFactory.addBeanPostProcessor(new
BeanPostProcessor() {
-
- public Object
postProcessAfterInitialization(Object bean,
- String beanName) throws
BeansException {
- // do nothing here
- return bean;
- }
-
- public Object
postProcessBeforeInitialization(Object bean,
- String beanName) throws
BeansException {
- if (bean instanceof
BundleContextAware) {
- BundleContextAware
bundleContextAware = (BundleContextAware)bean;
- if (bundleContext == null) {
- LOG.warn("No bundle defined yet so
cannot inject into: " + bean);
- } else {
-
bundleContextAware.setBundleContext(bundleContext);
- }
- }
- return bean;
- }
- });
- }
-
+ private class OsgiBundleContextPostprocessor implements
BeanFactoryPostProcessor {
+
+ public void postProcessBeanFactory(ConfigurableListableBeanFactory
beanFactory) throws BeansException {
+ beanFactory.addBeanPostProcessor(new BeanPostProcessor() {
+
+ public Object postProcessAfterInitialization(Object bean,
String beanName) throws BeansException {
+ // do nothing here
+ return bean;
+ }
+
+ public Object postProcessBeforeInitialization(Object bean,
String beanName) throws BeansException {
+ if (bean instanceof BundleContextAware) {
+ BundleContextAware bundleContextAware =
(BundleContextAware)bean;
+ if (bundleContext == null) {
+ LOG.warn("No bundle defined yet so cannot inject
into: " + bean);
+ } else {
+ bundleContextAware.setBundleContext(bundleContext);
+ }
+ }
+ return bean;
+ }
+ });
+ }
+
}
public class OsgiClassLoaderXmlPreprocessor extends
ClassLoaderXmlPreprocessor {
@@ -137,7 +129,7 @@
parents.add(super.getParentClassLoader(applicationContext));
for (Bundle bundle : bundleContext.getBundles()) {
try {
- String symbolicName = bundle.getSymbolicName();
+ String symbolicName = bundle.getSymbolicName();
if (symbolicName.contains("camel-spring") ||
symbolicName.contains("camel-osgi")) {
parents.add(BundleDelegatingClassLoader.createBundleClassLoaderFor(bundle));
}
@@ -150,5 +142,4 @@
parents.toArray(new
ClassLoader[parents.size()]));
}
}
-
}
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
Fri May 22 08:42:04 2009
@@ -25,16 +25,13 @@
import org.osgi.framework.ServiceReference;
/**
+ * OSGi-specific servicemix-camel {...@link JbiComponent} implementation that
looks up the {...@link CamelComponent} in the OSGi Service Registry
*/
public class OsgiJbiComponent extends JbiComponent implements
BundleContextAware, InitializingBean, DisposableBean {
private BundleContext bundleContext;
private ServiceReference reference;
- public BundleContext getBundleContext() {
- return bundleContext;
- }
-
public void setBundleContext(BundleContext bundleContext) {
this.bundleContext = bundleContext;
}
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,71 @@
+/*
+ * 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.camel;
+
+import java.util.List;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.servicemix.jbi.container.ActivationSpec;
+import org.apache.servicemix.jbi.container.JBIContainer;
+import org.apache.servicemix.tck.mock.MockMessageExchange;
+
+/**
+ * Test cases for {...@link CamelConsumerEndpoint}
+ */
+public class CamelConsumerEndpointTest extends JbiTestSupport {
+
+ public void testInvalidMessageExchangeDoesNotThrowException() throws
Exception {
+ String endpointName =
+
jbiContainer.getRegistry().getExternalEndpointsForService(CamelConsumerEndpoint.SERVICE_NAME)[0].getEndpointName();
+ CamelConsumerEndpoint endpoint =
+ (CamelConsumerEndpoint)
component.getRegistry().getEndpoint(CamelConsumerEndpoint.SERVICE_NAME + ":" +
endpointName);
+
+ try {
+ // now, let's shamelessly process a completely fake
MessageExchange...
+ endpoint.process(new MockMessageExchange() {
+ @Override
+ public String getExchangeId() {
+ return "a-fake-exchange-id";
+ }
+ });
+ } catch (Exception e) {
+ // ... and still expect the endpoint to behave properly
+ fail("Should not throw " + e);
+ }
+ }
+
+ @Override
+ protected void appendJbiActivationSpecs(List<ActivationSpec>
activationSpecList) {
+ // no additional JBI activation specs required
+ }
+
+ @Override
+ protected void configureContainer(JBIContainer container) throws Exception
{
+ super.configureContainer(container);
+ }
+
+ @Override
+ protected RouteBuilder createRoutes() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:a").to("jbi:endpoint:urn:test:service:endpoint");
+ from("jbi:endpoint:urn:test:service:endpoint").to("log:info");
+ }
+ };
+ }
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/CamelConsumerEndpointTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelAttachmentTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelAttachmentTest.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelAttachmentTest.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelAttachmentTest.java
Fri May 22 08:42:04 2009
@@ -21,12 +21,17 @@
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOut;
+import javax.xml.namespace.QName;
import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.DefaultExchange;
import org.apache.servicemix.jbi.container.ActivationSpec;
+import org.apache.servicemix.jbi.jaxp.StringSource;
/**
* Tests for attachment handling by servicemix-camel JBI component
@@ -56,6 +61,18 @@
fail("Expected a FileDataSource, but received a " +
received.getIn().getAttachment(ATTACHMENT_ID).getDataSource().getClass());
}
}
+
+ public void testGetAttachmentsFromCamelProcessor() throws Exception {
+ InOut inout = getServicemixClient().createInOutExchange();
+ inout.setService(new QName("urn:test", "inout-service"));
+ inout.getInMessage().setContent(new StringSource("<request>Could I get
an attachment, Mr. Camel?</request>"));
+ getServicemixClient().sendSync(inout);
+ assertEquals(ExchangeStatus.ACTIVE, inout.getStatus());
+ inout.setStatus(ExchangeStatus.DONE);
+ getServicemixClient().done(inout);
+ assertNotNull(inout.getOutMessage().getAttachment(ATTACHMENT_ID));
+ Thread.sleep(500);
+ }
@Override
protected void appendJbiActivationSpecs(List<ActivationSpec>
activationSpecList) {
@@ -67,10 +84,21 @@
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- //from Camel to JBI...
+ // from Camel to JBI...
from("direct:a").to("jbi:service:urn:test:service");
- //...and the other way around
+ // ...and the other way around
from("jbi:service:urn:test:service").to("mock:a");
+
+ // and now with a Camel processor to add the attachment
+ from("jbi:service:urn:test:inout-service").process(new
Processor() {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getOut().setBody(exchange.getIn().getBody());
+ exchange.getOut().addAttachment(ATTACHMENT_ID, new
DataHandler(new FileDataSource(TEST_FILE)));
+ }
+
+ });
}
};
}
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,59 @@
+/*
+ * 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.camel;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for {...@link JbiComponent}
+ */
+public class JbiComponentTest extends TestCase {
+
+ private final static String IN_OUT = "http://www.w3.org/ns/wsdl/in-out";
+
+ public void testGetUriWithMep() throws Exception {
+ JbiComponent component = createJbiComponent();
+ JbiEndpoint endpoint = (JbiEndpoint)
component.createEndpoint("jbi:endpoint:urn:test:service?mep=in-out");
+ assertEquals(IN_OUT, endpoint.getMep());
+ }
+
+ public void testNullWhenNoJbiUri() throws Exception {
+
assertNull(createJbiComponent().createEndpoint("somethingelse:service:urn:test"));
+ }
+
+ public void testExceptionWhenIllegalUri() {
+ // expecting an exception when uri doesn't have name, endpoint or
service after the jbi:
+
assertIllegalArgumentExceptionOnInvalidUri("jbi:illegal:urn:test:service");
+ // expecting an exception when using the wrong separators
+
assertIllegalArgumentExceptionOnInvalidUri("jbi:endpoint:urn:test/service");
+ }
+
+ private void assertIllegalArgumentExceptionOnInvalidUri(String uri) {
+ JbiComponent component = createJbiComponent();
+ JbiEndpoint endpoint = (JbiEndpoint) component.createEndpoint(uri);
+ try {
+ component.createJbiEndpointFromCamel(endpoint);
+ fail("Should have thrown an IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // ok, at least we got the exception we expected
+ }
+ }
+
+ private JbiComponent createJbiComponent() {
+ return new JbiComponent(new CamelJbiComponent());
+ }
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiComponentTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiExchangeTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiExchangeTest.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiExchangeTest.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiExchangeTest.java
Fri May 22 08:42:04 2009
@@ -18,14 +18,18 @@
import java.net.URI;
+import javax.jbi.messaging.Fault;
import javax.jbi.messaging.MessageExchange;
+import javax.jbi.messaging.NormalizedMessage;
import junit.framework.TestCase;
import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.servicemix.jbi.messaging.MessageExchangeSupport;
+import org.apache.servicemix.jbi.helper.MessageExchangePattern;
+import org.apache.servicemix.jbi.messaging.FaultImpl;
import org.apache.servicemix.tck.mock.MockMessageExchange;
+import org.apache.servicemix.tck.mock.MockNormalizedMessage;
/**
* Test case for {...@link JbiExchange}
@@ -66,11 +70,34 @@
assertEquals(VALUE, camelExchange.getProperty(KEY));
}
+ /*
+ * Test access to the underlying NormalizedMessages
+ */
+ public void testAccessTheNormalizedMessages() throws Exception {
+ NormalizedMessage in = new MockNormalizedMessage();
+ NormalizedMessage out = new MockNormalizedMessage();
+ Fault fault = new FaultImpl();
+ MessageExchange mock = createMockExchange();
+ mock.setMessage(in, "in");
+ mock.setMessage(out, "out");
+ mock.setFault(fault);
+ JbiExchange exchange = new JbiExchange(new DefaultCamelContext(), new
JbiBinding(), mock);
+ assertSame(in, exchange.getInMessage());
+ assertSame(out, exchange.getOutMessage());
+ assertSame(fault, exchange.getFaultMessage());
+ }
+
private MessageExchange createMockExchange() {
return new MockMessageExchange() {
@Override
public URI getPattern() {
- return MessageExchangeSupport.IN_OUT;
+ return MessageExchangePattern.IN_OUT;
+ }
+ public NormalizedMessage getMessage(String name) {
+ if ("fault".equalsIgnoreCase(name)) {
+ return getFault();
+ }
+ return super.getMessage(name);
}
};
}
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOnlyAsyncCamelTest.java
Fri May 22 08:42:04 2009
@@ -22,6 +22,8 @@
import javax.jbi.messaging.InOnly;
import javax.xml.namespace.QName;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.converter.jaxp.StringSource;
@@ -37,6 +39,9 @@
private static final String MESSAGE = "<just><a>test</a></just>";
public void testInOnlyExchangeThroughAsyncRoute() throws Exception {
+ // first remove the ExchangeListener -- it will not be notified of the
undeliverable MessageExchange
+ jbiContainer.removeListener(exchangeCompletedListener);
+
MockEndpoint done = getMockEndpoint("mock:done");
done.expectedBodiesReceived(MESSAGE);
@@ -72,3 +77,4 @@
};
}
}
+
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,111 @@
+/*
+ * 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.camel;
+
+import java.util.List;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOptionalOut;
+import javax.xml.namespace.QName;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.converter.jaxp.StringSource;
+import org.apache.servicemix.jbi.container.ActivationSpec;
+
+/**
+ * Tests on handling JBI InOnly exchanges by Camel
+ */
+public class JbiInOptionalOutCamelTest extends JbiTestSupport {
+
+ public void testInOptionalOutFromCamelEndpoint() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-optional-out");
+ inonly.expectedMessageCount(1);
+
+ client.sendBody("direct:in-optional-out", new
StringSource("<request>Does this MEP confuse you?</request>"));
+
+ inonly.assertIsSatisfied();
+ }
+
+ public void testInOptionalOutFromJbiWithDone() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-optional-out");
+ inonly.expectedMessageCount(1);
+
+ InOptionalOut exchange =
getServicemixClient().createInOptionalOutExchange();
+ exchange.setService(new QName("urn:test", "in-optional-out"));
+ exchange.getInMessage().setContent(new StringSource("<request>Does
this MEP confuse you?</request>"));
+ getServicemixClient().sendSync(exchange);
+ assertEquals(ExchangeStatus.ACTIVE, exchange.getStatus());
+ inonly.assertIsSatisfied();
+
+ // let's send the done and wait for a moment until it's handled
+ getServicemixClient().done(exchange);
+ Thread.sleep(500);
+ }
+
+ public void testInOptionalOutFromJbiWithFault() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-optional-out");
+ inonly.expectedMessageCount(1);
+
+ InOptionalOut exchange =
getServicemixClient().createInOptionalOutExchange();
+ exchange.setService(new QName("urn:test", "in-optional-out"));
+ exchange.getInMessage().setContent(new StringSource("<request>Does
this MEP confuse you?</request>"));
+ getServicemixClient().sendSync(exchange);
+ assertEquals(ExchangeStatus.ACTIVE, exchange.getStatus());
+ inonly.assertIsSatisfied();
+
+ // let's send back a fault to the Camel provider endpoint
+ exchange.setFault(exchange.createFault());
+ exchange.getFault().setContent(new StringSource("<response>Oh no,
things are going astray!</response>"));
+ getServicemixClient().sendSync(exchange);
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+ }
+
+ public void testInOptionalOutFromJbiWithError() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-optional-out");
+ inonly.expectedMessageCount(1);
+
+ InOptionalOut exchange =
getServicemixClient().createInOptionalOutExchange();
+ exchange.setService(new QName("urn:test", "in-optional-out"));
+ exchange.getInMessage().setContent(new StringSource("<request>Does
this MEP confuse you?</request>"));
+ getServicemixClient().sendSync(exchange);
+ assertEquals(ExchangeStatus.ACTIVE, exchange.getStatus());
+ inonly.assertIsSatisfied();
+
+ // let's back an error to the Camel provider endpoint and wait for a
moment until it's handled
+ exchange.setError(new JbiException("Oh no, things are going astray!"));
+ getServicemixClient().send(exchange);
+ Thread.sleep(500);
+ }
+
+
+ @Override
+ protected void appendJbiActivationSpecs(List<ActivationSpec>
activationSpecList) {
+ // no additional activation specs required
+ }
+
+ @Override
+ protected RouteBuilder createRoutes() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+
from("direct:in-optional-out").to("jbi:service:urn:test:in-optional-out?mep=in-optional-out");
+
from("jbi:service:urn:test:in-optional-out").to("mock:in-optional-out");
+ }
+ };
+ }
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOptionalOutCamelTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutCamelErrorHandlingTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutCamelErrorHandlingTest.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutCamelErrorHandlingTest.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiInOutCamelErrorHandlingTest.java
Fri May 22 08:42:04 2009
@@ -50,6 +50,9 @@
client.done(exchange);
errors.assertIsSatisfied();
+
+ // let's wait a moment to make sure that the last DONE MessageExchange
is handled
+ Thread.sleep(500);
}
public void testInOutWithHandleFault() throws Exception {
@@ -66,6 +69,9 @@
client.done(exchange);
errors.assertIsSatisfied();
+
+ // let's wait a moment to make sure that the last DONE MessageExchange
is handled
+ Thread.sleep(500);
}
public void testInOutWithErrorNotHandled() throws Exception {
@@ -115,6 +121,9 @@
receiverComponent.getMessageList().assertMessagesReceived(1);
errors.assertIsSatisfied();
+
+ // let's wait a moment to make sure that the last DONE MessageExchange
is handled
+ Thread.sleep(500);
}
@Override
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,61 @@
+/*
+ * 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.camel;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.jbi.messaging.NormalizedMessage;
+
+import junit.framework.TestCase;
+
+import org.apache.camel.Message;
+import org.apache.servicemix.tck.mock.MockNormalizedMessage;
+
+/**
+ * Test cases for {...@link JbiMessage}
+ */
+public class JbiMessageTest extends TestCase {
+
+ private static final String ATTACHMENT_ID = "attachment.png";
+ private static final String ANOTHER_ATTACHMENT_ID =
"another_attachment.png";
+ private static final DataHandler ATTACHMENT = new DataHandler(new
FileDataSource("attachment.png"));
+ private static final DataHandler ANOTHER_ATTACHMENT = new DataHandler(new
FileDataSource("attachment.png"));
+
+ public void testAttachmentsWithNormalizedMessage() throws Exception {
+ NormalizedMessage jbiMessage = new MockNormalizedMessage();
+ jbiMessage.addAttachment(ATTACHMENT_ID, ATTACHMENT);
+
+ // make sure the Camel Message also has the attachment
+ JbiMessage camelMessage = new JbiMessage(jbiMessage);
+ assertSame(ATTACHMENT, camelMessage.getAttachment(ATTACHMENT_ID));
+
+ // and ensure that attachments are propagated back to the underlying
NormalizedMessage
+ camelMessage.addAttachment(ANOTHER_ATTACHMENT_ID, ANOTHER_ATTACHMENT);
+ assertSame(ANOTHER_ATTACHMENT,
jbiMessage.getAttachment(ANOTHER_ATTACHMENT_ID));
+
+ // and they should also be on the Camel Message itself
+ camelMessage.setNormalizedMessage(null);
+ assertSame(ANOTHER_ATTACHMENT,
camelMessage.getAttachment(ANOTHER_ATTACHMENT_ID));
+ }
+
+ public void testCopyMessage() throws Exception {
+ JbiMessage message = new JbiMessage();
+ Message copy = message.copy();
+ assertTrue(copy instanceof JbiMessage);
+ }
+
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiMessageTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,90 @@
+/*
+ * 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.camel;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.converter.jaxp.StringSource;
+import org.apache.servicemix.jbi.container.ActivationSpec;
+
+/**
+ * Tests on handling JBI InOnly exchanges by Camel
+ */
+public class JbiOperationCamelTest extends JbiTestSupport {
+
+ private static final String OPERATION = "doit";
+
+ public void testInOnlySetOperationOnCamelEndpoint() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-only");
+ inonly.expectedMessageCount(1);
+
+ // either set the operation on the Camel JBI Endpoint
+ client.sendBody("direct:in-only", new StringSource("<request>How about
adding an operation?</request>"));
+
+ inonly.assertIsSatisfied();
+ Exchange exchange = inonly.getExchanges().get(0);
+ assertEquals(OPERATION, exchange.getProperty("jbi.operation"));
+ }
+
+ public void testInOnlySetOperationOnCamelExchange() throws Exception {
+ MockEndpoint inonly = getMockEndpoint("mock:in-only");
+ inonly.expectedMessageCount(1);
+
+ // this time, we set the target operation on the Camel Exchange
+ client.send("direct:in-only-noop", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.setProperty("jbi.operation", OPERATION);
+ exchange.getIn().setBody(new StringSource("<request>Sending
you the operation, could you please perform it?</request>"));
+ }
+ });
+
+ inonly.assertIsSatisfied();
+ Exchange exchange = inonly.getExchanges().get(0);
+ assertEquals(OPERATION, exchange.getProperty("jbi.operation"));
+ }
+
+ @Override
+ protected void appendJbiActivationSpecs(List<ActivationSpec>
activationSpecList) {
+ // no additional activation specs required
+ }
+
+ @Override
+ protected RouteBuilder createRoutes() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+
from("direct:in-only").to("jbi:service:urn:test:in-only?operation=" +
OPERATION);
+
from("direct:in-only-noop").to("log:info").to("jbi:service:urn:test:in-only");
+
+ from("jbi:service:urn:test:in-only").process(new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ JbiExchange jbi = (JbiExchange) exchange;
+ assertEquals(new QName(OPERATION),
jbi.getMessageExchange().getOperation());
+ }
+ }).to("mock:in-only");
+ }
+ };
+ }
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiOperationCamelTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiTestSupport.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiTestSupport.java?rev=777431&r1=777430&r2=777431&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiTestSupport.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiTestSupport.java
Fri May 22 08:42:04 2009
@@ -53,6 +53,8 @@
protected CamelContext camelContext;
protected SpringJBIContainer jbiContainer = new SpringJBIContainer();
+
+ protected CamelJbiComponent component;
protected ExchangeCompletedListener exchangeCompletedListener;
@@ -124,7 +126,7 @@
List<ActivationSpec> activationSpecList = new
ArrayList<ActivationSpec>();
// lets add the Camel endpoint
- CamelJbiComponent component = new CamelJbiComponent();
+ component = new CamelJbiComponent();
activationSpecList.add(createActivationSpec(component, new
QName("camel", "camel"), "camelEndpoint"));
// and provide a callback method for adding more services
@@ -133,7 +135,7 @@
jbiContainer.afterPropertiesSet();
- exchangeCompletedListener = new ExchangeCompletedListener();
+ exchangeCompletedListener = new ExchangeCompletedListener(2000);
jbiContainer.addListener(exchangeCompletedListener);
// allow for additional configuration of the compenent (e.g. deploying
SU)
@@ -153,13 +155,14 @@
return new DefaultCamelContext();
}
- protected void configureComponent(CamelJbiComponent component) throws
Exception {
+ protected void configureComponent(CamelJbiComponent camelComponent) throws
Exception {
// add the ServiceMix Camel component to the CamelContext
- camelContext.addComponent("jbi", new JbiComponent(component));
+ camelContext.addComponent("jbi", new JbiComponent(camelComponent));
}
protected void configureContainer(final JBIContainer container) throws
Exception {
container.setEmbedded(true);
+ container.setForceShutdown(1000);
}
public ServiceMixClient getServicemixClient() throws JBIException {
@@ -169,12 +172,12 @@
return servicemixClient;
}
- protected ActivationSpec createActivationSpec(Object component, QName
service) {
- return createActivationSpec(component, service, "endpoint");
+ protected ActivationSpec createActivationSpec(Object comp, QName service) {
+ return createActivationSpec(comp, service, "endpoint");
}
- protected ActivationSpec createActivationSpec(Object component, QName
service, String endpoint) {
- ActivationSpec spec = new ActivationSpec(component);
+ protected ActivationSpec createActivationSpec(Object comp, QName service,
String endpoint) {
+ ActivationSpec spec = new ActivationSpec(comp);
spec.setService(service);
spec.setEndpoint(endpoint);
return spec;
@@ -182,6 +185,7 @@
@Override
protected void tearDown() throws Exception {
+ exchangeCompletedListener.assertExchangeCompleted();
getServicemixClient().close();
client.stop();
camelContext.stop();
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java?rev=777431&view=auto
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java
(added)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java
Fri May 22 08:42:04 2009
@@ -0,0 +1,75 @@
+/*
+ * 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.camel.osgi;
+
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import junit.framework.TestCase;
+
+import org.apache.servicemix.camel.CamelComponent;
+import org.apache.servicemix.camel.CamelJbiComponent;
+import org.easymock.EasyMock;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Test cases for {...@link OsgiJbiComponent}
+ */
+public class OsgiJbiComponentTest extends TestCase {
+
+ /*
+ * The OsgiJbiComponent should get the CamelComponent from the OSGi
Service Registry
+ */
+ public void testGetCamelComponentFromOsgiServiceRegistry() throws
Exception {
+ CamelComponent component = new CamelJbiComponent();
+
+ BundleContext context = EasyMock.createMock(BundleContext.class);
+ ServiceReference reference =
EasyMock.createMock(ServiceReference.class);
+
expect(context.getServiceReference(CamelComponent.class.getName())).andReturn(reference);
+ expect(context.getService(reference)).andReturn(component);
+ expect(context.ungetService(reference)).andReturn(true);
+ replay(context);
+
+ // check that the CamelComponent is being fetched from the OSGi
Service Registry
+ OsgiJbiComponent osgiComponent = new OsgiJbiComponent();
+ osgiComponent.setBundleContext(context);
+ osgiComponent.afterPropertiesSet();
+ assertSame(component, osgiComponent.getCamelJbiComponent());
+
+ // and that that is being unget in the destroy method
+ osgiComponent.destroy();
+ verify(context);
+ }
+
+ public void testIllegalStateExceptionWithoutServiceRegistryEntry() throws
Exception {
+ BundleContext context = EasyMock.createMock(BundleContext.class);
+
expect(context.getServiceReference(CamelComponent.class.getName())).andReturn(null);
+ replay(context);
+
+ OsgiJbiComponent osgiComponent = new OsgiJbiComponent();
+ osgiComponent.setBundleContext(context);
+
+ try {
+ osgiComponent.afterPropertiesSet();
+ fail("Should have thrown an IllegalStateException");
+ } catch (IllegalStateException e) {
+ // this is exactly what we expected
+ }
+ }
+}
Propchange:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/osgi/OsgiJbiComponentTest.java
------------------------------------------------------------------------------
svn:eol-style = native