camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: svn commit: r749973 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/interceptor/ test/java/org/apache/camel/component/mock/ test/java/org/apache/camel/processor/
Date Thu, 05 Mar 2009 01:52:38 GMT
Hi Claus,

Does this change need to be merge in to 1.x branch ?

Thanks,

Willem

davsclaus@apache.org wrote:
> Author: davsclaus
> Date: Wed Mar  4 12:06:11 2009
> New Revision: 749973
> 
> URL: http://svn.apache.org/viewvc?rev=749973&view=rev
> Log:
> CAMEL-1417: Fixed failing unit test as we can not use the lookup in type converter registry.
Improved expectedHeader to allow all types instead of only string values. So now you can compare
real numbers and whatelse.
> 
> Modified:
>     camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
>     camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
>     camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
>     camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
> 
> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=749973&r1=749972&r2=749973&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
(original)
> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
Wed Mar  4 12:06:11 2009
> @@ -74,7 +74,7 @@
>      private List actualBodyValues;
>      private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
>      private String headerName;
> -    private String headerValue;
> +    private Object headerValue;
>      private Object actualHeader;
>      private Processor reporter;
>  
> @@ -308,7 +308,7 @@
>       * Adds an expectation that the given header name & value are received by this
>       * endpoint
>       */
> -    public void expectedHeaderReceived(String name, String value) {
> +    public void expectedHeaderReceived(final String name, final Object value) {
>          this.headerName = name;
>          this.headerValue = value;
>  
> @@ -316,7 +316,8 @@
>              public void run() {
>                  assertTrue("No header with name " + headerName + " found.", actualHeader
!= null);
>  
> -                assertEquals("Header of message", headerValue, actualHeader.toString());
> +                Object actualValue = getCamelContext().getTypeConverter().convertTo(actualHeader.getClass(),
headerValue);
> +                assertEquals("Header of message", actualValue, actualHeader);
>              }
>          });
>      }
> 
> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java?rev=749973&r1=749972&r2=749973&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
(original)
> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
Wed Mar  4 12:06:11 2009
> @@ -24,7 +24,6 @@
>  import org.apache.camel.NoTypeConversionAvailableException;
>  import org.apache.camel.Processor;
>  import org.apache.camel.StreamCache;
> -import org.apache.camel.TypeConverter;
>  import org.apache.camel.model.InterceptorRef;
>  import org.apache.camel.model.InterceptorType;
>  import org.apache.camel.processor.DelegateProcessor;
> @@ -64,39 +63,28 @@
>              }
>          }
>      }
> -    
> +
>      @Override
>      public void process(Exchange exchange) throws Exception {
>          AsyncProcessorHelper.process(this, exchange);
>      }
>  
>      public boolean process(Exchange exchange, AsyncCallback callback) {
> -        // Change the body to StreamCache if possible
> -        // important to lookup for the type converter to avoid excessive overhead of
trying to covnert if not possible
> -        // as Camel will throw NoTypeConversionAvailableException that we just ignores.
So we want to avoid this
> -        // exception handling as it hurts performance dramatically for high throughput
> -        // See also MessageSupport#getBody and CAMEL-1417
> -        Object body = exchange.getIn().getBody();
> -        if (body != null) {
> -            TypeConverter tc = exchange.getContext().getTypeConverterRegistry().lookup(StreamCache.class,
body.getClass());
> -            if (tc != null) {
> -                try {
> -                    StreamCache newBody = tc.convertTo(StreamCache.class, exchange,
body);
> -                    if (newBody != null) {
> -                        exchange.getIn().setBody(newBody);
> -                    }
> -                    MessageHelper.resetStreamCache(exchange.getIn());
> -                } catch (NoTypeConversionAvailableException ex) {
> -                    // ignore if in is not of StreamCache type
> -                }
> +        try {
> +            StreamCache newBody = exchange.getIn().getBody(StreamCache.class);
> +            if (newBody != null) {
> +                exchange.getIn().setBody(newBody);
>              }
> +            MessageHelper.resetStreamCache(exchange.getIn());
> +        } catch (NoTypeConversionAvailableException ex) {
> +            // ignore if in is not of StreamCache type
>          }
>  
>          return proceed(exchange, callback);
>      }
>  
> -    public boolean proceed(Exchange exchange, AsyncCallback callback) {        
> -        if (getProcessor() instanceof AsyncProcessor) {            
> +    public boolean proceed(Exchange exchange, AsyncCallback callback) {
> +        if (getProcessor() instanceof AsyncProcessor) {
>              return ((AsyncProcessor) getProcessor()).process(exchange, callback);
>          } else {
>              try {
> 
> Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java?rev=749973&r1=749972&r2=749973&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
(original)
> +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
Wed Mar  4 12:06:11 2009
> @@ -112,6 +112,8 @@
>  
>          MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
>          resultEndpoint.expectedMessageCount(6);
> +        // wait at most 2 sec to speedup unit testing 
> +        resultEndpoint.setResultWaitTime(2000);
>          resultEndpoint.assertIsNotSatisfied();
>      }
>  
> @@ -141,7 +143,6 @@
>          resultEndpoint.assertIsSatisfied();
>          
>          resultEndpoint.reset();
> -        
>          // assert failure when value is different
>          resultEndpoint.expectedHeaderReceived("header", "value1");
>          sendHeader("header", "value");
> @@ -162,10 +163,21 @@
>          resultEndpoint.assertIsNotSatisfied();                       
>      }
>      
> +    public void testExpectationOfHeaderWithNumber() throws InterruptedException {
> +        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
> +        resultEndpoint.reset();
> +
> +        // assert we can assert using other than string, eg numbers
> +        resultEndpoint.expectedHeaderReceived("number", 123);
> +        sendHeader("number", 123);
> +        resultEndpoint.assertIsSatisfied();
> +
> +        resultEndpoint.assertIsNotSatisfied();
> +    }
> +
>      protected void sendMessages(int... counters) {
>          for (int counter : counters) {
> -            template.sendBodyAndHeader("direct:a", createTestMessage(counter),
> -                    "counter", counter);
> +            template.sendBodyAndHeader("direct:a", createTestMessage(counter), "counter",
counter);
>          }
>      }
>  
> @@ -181,7 +193,7 @@
>          return list;
>      }   
>      
> -    protected void sendHeader(String name, String value) {
> +    protected void sendHeader(String name, Object value) {
>          template.sendBodyAndHeader("direct:a", "body", name, value);
>      }
>  
> 
> Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java?rev=749973&r1=749972&r2=749973&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
(original)
> +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
Wed Mar  4 12:06:11 2009
> @@ -38,6 +38,7 @@
>  
>          MockEndpoint endpoint = getMockEndpoint("mock:results");
>          endpoint.expectedMessageCount((int) dataSet.getSize());
> +        endpoint.expectedHeaderReceived("foo", 123);
>  
>          assertMockEndpointsSatisfied();
>  
> 
> 
> 


Mime
View raw message