You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/07/13 16:31:27 UTC
svn commit: r1146057 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/component/ref/
camel-core/src/main/java/org/apache/camel/util/
camel-core/src/test/java/org/apache/camel/component/ref/ camel-c...
Author: davsclaus
Date: Wed Jul 13 14:31:26 2011
New Revision: 1146057
URL: http://svn.apache.org/viewvc?rev=1146057&view=rev
Log:
CAMEL-4222: Ref component throws better error message if endpoint could not be found in registry.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefInvalidTest.java
- copied, changed from r1145888, camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefFileEndpointTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcOptionsTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java Wed Jul 13 14:31:26 2011
@@ -30,6 +30,11 @@ public class NoSuchBeanException extends
this.name = name;
}
+ public NoSuchBeanException(String name, String type) {
+ super("No bean could be found in the registry for: " + name + " of type: " + type);
+ this.name = name;
+ }
+
public NoSuchBeanException(String name, Throwable cause) {
super("No bean could be found in the registry for: " + name + ". Cause: " + cause.getMessage(), cause);
this.name = name;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java Wed Jul 13 14:31:26 2011
@@ -20,6 +20,7 @@ import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.CamelContextHelper;
/**
* Component for lookup of existing endpoints bound in the {@link org.apache.camel.spi.Registry}.
@@ -42,13 +43,15 @@ public class RefComponent extends Defaul
}
/**
- * Looks up an endpoint for a given name.
- *
+ * Looks up a mandatory endpoint for a given name.
+ * <p/>
* Derived classes could use this name as a logical name and look it up on some registry.
+ * <p/>
+ * The default implementation will do a mandatory look up the name in the {@link org.apache.camel.spi.Registry}.
*
- * The default implementation will look up the name in the registry of the {@link #getCamelContext()} property
+ * @throws org.apache.camel.NoSuchBeanException if not found in the {@link org.apache.camel.spi.Registry}
*/
protected Endpoint lookupEndpoint(String name, Map<String, Object> parameters) {
- return getCamelContext().getRegistry().lookup(name, Endpoint.class);
+ return CamelContextHelper.mandatoryLookup(getCamelContext(), name, Endpoint.class);
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java Wed Jul 13 14:31:26 2011
@@ -19,6 +19,7 @@ package org.apache.camel.util;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
+import org.apache.camel.NoSuchBeanException;
import org.apache.camel.NoSuchEndpointException;
import static org.apache.camel.util.ObjectHelper.isEmpty;
@@ -107,21 +108,25 @@ public final class CamelContextHelper {
/**
* Look up the given named bean in the {@link org.apache.camel.spi.Registry} on the
- * {@link CamelContext} or throws IllegalArgumentException if not found.
+ * {@link CamelContext} or throws NoSuchBeanException if not found.
*/
public static Object mandatoryLookup(CamelContext context, String name) {
Object answer = lookup(context, name);
- notNull(answer, "registry entry called " + name);
+ if (answer == null) {
+ throw new NoSuchBeanException(name);
+ }
return answer;
}
/**
* Look up the given named bean of the given type in the {@link org.apache.camel.spi.Registry} on the
- * {@link CamelContext} or throws IllegalArgumentException if not found.
+ * {@link CamelContext} or throws NoSuchBeanException if not found.
*/
public static <T> T mandatoryLookup(CamelContext context, String name, Class<T> beanType) {
T answer = lookup(context, name, beanType);
- notNull(answer, "registry entry called " + name + " of type " + beanType.getName());
+ if (answer == null) {
+ throw new NoSuchBeanException(name, beanType.getName());
+ }
return answer;
}
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefInvalidTest.java (from r1145888, camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefFileEndpointTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefInvalidTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefInvalidTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefFileEndpointTest.java&r1=1145888&r2=1146057&rev=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefFileEndpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/ref/RefInvalidTest.java Wed Jul 13 14:31:26 2011
@@ -18,41 +18,42 @@ package org.apache.camel.component.ref;
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
+import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.file.FileConsumer;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
/**
* @version
*/
-public class RefFileEndpointTest extends ContextTestSupport {
+public class RefInvalidTest extends ContextTestSupport {
private SimpleRegistry registry = new SimpleRegistry();
- @Override
- protected void setUp() throws Exception {
- deleteDirectory("target/foo");
- super.setUp();
- }
-
- public void testRefFileEndpoint() throws Exception {
+ public void testOk() throws Exception {
getMockEndpoint("mock:result").expectedMessageCount(1);
- template.sendBodyAndHeader("file:target/foo", "Hello World", Exchange.FILE_NAME, "hello.txt");
+ template.sendBody("ref:foo", "Hello World");
assertMockEndpointsSatisfied();
+ }
- FileConsumer consumer = (FileConsumer) context.getRoute("foo").getConsumer();
- assertEquals(3000, consumer.getDelay());
- assertEquals(250, consumer.getInitialDelay());
+ public void testInvalid() throws Exception {
+ try {
+ template.sendBody("ref:xxx", "Hello World");
+ fail("Should have thrown an exception");
+ } catch (ResolveEndpointFailedException e) {
+ assertEquals("Failed to resolve endpoint: ref://xxx due to: No bean could be found in the registry for: xxx of type: org.apache.camel.Endpoint", e.getMessage());
+ NoSuchBeanException cause = assertIsInstanceOf(NoSuchBeanException.class, e.getCause());
+ assertEquals("xxx", cause.getName());
+ }
}
@Override
protected CamelContext createCamelContext() throws Exception {
CamelContext context = new DefaultCamelContext(registry);
- registry.put("foo", context.getEndpoint("file:target/foo?initialDelay=250&delay=3000&delete=true"));
+ registry.put("foo", context.getEndpoint("seda:foo"));
return context;
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java Wed Jul 13 14:31:26 2011
@@ -23,6 +23,7 @@ import org.apache.camel.Consume;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.EndpointInject;
import org.apache.camel.Exchange;
+import org.apache.camel.NoSuchBeanException;
import org.apache.camel.PollingConsumer;
import org.apache.camel.Processor;
import org.apache.camel.Produce;
@@ -251,8 +252,8 @@ public class CamelPostProcessorHelperTes
try {
helper.getInjectionValue(type, endpointInject.uri(), endpointInject.ref(), propertyName, bean, "foo");
fail("Should throw exception");
- } catch (IllegalArgumentException e) {
- assertEquals("registry entry called unknown of type org.apache.camel.Endpoint must be specified", e.getMessage());
+ } catch (NoSuchBeanException e) {
+ assertEquals("No bean could be found in the registry for: unknown of type: org.apache.camel.Endpoint", e.getMessage());
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java Wed Jul 13 14:31:26 2011
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Endpoint;
+import org.apache.camel.NoSuchBeanException;
/**
* Unit test for helper methods on the DefaultComponent.
@@ -99,8 +100,8 @@ public class DefaultComponentTest extend
try {
my.resolveAndRemoveReferenceParameter(parameters, "date", Date.class);
fail("returned without finding object in registry");
- } catch (IllegalArgumentException e) {
- // test passes
+ } catch (NoSuchBeanException e) {
+ assertEquals("No bean could be found in the registry for: somewhen of type: java.util.Date", e.getMessage());
}
}
@@ -184,8 +185,8 @@ public class DefaultComponentTest extend
try {
my.resolveAndRemoveReferenceListParameter(parameters, "dates", Date.class);
fail("returned without finding object in registry");
- } catch (IllegalArgumentException e) {
- // test passes
+ } catch (NoSuchBeanException e) {
+ assertEquals("No bean could be found in the registry for: bean3 of type: java.util.Date", e.getMessage());
}
}
Modified: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcOptionsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcOptionsTest.java?rev=1146057&r1=1146056&r2=1146057&view=diff
==============================================================================
--- camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcOptionsTest.java (original)
+++ camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcOptionsTest.java Wed Jul 13 14:31:26 2011
@@ -115,7 +115,7 @@ public class JdbcOptionsTest extends Cam
template.sendBody("jdbc:xxx", "Hello World");
fail("Should have thrown a ResolveEndpointFailedException");
} catch (ResolveEndpointFailedException e) {
- assertEquals("registry entry called xxx of type javax.sql.DataSource must be specified",
+ assertEquals("No bean could be found in the registry for: xxx of type: javax.sql.DataSource",
e.getCause().getMessage());
}
}