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 2012/09/25 13:32:21 UTC

svn commit: r1389813 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/spi/ camel-core/src/ma...

Author: davsclaus
Date: Tue Sep 25 11:32:21 2012
New Revision: 1389813

URL: http://svn.apache.org/viewvc?rev=1389813&view=rev
Log:
CAMEL-5647: EIPs using custom aggregation strategy should fail if not possible to find in registry

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/model/ProcessorTypeConfigurationTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerCamelContextRefNotFoundTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerRouteContextRefNotFoundTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java Tue Sep 25 11:32:21 2012
@@ -102,10 +102,7 @@ public class ErrorHandlerBuilderRef exte
             }
         } else {
             // use specific configured error handler
-            answer = routeContext.lookup(ref, ErrorHandlerBuilder.class);
-            if (answer == null) {
-                throw new IllegalArgumentException("ErrorHandlerBuilder with id " + ref + " not found in registry.");
-            }
+            answer = routeContext.mandatoryLookup(ref, ErrorHandlerBuilder.class);
         }
 
         return answer;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java Tue Sep 25 11:32:21 2012
@@ -41,6 +41,7 @@ import org.apache.camel.processor.UnitOf
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
+import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -139,7 +140,12 @@ public class DefaultRouteContext impleme
     public <T> Map<String, T> lookupByType(Class<T> type) {
         return getCamelContext().getRegistry().lookupByType(type);
     }
-    
+
+    @Override
+    public <T> T mandatoryLookup(String name, Class<T> type) {
+        return CamelContextHelper.mandatoryLookup(getCamelContext(), name, type);
+    }
+
     public void commit() {
         // now lets turn all of the event driven consumer processors into a single route
         if (!eventDrivenProcessors.isEmpty()) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java Tue Sep 25 11:32:21 2012
@@ -259,7 +259,7 @@ public class AggregateDefinition extends
     private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
         AggregationStrategy strategy = getAggregationStrategy();
         if (strategy == null && strategyRef != null) {
-            strategy = routeContext.lookup(strategyRef, AggregationStrategy.class);
+            strategy = routeContext.mandatoryLookup(strategyRef, AggregationStrategy.class);
         }
 
         if (groupExchanges != null && groupExchanges) {
@@ -284,10 +284,7 @@ public class AggregateDefinition extends
     private AggregationRepository createAggregationRepository(RouteContext routeContext) {
         AggregationRepository repository = getAggregationRepository();
         if (repository == null && aggregationRepositoryRef != null) {
-            repository = routeContext.lookup(aggregationRepositoryRef, AggregationRepository.class);
-            if (repository == null) {
-                throw new IllegalArgumentException("AggregationRepositoryRef " + aggregationRepositoryRef + " not found in registry.");
-            }
+            repository = routeContext.mandatoryLookup(aggregationRepositoryRef, AggregationRepository.class);
         }
         return repository;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java Tue Sep 25 11:32:21 2012
@@ -95,7 +95,7 @@ public class EnrichDefinition extends No
 
         Enricher enricher = new Enricher(null, endpoint.createProducer());
         if (aggregationStrategyRef != null) {
-            aggregationStrategy = routeContext.lookup(aggregationStrategyRef, AggregationStrategy.class);
+            aggregationStrategy = routeContext.mandatoryLookup(aggregationStrategyRef, AggregationStrategy.class);
         }
         if (aggregationStrategy == null) {
             enricher.setDefaultAggregationStrategy();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java Tue Sep 25 11:32:21 2012
@@ -218,7 +218,7 @@ public class IdempotentConsumerDefinitio
      */
     protected IdempotentRepository<?> resolveMessageIdRepository(RouteContext routeContext) {
         if (messageIdRepositoryRef != null) {
-            idempotentRepository = routeContext.lookup(messageIdRepositoryRef, IdempotentRepository.class);
+            idempotentRepository = routeContext.mandatoryLookup(messageIdRepositoryRef, IdempotentRepository.class);
         }
         return idempotentRepository;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java Tue Sep 25 11:32:21 2012
@@ -56,7 +56,7 @@ public class LoadBalancerDefinition exte
     public static LoadBalancer getLoadBalancer(RouteContext routeContext, LoadBalancerDefinition type, String ref) {
         if (type == null) {
             ObjectHelper.notNull(ref, "ref or loadBalancer");
-            LoadBalancer loadBalancer = routeContext.lookup(ref, LoadBalancer.class);
+            LoadBalancer loadBalancer = routeContext.mandatoryLookup(ref, LoadBalancer.class);
             if (loadBalancer instanceof LoadBalancerDefinition) {
                 type = (LoadBalancerDefinition) loadBalancer;
             } else {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java Tue Sep 25 11:32:21 2012
@@ -209,7 +209,7 @@ public class MulticastDefinition extends
 
     protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
         if (strategyRef != null) {
-            aggregationStrategy = routeContext.lookup(strategyRef, AggregationStrategy.class);
+            aggregationStrategy = routeContext.mandatoryLookup(strategyRef, AggregationStrategy.class);
         }
         if (aggregationStrategy == null) {
             // default to use latest aggregation strategy

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java Tue Sep 25 11:32:21 2012
@@ -100,7 +100,7 @@ public class PollEnrichDefinition extend
         }
 
         if (aggregationStrategyRef != null) {
-            aggregationStrategy = routeContext.lookup(aggregationStrategyRef, AggregationStrategy.class);
+            aggregationStrategy = routeContext.mandatoryLookup(aggregationStrategyRef, AggregationStrategy.class);
         }
         if (aggregationStrategy == null) {
             enricher.setDefaultAggregationStrategy();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java Tue Sep 25 11:32:21 2012
@@ -86,8 +86,7 @@ public class ProcessDefinition extends N
         Processor answer = processor;
         if (processor == null) {
             ObjectHelper.notNull(ref, "ref", this);
-            answer = routeContext.lookup(getRef(), Processor.class);
-            ObjectHelper.notNull(answer, "registry entry called " + getRef(), this);
+            answer = routeContext.mandatoryLookup(getRef(), Processor.class);
         }
 
         // ensure its wrapped in a Service so we can manage it from eg. JMX

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java Tue Sep 25 11:32:21 2012
@@ -164,7 +164,7 @@ public class RecipientListDefinition<Typ
     
     private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
         if (aggregationStrategy == null && strategyRef != null) {
-            aggregationStrategy = routeContext.lookup(strategyRef, AggregationStrategy.class);
+            aggregationStrategy = routeContext.mandatoryLookup(strategyRef, AggregationStrategy.class);
         }
         if (aggregationStrategy == null) {
             // fallback to use latest

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java Tue Sep 25 11:32:21 2012
@@ -97,7 +97,7 @@ public class WireTapDefinition<Type exte
         WireTapProcessor answer = new WireTapProcessor(endpoint, target, getPattern(), threadPool, shutdownThreadPool);
         answer.setCopy(isCopy());
         if (newExchangeProcessorRef != null) {
-            newExchangeProcessor = routeContext.lookup(newExchangeProcessorRef, Processor.class);
+            newExchangeProcessor = routeContext.mandatoryLookup(newExchangeProcessorRef, Processor.class);
         }
         if (newExchangeProcessor != null) {
             answer.addNewExchangeProcessor(newExchangeProcessor);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java Tue Sep 25 11:32:21 2012
@@ -89,6 +89,15 @@ public interface RouteContext extends Ru
     <T> T lookup(String name, Class<T> type);
 
     /**
+     * lookup an object by name and type or throws {@link org.apache.camel.NoSuchBeanException} if not found.
+     *
+     * @param name  the name to lookup
+     * @param type  the expected type
+     * @return the found object
+     */
+    <T> T mandatoryLookup(String name, Class<T> type);
+
+    /**
      * lookup objects by type
      *
      * @param type the expected type

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=1389813&r1=1389812&r2=1389813&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 Tue Sep 25 11:32:21 2012
@@ -110,7 +110,7 @@ public final class CamelContextHelper {
 
     /**
      * Look up the given named bean in the {@link org.apache.camel.spi.Registry} on the
-     * {@link CamelContext} or throws NoSuchBeanException if not found.
+     * {@link CamelContext} or throws {@link NoSuchBeanException} if not found.
      */
     public static Object mandatoryLookup(CamelContext context, String name) {
         Object answer = lookup(context, name);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/model/ProcessorTypeConfigurationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/model/ProcessorTypeConfigurationTest.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/model/ProcessorTypeConfigurationTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/model/ProcessorTypeConfigurationTest.java Tue Sep 25 11:32:21 2012
@@ -34,7 +34,7 @@ public class ProcessorTypeConfigurationT
             });
             fail("Should have thrown IllegalArgumentException");
         } catch (FailedToCreateRouteException e) {
-            assertEquals("registry entry called hello must be specified on: process[ref:hello]", e.getCause().getMessage());
+            assertEquals("No bean could be found in the registry for: hello of type: org.apache.camel.Processor", e.getCause().getMessage());
         }
     }
 

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerCamelContextRefNotFoundTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerCamelContextRefNotFoundTest.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerCamelContextRefNotFoundTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerCamelContextRefNotFoundTest.java Tue Sep 25 11:32:21 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.spring.config;
 
 import org.apache.camel.FailedToCreateRouteException;
+import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spring.SpringTestSupport;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -34,8 +35,8 @@ public class ErrorHandlerCamelContextRef
             fail("Should have thrown an exception");
         } catch (RuntimeCamelException e) {
             FailedToCreateRouteException cause = assertIsInstanceOf(FailedToCreateRouteException.class, e.getCause());
-            IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, cause.getCause());
-            assertEquals("ErrorHandlerBuilder with id foo not found in registry.", iae.getMessage());
+            NoSuchBeanException nsbe = assertIsInstanceOf(NoSuchBeanException.class, cause.getCause());
+            assertEquals("No bean could be found in the registry for: foo of type: org.apache.camel.builder.ErrorHandlerBuilder", nsbe.getMessage());
         }
     }
 

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerRouteContextRefNotFoundTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerRouteContextRefNotFoundTest.java?rev=1389813&r1=1389812&r2=1389813&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerRouteContextRefNotFoundTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerRouteContextRefNotFoundTest.java Tue Sep 25 11:32:21 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.spring.config;
 
 import org.apache.camel.FailedToCreateRouteException;
+import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spring.SpringTestSupport;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -33,8 +34,8 @@ public class ErrorHandlerRouteContextRef
             super.setUp();
         } catch (RuntimeCamelException e) {
             FailedToCreateRouteException cause = assertIsInstanceOf(FailedToCreateRouteException.class, e.getCause());
-            IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, cause.getCause());
-            assertEquals("ErrorHandlerBuilder with id bar not found in registry.", iae.getMessage());
+            NoSuchBeanException nsbe = assertIsInstanceOf(NoSuchBeanException.class, cause.getCause());
+            assertEquals("No bean could be found in the registry for: bar of type: org.apache.camel.builder.ErrorHandlerBuilder", nsbe.getMessage());
         }
     }