Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 4168 invoked from network); 22 Mar 2007 18:34:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Mar 2007 18:34:18 -0000 Received: (qmail 90687 invoked by uid 500); 22 Mar 2007 18:34:25 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 90667 invoked by uid 500); 22 Mar 2007 18:34:25 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 90649 invoked by uid 99); 22 Mar 2007 18:34:25 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Mar 2007 11:34:25 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Mar 2007 11:34:16 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id D052F1A983E; Thu, 22 Mar 2007 11:33:56 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r521399 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/builder/ camel-spring/src/main/java/org/apache/camel/spring/ camel-spring/src/test/java/org/apache/camel/spring/ camel-spring/src/test/resources/org/apache/camel/... Date: Thu, 22 Mar 2007 18:33:56 -0000 To: commits@activemq.apache.org From: chirino@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070322183356.D052F1A983E@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: chirino Date: Thu Mar 22 11:33:54 2007 New Revision: 521399 URL: http://svn.apache.org/viewvc?view=rev&rev=521399 Log: Added needed support for the wire tap impl.. It can now inject array values into builders. Removed: activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringXMLExtensionTest.java activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_xml_extension_test.xml Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ChoiceBuilder.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FromBuilder.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/WhenBuilder.java activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringRouteBuilderTest.java activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_route_builder_test.xml Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ChoiceBuilder.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ChoiceBuilder.java?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ChoiceBuilder.java (original) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ChoiceBuilder.java Thu Mar 22 11:33:54 2007 @@ -44,12 +44,16 @@ * * @return a builder for creating a when predicate clause and action */ - public WhenBuilder when(Predicate predicate) { + @Fluent(nestedActions=true) + public WhenBuilder when( + @FluentArg(value="predicate",element=true) + Predicate predicate) { WhenBuilder answer = new WhenBuilder(this, predicate); predicateBuilders.add(answer); return answer; } + @Fluent(nestedActions=true) public FromBuilder otherwise() { this.otherwise = new FromBuilder(parent); return otherwise; Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FromBuilder.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FromBuilder.java?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FromBuilder.java (original) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FromBuilder.java Thu Mar 22 11:33:54 2007 @@ -73,7 +73,9 @@ * Sends the exchange to a list of endpoints using the {@link MulticastProcessor} pattern */ @Fluent - public ProcessorFactory to(@FluentArg("uris") String... uris) { + public ProcessorFactory to( + @FluentArg(value="uri", attribute=false, element=true) + String... uris) { return to(endpoints(uris)); } @@ -81,7 +83,9 @@ * Sends the exchange to a list of endpoints using the {@link MulticastProcessor} pattern */ @Fluent - public ProcessorFactory to(@FluentArg("endpoints") Endpoint... endpoints) { + public ProcessorFactory to( + @FluentArg(value="endpoint", attribute=false, element=true) + Endpoint... endpoints) { return to(endpoints(endpoints)); } @@ -150,7 +154,7 @@ * * @return the builder for a choice expression */ - @Fluent + @Fluent(nestedActions=true) public ChoiceBuilder choice() { ChoiceBuilder answer = new ChoiceBuilder(this); addProcessBuilder(answer); Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/WhenBuilder.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/WhenBuilder.java?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/WhenBuilder.java (original) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/WhenBuilder.java Thu Mar 22 11:33:54 2007 @@ -33,13 +33,15 @@ } @Override - public ChoiceBuilder to(Endpoint endpoint) { + @Fluent + public ChoiceBuilder to(@FluentArg("endpoint") Endpoint endpoint) { super.to(endpoint); return parent; } @Override - public ChoiceBuilder to(String uri) { + @Fluent + public ChoiceBuilder to(@FluentArg("uri") String uri) { super.to(uri); return parent; } Modified: activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java (original) +++ activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java Thu Mar 22 11:33:54 2007 @@ -1,6 +1,7 @@ package org.apache.camel.spring; import java.lang.annotation.Annotation; +import java.lang.reflect.Array; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; @@ -14,6 +15,7 @@ import org.apache.camel.builder.Fluent; import org.apache.camel.builder.FluentArg; import org.apache.camel.builder.RouteBuilder; +import org.springframework.beans.SimpleTypeConverter; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; @@ -74,11 +76,8 @@ currentBuilder = parseBuilderElement((Element) node, currentBuilder, actions); } else { // Make sure the there are no child elements. - NodeList nl = node.getChildNodes(); - for (int j = 0; j < nl.getLength(); ++j) { - if( nl.item(j).getNodeType() == Node.ELEMENT_NODE ) { - throw new IllegalArgumentException("The element "+node.getLocalName()+" should not have any child elements."); - } + if( hasChildElements(node) ) { + throw new IllegalArgumentException("The element "+node.getLocalName()+" should not have any child elements."); } } @@ -106,6 +105,16 @@ return currentBuilder; } + private boolean hasChildElements(Node node) { + NodeList nl = node.getChildNodes(); + for (int j = 0; j < nl.getLength(); ++j) { + if( nl.item(j).getNodeType() == Node.ELEMENT_NODE ) { + return true; + } + } + return false; + } + private Class parseAction(Class currentBuilder, ArrayList actions, Element element, Element previousElement) { String actionName = element.getLocalName(); @@ -157,8 +166,14 @@ private Object convertTo(ArrayList elements, Class clazz) { if( clazz.isArray() || elements.size() > 1 ) { - // TODO: we could support arrays one day soon. - throw new IllegalStateException("We don't support injecting array values."); + Object array = Array.newInstance(clazz.getComponentType(), elements.size()); + for( int i=0; i < elements.size(); i ++ ) { + ArrayList e = new ArrayList(1); + e.add(elements.get(i)); + Object value = convertTo(e, clazz.getComponentType()); + Array.set(array, i, value); + } + return array; } else { Element element = elements.get(0); @@ -167,17 +182,25 @@ return new RuntimeBeanReference(ref); } - ArrayList actions = new ArrayList(); - Class type = parseBuilderElement(element, RouteBuilder.class, actions); - BuilderStatement statement = new BuilderStatement(); - statement.setReturnType(type); - statement.setActions(actions); - - if( !clazz.isAssignableFrom( statement.getReturnType() ) ) { - throw new IllegalStateException("Builder does not produce object of expected type: "+clazz.getName()); + // Use a builder to create the value.. + if( hasChildElements(element) ) { + + ArrayList actions = new ArrayList(); + Class type = parseBuilderElement(element, RouteBuilder.class, actions); + BuilderStatement statement = new BuilderStatement(); + statement.setReturnType(type); + statement.setActions(actions); + + if( !clazz.isAssignableFrom( statement.getReturnType() ) ) { + throw new IllegalStateException("Builder does not produce object of expected type: "+clazz.getName()); + } + + return statement; + } else { + // Just use the text in the element as the value. + SimpleTypeConverter converter = new SimpleTypeConverter(); + return converter.convertIfNecessary(element.getTextContent(), clazz); } - - return statement; } } Modified: activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringRouteBuilderTest.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringRouteBuilderTest.java?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringRouteBuilderTest.java (original) +++ activemq/camel/trunk/camel-spring/src/test/java/org/apache/camel/spring/SpringRouteBuilderTest.java Thu Mar 22 11:33:54 2007 @@ -78,20 +78,24 @@ } @Override - protected RouteBuilder buildSimpleRouteWithChoice() { - // TODO Auto-generated method stub - return super.buildSimpleRouteWithChoice(); + protected RouteBuilder buildSimpleRouteWithHeaderPredicate() { + RouteBuilder builder = (RouteBuilder) ctx.getBean("buildSimpleRouteWithHeaderPredicate"); + assertNotNull(builder); + return builder; } - + @Override - protected RouteBuilder buildSimpleRouteWithHeaderPredicate() { - // TODO Auto-generated method stub - return super.buildSimpleRouteWithHeaderPredicate(); + protected RouteBuilder buildSimpleRouteWithChoice() { + RouteBuilder builder = (RouteBuilder) ctx.getBean("buildSimpleRouteWithChoice"); + assertNotNull(builder); + return builder; } + @Override protected RouteBuilder buildWireTap() { - // TODO Auto-generated method stub - return super.buildWireTap(); + RouteBuilder builder = (RouteBuilder) ctx.getBean("buildWireTap"); + assertNotNull(builder); + return builder; } } Modified: activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_route_builder_test.xml URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_route_builder_test.xml?view=diff&rev=521399&r1=521398&r2=521399 ============================================================================== --- activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_route_builder_test.xml (original) +++ activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/spring_route_builder_test.xml Thu Mar 22 11:33:54 2007 @@ -86,22 +86,20 @@ .otherwise().to("queue:d"); --> - - -