You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/06/19 13:18:59 UTC
svn commit: r786457 - in
/camel/trunk/components/camel-test/src/main/java/org/apache/camel/test:
CamelTestSupport.java junit4/CamelSpringTestSupport.java
junit4/CamelTestSupport.java
Author: ningjiang
Date: Fri Jun 19 11:18:58 2009
New Revision: 786457
URL: http://svn.apache.org/viewvc?rev=786457&view=rev
Log:
CAMEL-1704 updated the CamelTestSupport codes
Modified:
camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/CamelTestSupport.java
camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelSpringTestSupport.java
camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java
Modified: camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/CamelTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/CamelTestSupport.java?rev=786457&r1=786456&r2=786457&view=diff
==============================================================================
--- camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/CamelTestSupport.java (original)
+++ camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/CamelTestSupport.java Fri Jun 19 11:18:58 2009
@@ -26,6 +26,7 @@
import javax.naming.InitialContext;
import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
@@ -42,8 +43,6 @@
import org.apache.camel.spi.Language;
import org.apache.camel.spring.CamelBeanPostProcessor;
import org.apache.camel.util.CamelContextHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
* A useful base class which creates a {@link org.apache.camel.CamelContext} with some routes
@@ -52,8 +51,10 @@
* @version $Revision$
*/
public abstract class CamelTestSupport extends TestSupport {
+
protected CamelContext context;
protected ProducerTemplate template;
+ protected ConsumerTemplate consumer;
private boolean useRouteBuilder = true;
private Service camelContextService;
@@ -84,6 +85,7 @@
assertValidContext(context);
template = context.createProducerTemplate();
+ consumer = context.createConsumerTemplate();
postProcessTest();
@@ -98,11 +100,15 @@
} else {
log.debug("Using route builder from the created context: " + context);
}
+ log.debug("Routing Rules are: " + context.getRoutes());
}
@Override
protected void tearDown() throws Exception {
log.debug("tearDown test: " + getName());
+ if (consumer != null) {
+ consumer.stop();
+ }
if (template != null) {
template.stop();
}
@@ -125,7 +131,7 @@
} else {
if (context != null) {
context.stop();
- }
+ }
}
}
@@ -134,7 +140,7 @@
camelContextService.start();
} else {
if (context instanceof DefaultCamelContext) {
- DefaultCamelContext defaultCamelContext = (DefaultCamelContext) context;
+ DefaultCamelContext defaultCamelContext = (DefaultCamelContext)context;
if (!defaultCamelContext.isStarted()) {
defaultCamelContext.start();
}
@@ -168,7 +174,7 @@
}
/**
- * Factory method which derived classes can use to create a {@link org.apache.camel.builder.RouteBuilder}
+ * Factory method which derived classes can use to create a {@link RouteBuilder}
* to define the routes for testing
*/
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -186,7 +192,7 @@
* @see #createRouteBuilder()
*/
protected RouteBuilder[] createRouteBuilders() throws Exception {
- return new RouteBuilder[]{createRouteBuilder()};
+ return new RouteBuilder[] {createRouteBuilder()};
}
/**
Modified: camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelSpringTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelSpringTestSupport.java?rev=786457&r1=786456&r2=786457&view=diff
==============================================================================
--- camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelSpringTestSupport.java (original)
+++ camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelSpringTestSupport.java Fri Jun 19 11:18:58 2009
@@ -16,32 +16,42 @@
*/
package org.apache.camel.test.junit4;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.apache.camel.CamelContext;
import org.apache.camel.Route;
+import org.apache.camel.impl.DefaultPackageScanClassResolver;
+import org.apache.camel.impl.scan.AssignableToPackageScanFilter;
+import org.apache.camel.impl.scan.InvertingPackageScanFilter;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.camel.util.ObjectHelper;
import org.junit.After;
import org.junit.Before;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
/**
* @version $Revision$
*/
public abstract class CamelSpringTestSupport extends CamelTestSupport {
protected AbstractXmlApplicationContext applicationContext;
-
protected abstract AbstractXmlApplicationContext createApplicationContext();
+ @Override
@Before
public void setUp() throws Exception {
applicationContext = createApplicationContext();
assertNotNull("Should have created a valid spring context", applicationContext);
-
super.setUp();
}
+ @Override
@After
public void tearDown() throws Exception {
super.tearDown();
@@ -50,6 +60,67 @@
}
}
+ @SuppressWarnings("unchecked")
+ private static class ExcludingPackageScanClassResolver extends DefaultPackageScanClassResolver {
+
+ public void setExcludedClasses(Set<Class> excludedClasses) {
+ excludedClasses = excludedClasses == null ? Collections.EMPTY_SET : excludedClasses;
+ addFilter(new InvertingPackageScanFilter(new AssignableToPackageScanFilter(excludedClasses)));
+ }
+
+ }
+
+ /**
+ * Create a parent context that initializes a
+ * {@link org.apache.camel.spi.PackageScanClassResolver} to exclude a set of given classes from
+ * being resolved. Typically this is used at test time to exclude certain routes,
+ * which might otherwise be just noisy, from being discovered and initialized.
+ * <p/>
+ * To use this filtering mechanism it is necessary to provide the
+ * {@link ApplicationContext} returned from here as the parent context to
+ * your test context e.g.
+ *
+ * <pre>
+ * protected AbstractXmlApplicationContext createApplicationContext() {
+ * return new ClassPathXmlApplicationContext(new String[] {"test-context.xml"}, getRouteExcludingApplicationContext());
+ * }
+ * </pre>
+ *
+ * This will, in turn, call the template methods <code>excludedRoutes</code>
+ * and <code>excludedRoute</code> to determine the classes to be excluded from scanning.
+ *
+ * @see org.apache.camel.spring.config.scan.SpringComponentScanTest for an example.
+ * @return ApplicationContext a parent {@link ApplicationContext} configured
+ * to exclude certain classes from package scanning
+ */
+ protected ApplicationContext getRouteExcludingApplicationContext() {
+ GenericApplicationContext routeExcludingContext = new GenericApplicationContext();
+ routeExcludingContext.registerBeanDefinition("excludingResolver", new RootBeanDefinition(ExcludingPackageScanClassResolver.class));
+ routeExcludingContext.refresh();
+
+ ExcludingPackageScanClassResolver excludingResolver = (ExcludingPackageScanClassResolver)routeExcludingContext.getBean("excludingResolver");
+ excludingResolver.setExcludedClasses(new HashSet<Class>(Arrays.asList(excludeRoutes())));
+
+ return routeExcludingContext;
+ }
+
+ /**
+ * Template method used to exclude {@link org.apache.camel.Routes} from the test time context
+ * route scanning
+ *
+ * @return Class[] the classes to be excluded from test time context route scanning
+ */
+ protected Class[] excludeRoutes() {
+ Class excludedRoute = excludeRoute();
+ return excludedRoute != null ? new Class[] {excludedRoute} : new Class[0];
+ }
+
+ /**
+ * Template method used to exclude a {@link org.apache.camel.Routes} from the test camel context
+ */
+ protected Class excludeRoute() {
+ return null;
+ }
/**
* Looks up the mandatory spring bean of the given name and type, failing if
Modified: camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java?rev=786457&r1=786456&r2=786457&view=diff
==============================================================================
--- camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java (original)
+++ camel/trunk/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java Fri Jun 19 11:18:58 2009
@@ -26,6 +26,7 @@
import javax.naming.InitialContext;
import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
@@ -42,8 +43,6 @@
import org.apache.camel.spi.Language;
import org.apache.camel.spring.CamelBeanPostProcessor;
import org.apache.camel.util.CamelContextHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.junit.After;
import org.junit.Before;
@@ -54,8 +53,10 @@
* @version $Revision$
*/
public abstract class CamelTestSupport extends TestSupport {
+
protected CamelContext context;
protected ProducerTemplate template;
+ protected ConsumerTemplate consumer;
private boolean useRouteBuilder = true;
private Service camelContextService;
@@ -86,6 +87,7 @@
assertValidContext(context);
template = context.createProducerTemplate();
+ consumer = context.createConsumerTemplate();
postProcessTest();
@@ -100,17 +102,21 @@
} else {
log.debug("Using route builder from the created context: " + context);
}
+ log.debug("Routing Rules are: " + context.getRoutes());
}
@After
public void tearDown() throws Exception {
-
+ log.debug("tearDown test ");
+ if (consumer != null) {
+ consumer.stop();
+ }
if (template != null) {
template.stop();
}
stopCamelContext();
}
-
+
/**
* Lets post process this test instance to process any Camel annotations.
* Note that using Spring Test or Guice is a more powerful approach.
@@ -120,14 +126,14 @@
processor.setCamelContext(context);
processor.postProcessBeforeInitialization(this, "this");
}
-
+
protected void stopCamelContext() throws Exception {
if (camelContextService != null) {
camelContextService.stop();
} else {
if (context != null) {
context.stop();
- }
+ }
}
}
@@ -136,7 +142,7 @@
camelContextService.start();
} else {
if (context instanceof DefaultCamelContext) {
- DefaultCamelContext defaultCamelContext = (DefaultCamelContext) context;
+ DefaultCamelContext defaultCamelContext = (DefaultCamelContext)context;
if (!defaultCamelContext.isStarted()) {
defaultCamelContext.start();
}
@@ -169,7 +175,7 @@
}
/**
- * Factory method which derived classes can use to create a {@link org.apache.camel.builder.RouteBuilder}
+ * Factory method which derived classes can use to create a {@link RouteBuilder}
* to define the routes for testing
*/
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -187,7 +193,7 @@
* @see #createRouteBuilder()
*/
protected RouteBuilder[] createRouteBuilders() throws Exception {
- return new RouteBuilder[]{createRouteBuilder()};
+ return new RouteBuilder[] {createRouteBuilder()};
}
/**
@@ -348,5 +354,4 @@
protected void enableJMX() {
System.setProperty(JmxSystemPropertyKeys.DISABLED, "false");
}
-
}
\ No newline at end of file