You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2007/03/22 08:03:12 UTC
svn commit: r521139 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/test/java/org/apache/camel/builder/
camel-spring/src/main/java/org/apache/camel/spring/
camel-spring/src/main/resources/org/apache/camel/s...
Author: chirino
Date: Thu Mar 22 00:03:10 2007
New Revision: 521139
URL: http://svn.apache.org/viewvc?view=rev&rev=521139
Log:
Some substancial improvement of the CamelBeanDefinitionParser. It can now handle using builder sub statement to create arguments to builder methods.
This was needed to implement the filter case.
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/MyProcessor.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderAction.java
- copied, changed from r521037, activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderAction.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderStatement.java
- copied, changed from r521037, activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderStatement.java
Removed:
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderAction.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderStatement.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FilterBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FluentArg.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/ValueBuilder.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanDefinitionParser.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/MethodInfo.java
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFactory.java
activemq/camel/trunk/camel-spring/src/main/resources/org/apache/camel/spring/camel-1.0.xsd
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/examples.xml
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/BuilderSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java Thu Mar 22 00:03:10 2007
@@ -16,17 +16,17 @@
*/
package org.apache.camel.builder;
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
import org.apache.camel.processor.LoggingLevel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.util.List;
-import java.util.ArrayList;
-
/**
* Base class for implementation inheritance
*
@@ -55,14 +55,16 @@
/**
* Resolves the given URI to an endpoint
*/
- public Endpoint<E> endpoint(String uri) {
+ @Fluent
+ public Endpoint<E> endpoint(@FluentArg("uri") String uri) {
return getContext().resolveEndpoint(uri);
}
/**
* Resolves the list of URIs into a list of {@link Endpoint} instances
*/
- public List<Endpoint<E>> endpoints(String... uris) {
+ @Fluent
+ public List<Endpoint<E>> endpoints(@FluentArg("uris") String... uris) {
List<Endpoint<E>> endpoints = new ArrayList<Endpoint<E>>();
for (String uri : uris) {
endpoints.add(endpoint(uri));
@@ -73,7 +75,8 @@
/**
* Helper method to create a list of {@link Endpoint} instances
*/
- public List<Endpoint<E>> endpoints(Endpoint<E>... endpoints) {
+ @Fluent
+ public List<Endpoint<E>> endpoints(@FluentArg("endpoints") Endpoint<E>... endpoints) {
List<Endpoint<E>> answer = new ArrayList<Endpoint<E>>();
for (Endpoint<E> endpoint : endpoints) {
answer.add(endpoint);
@@ -87,7 +90,8 @@
/**
* Returns a predicate and value builder for headers on an exchange
*/
- public ValueBuilder<E> header(String name) {
+ @Fluent
+ public ValueBuilder<E> header(@FluentArg("name") String name) {
Expression<E> expression = ExpressionBuilder.headerExpression(name);
return new ValueBuilder<E>(expression);
}
@@ -95,6 +99,7 @@
/**
* Returns a predicate and value builder for the inbound body on an exchange
*/
+ @Fluent
public ValueBuilder<E> body() {
Expression<E> expression = ExpressionBuilder.bodyExpression();
return new ValueBuilder<E>(expression);
@@ -103,7 +108,8 @@
/**
* Returns a predicate and value builder for the inbound message body as a specific type
*/
- public <T> ValueBuilder<E> bodyAs(Class<T> type) {
+ @Fluent
+ public <T> ValueBuilder<E> bodyAs(@FluentArg("class") Class<T> type) {
Expression<E> expression = ExpressionBuilder.bodyExpression(type);
return new ValueBuilder<E>(expression);
}
@@ -111,6 +117,7 @@
/**
* Returns a predicate and value builder for the outbound body on an exchange
*/
+ @Fluent
public ValueBuilder<E> outBody() {
Expression<E> expression = ExpressionBuilder.bodyExpression();
return new ValueBuilder<E>(expression);
@@ -119,7 +126,8 @@
/**
* Returns a predicate and value builder for the outbound message body as a specific type
*/
- public <T> ValueBuilder<E> outBody(Class<T> type) {
+ @Fluent
+ public <T> ValueBuilder<E> outBody(@FluentArg("class") Class<T> type) {
Expression<E> expression = ExpressionBuilder.bodyExpression(type);
return new ValueBuilder<E>(expression);
}
@@ -127,6 +135,7 @@
/**
* Creates a disabled error handler for removing the default error handler
*/
+ @Fluent
public NoErrorHandlerBuilder<E> noErrorHandler() {
return new NoErrorHandlerBuilder<E>();
}
@@ -134,6 +143,7 @@
/**
* Creates an error handler which just logs errors
*/
+ @Fluent
public LoggingErrorHandlerBuilder<E> loggingErrorHandler() {
return new LoggingErrorHandlerBuilder<E>();
}
@@ -141,33 +151,39 @@
/**
* Creates an error handler which just logs errors
*/
- public LoggingErrorHandlerBuilder<E> loggingErrorHandler(String log) {
+ @Fluent
+ public LoggingErrorHandlerBuilder<E> loggingErrorHandler(@FluentArg("log") String log) {
return loggingErrorHandler(LogFactory.getLog(log));
}
/**
* Creates an error handler which just logs errors
*/
- public LoggingErrorHandlerBuilder<E> loggingErrorHandler(Log log) {
+ @Fluent
+ public LoggingErrorHandlerBuilder<E> loggingErrorHandler(@FluentArg("log") Log log) {
return new LoggingErrorHandlerBuilder<E>(log);
}
/**
* Creates an error handler which just logs errors
*/
- public LoggingErrorHandlerBuilder<E> loggingErrorHandler(Log log, LoggingLevel level) {
+ @Fluent
+ public LoggingErrorHandlerBuilder<E> loggingErrorHandler(@FluentArg("log") Log log, @FluentArg("level") LoggingLevel level) {
return new LoggingErrorHandlerBuilder<E>(log, level);
}
+ @Fluent
public DeadLetterChannelBuilder<E> deadLetterChannel() {
return new DeadLetterChannelBuilder<E>();
}
- public DeadLetterChannelBuilder<E> deadLetterChannel(String deadLetterUri) {
+ @Fluent
+ public DeadLetterChannelBuilder<E> deadLetterChannel(@FluentArg("uri") String deadLetterUri) {
return deadLetterChannel(endpoint(deadLetterUri));
}
- public DeadLetterChannelBuilder<E> deadLetterChannel(Endpoint<E> deadLetterEndpoint) {
+ @Fluent
+ public DeadLetterChannelBuilder<E> deadLetterChannel(@FluentArg("endpoint") Endpoint<E> deadLetterEndpoint) {
return new DeadLetterChannelBuilder<E>(deadLetterEndpoint);
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FilterBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FilterBuilder.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FilterBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FilterBuilder.java Thu Mar 22 00:03:10 2007
@@ -33,7 +33,7 @@
}
/**
- * Adds another predicate using a logican AND
+ * Adds another predicate using a logical AND
*/
public FilterBuilder<E> and(Predicate<E> predicate) {
this.predicate = PredicateBuilder.and(this.predicate, predicate);
@@ -41,7 +41,7 @@
}
/**
- * Adds another predicate using a logican OR
+ * Adds another predicate using a logical OR
*/
public FilterBuilder<E> or(Predicate<E> predicate) {
this.predicate = PredicateBuilder.or(this.predicate, predicate);
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FluentArg.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FluentArg.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FluentArg.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FluentArg.java Thu Mar 22 00:03:10 2007
@@ -28,4 +28,6 @@
@Target(ElementType.PARAMETER)
public @interface FluentArg {
String value();
+ boolean attribute() default true;
+ boolean element() default false;
}
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=521139&r1=521138&r2=521139
==============================================================================
--- 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 00:03:10 2007
@@ -16,6 +16,10 @@
*/
package org.apache.camel.builder;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Predicate;
@@ -26,10 +30,6 @@
import org.apache.camel.processor.Pipeline;
import org.apache.camel.processor.RecipientList;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
/**
* @version $Revision$
*/
@@ -124,7 +124,7 @@
* Adds the custom processor to this destination
*/
@Fluent
- public ConstantProcessorBuilder<E> process(@FluentArg("processor") Processor<E> processor) {
+ public ConstantProcessorBuilder<E> process(@FluentArg("ref") Processor<E> processor) {
ConstantProcessorBuilder<E> answer = new ConstantProcessorBuilder<E>(processor);
addProcessBuilder(answer);
return answer;
@@ -137,7 +137,9 @@
* @return the builder for a predicate
*/
@Fluent
- public FilterBuilder<E> filter(@FluentArg("predicate") Predicate<E> predicate) {
+ public FilterBuilder<E> filter(
+ @FluentArg(value="predicate",element=true)
+ Predicate<E> predicate) {
FilterBuilder<E> answer = new FilterBuilder<E>(this, predicate);
addProcessBuilder(answer);
return answer;
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java?view=auto&rev=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java Thu Mar 22 00:03:10 2007
@@ -0,0 +1,241 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.util.ObjectHelper;
+import static org.apache.camel.util.ObjectHelper.notNull;
+
+/**
+ * A helper class for working with predicates
+ *
+ * @version $Revision: 520261 $
+ */
+public class PredicateBuilder {
+ /**
+ * A helper method to combine multiple predicates by a logical AND
+ */
+ public static <E extends Exchange> Predicate<E> and(final Predicate<E> left, final Predicate<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ return left.evaluate(exchange) && right.evaluate(exchange);
+ }
+
+ @Override
+ public String toString() {
+ return "(" + left + ") and (" + right + ")";
+ }
+ };
+ }
+
+ /**
+ * A helper method to combine multiple predicates by a logical OR
+ */
+ public static <E extends Exchange> Predicate<E> or(final Predicate<E> left, final Predicate<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ return left.evaluate(exchange) || right.evaluate(exchange);
+ }
+
+ @Override
+ public String toString() {
+ return "(" + left + ") or (" + right + ")";
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isEqualTo(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.equals(value1, value2);
+ }
+
+ @Override
+ public String toString() {
+ return left + " == " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isNotEqualTo(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return !ObjectHelper.equals(value1, value2);
+ }
+
+ @Override
+ public String toString() {
+ return left + " != " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isLessThan(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.compare(value1, value2) < 0;
+ }
+
+ @Override
+ public String toString() {
+ return left + " < " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isLessThanOrEqualTo(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.compare(value1, value2) <= 0;
+ }
+
+ @Override
+ public String toString() {
+ return left + " <= " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isGreaterThan(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.compare(value1, value2) > 0;
+ }
+
+ @Override
+ public String toString() {
+ return left + " > " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isGreaterThanOrEqualTo(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.compare(value1, value2) >= 0;
+ }
+
+ @Override
+ public String toString() {
+ return left + " >= " + right;
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isInstanceOf(final Expression<E> expression, final Class type) {
+ notNull(expression, "expression");
+ notNull(type, "type");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value = expression.evaluate(exchange);
+ return type.isInstance(value);
+ }
+
+ @Override
+ public String toString() {
+ return expression + " instanceof " + type.getName();
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isNull(final Expression<E> expression) {
+ notNull(expression, "expression");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value = expression.evaluate(exchange);
+ return value == null;
+ }
+
+ @Override
+ public String toString() {
+ return expression + " == null";
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> isNotNull(final Expression<E> expression) {
+ notNull(expression, "expression");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value = expression.evaluate(exchange);
+ return value != null;
+ }
+
+ @Override
+ public String toString() {
+ return expression + " != null";
+ }
+ };
+ }
+
+ public static <E extends Exchange> Predicate<E> contains(final Expression<E> left, final Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ return new Predicate<E>() {
+ public boolean evaluate(E exchange) {
+ Object value1 = left.evaluate(exchange);
+ Object value2 = right.evaluate(exchange);
+ return ObjectHelper.contains(value1, value2);
+ }
+
+ @Override
+ public String toString() {
+ return left + ".contains(" + right + ")";
+ }
+ };
+ }
+}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java Thu Mar 22 00:03:10 2007
@@ -31,59 +31,71 @@
public ValueBuilder(Expression<E> expression) {
this.expression = expression;
}
+
+ public Expression<E> getExpression() {
+ return expression;
+ }
- public Predicate<E> isNotEqualTo(Object value) {
+ @Fluent
+ public Predicate<E> isNotEqualTo(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isNotEqualTo(expression, right);
}
- public Predicate<E> isEqualTo(Object value) {
+ @Fluent
+ public Predicate<E> isEqualTo(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isEqualTo(expression, right);
}
- public Predicate<E> isLessThan(Object value) {
+ @Fluent
+ public Predicate<E> isLessThan(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isLessThan(expression, right);
}
- public Predicate<E> isLessThanOrEqualTo(Object value) {
+ @Fluent
+ public Predicate<E> isLessThanOrEqualTo(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isLessThanOrEqualTo(expression, right);
}
- public Predicate<E> isGreaterThan(Object value) {
+ @Fluent
+ public Predicate<E> isGreaterThan(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isGreaterThan(expression, right);
}
- public Predicate<E> isGreaterThanOrEqualTo(Object value) {
+ @Fluent
+ public Predicate<E> isGreaterThanOrEqualTo(@FluentArg("value") Object value) {
Expression<E> right = ExpressionBuilder.constantExpression(value);
return PredicateBuilder.isGreaterThanOrEqualTo(expression, right);
}
- public Predicate<E> isInstanceOf(Class type) {
+ @Fluent
+ public Predicate<E> isInstanceOf(@FluentArg("class") Class type) {
return PredicateBuilder.isInstanceOf(expression, type);
}
+ @Fluent
public Predicate<E> isNull() {
return PredicateBuilder.isNull(expression);
}
+ @Fluent
public Predicate<E> isNotNull() {
return PredicateBuilder.isNotNull(expression);
}
- public Expression<E> getExpression() {
- return expression;
- }
+ @Fluent
public ValueBuilder<E> tokenize() {
return tokenize("\n");
}
- public ValueBuilder<E> tokenize(String token) {
+ @Fluent
+ public ValueBuilder<E> tokenize(@FluentArg("token") String token) {
Expression<E> newExp = ExpressionBuilder.tokenizeExpression(expression, token);
return new ValueBuilder<E>(newExp);
}
Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/MyProcessor.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/MyProcessor.java?view=auto&rev=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/MyProcessor.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/MyProcessor.java Thu Mar 22 00:03:10 2007
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+public class MyProcessor implements Processor<Exchange> {
+ public void onExchange(Exchange exchange) {
+ System.out.println("Called with exchange: " + exchange);
+ }
+
+ @Override
+ public String toString() {
+ return "MyProcessor";
+ }
+}
\ No newline at end of file
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java Thu Mar 22 00:03:10 2007
@@ -40,16 +40,8 @@
* @version $Revision$
*/
public class RouteBuilderTest extends TestSupport {
- protected Processor<Exchange> myProcessor = new Processor<Exchange>() {
- public void onExchange(Exchange exchange) {
- System.out.println("Called with exchange: " + exchange);
- }
-
- @Override
- public String toString() {
- return "MyProcessor";
- }
- };
+
+ protected Processor<Exchange> myProcessor = new MyProcessor();
private InterceptorProcessor<Exchange> interceptor1;
private InterceptorProcessor<Exchange> interceptor2;
Copied: activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderAction.java (from r521037, activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderAction.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderAction.java?view=diff&rev=521139&p1=activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderAction.java&r1=521037&p2=activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderAction.java&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderAction.java (original)
+++ activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderAction.java Thu Mar 22 00:03:10 2007
@@ -8,17 +8,17 @@
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.RuntimeBeanReference;
-public class RouteBuilderAction {
+public class BuilderAction {
private final MethodInfo methodInfo;
private final HashMap<String, Object> parameterValues;
- public RouteBuilderAction(MethodInfo methodInfo, HashMap<String, Object> parameterValues) {
+ public BuilderAction(MethodInfo methodInfo, HashMap<String, Object> parameterValues) {
this.methodInfo = methodInfo;
this.parameterValues = parameterValues;
}
- public Object invoke(BeanFactory beanFactory, Object builder) {
+ public Object invoke(BeanFactory beanFactory, Object rootBuilder, Object contextBuilder) {
SimpleTypeConverter converter = new SimpleTypeConverter();
Object args[] = new Object[methodInfo.parameters.size()];
int pos=0;
@@ -30,13 +30,17 @@
if( value.getClass() == RuntimeBeanReference.class ) {
value = beanFactory.getBean(((RuntimeBeanReference)value).getBeanName());
}
+ if( value.getClass() == BuilderStatement.class ) {
+ BuilderStatement bs = (BuilderStatement) value;
+ value = bs.create(beanFactory, rootBuilder);
+ }
args[pos] = converter.convertIfNecessary(value, paramClass);
}
}
try {
- return methodInfo.method.invoke(builder, args);
+ return methodInfo.method.invoke(contextBuilder, args);
} catch (InvocationTargetException e) {
throw new IllegalArgumentException(e.getCause());
} catch (RuntimeException e) {
Copied: activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderStatement.java (from r521037, activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderStatement.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderStatement.java?view=diff&rev=521139&p1=activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderStatement.java&r1=521037&p2=activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderStatement.java&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderStatement.java (original)
+++ activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/BuilderStatement.java Thu Mar 22 00:03:10 2007
@@ -4,26 +4,37 @@
import org.springframework.beans.factory.BeanFactory;
-public class RouteBuilderStatement {
- private ArrayList<RouteBuilderAction> actions;
+public class BuilderStatement {
+ private ArrayList<BuilderAction> actions;
+ private Class returnType;
- public void create(BeanFactory beanFactory, Object builder) {
- Object currentBuilder = builder;
- RouteBuilderAction lastAction=null;
- for (RouteBuilderAction action : actions) {
+ public Object create(BeanFactory beanFactory, Object rootBuilder) {
+ Object currentBuilder = rootBuilder;
+ BuilderAction lastAction=null;
+ for (BuilderAction action : actions) {
// The last action may have left us without a builder to invoke next!
- if( builder == null ) {
- throw new IllegalArgumentException("Invalid route configuration. The '"+lastAction.getName()+"' action cannot be followed by the '"+action.getName()+"' action.");
+ if( currentBuilder == null ) {
+ throw new IllegalArgumentException("Invalid configuration. The '"+lastAction.getName()+"' action cannot be followed by the '"+action.getName()+"' action.");
}
- currentBuilder = action.invoke(beanFactory, currentBuilder);
+ currentBuilder = action.invoke(beanFactory, rootBuilder, currentBuilder);
lastAction = action;
}
+ return currentBuilder;
}
- public ArrayList<RouteBuilderAction> getActions() {
+ public ArrayList<BuilderAction> getActions() {
return actions;
}
- public void setActions(ArrayList<RouteBuilderAction> actions) {
+ public void setActions(ArrayList<BuilderAction> actions) {
this.actions = actions;
}
+
+ public Class getReturnType() {
+ return returnType;
+ }
+ public void setReturnType(Class returnType) {
+ this.returnType = returnType;
+
+ }
+
}
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=521139&r1=521138&r2=521139
==============================================================================
--- 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 00:03:10 2007
@@ -7,6 +7,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
@@ -19,6 +20,7 @@
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
@@ -30,15 +32,15 @@
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(RouteBuilderFactory.class);
-
+
List childElements = DomUtils.getChildElementsByTagName(element, "route");
- ArrayList<RouteBuilderStatement> routes = new ArrayList<RouteBuilderStatement>(childElements.size());
+ ArrayList<BuilderStatement> routes = new ArrayList<BuilderStatement>(childElements.size());
if (childElements != null && childElements.size() > 0) {
for (int i = 0; i < childElements.size(); ++i) {
Element routeElement = (Element) childElements.get(i);
- RouteBuilderStatement def = parseRouteElement(routeElement);
- routes.add(def);
+ BuilderStatement statement = parseRouteElement(routeElement);
+ routes.add(statement);
}
}
@@ -46,96 +48,199 @@
return factory.getBeanDefinition();
}
- /**
+ /**
* Use reflection to figure out what is the valid next element.
*
* @param routeElement
* @return
*/
- private RouteBuilderStatement parseRouteElement(Element element) {
- RouteBuilderStatement rc = new RouteBuilderStatement();
+ private BuilderStatement parseRouteElement(Element element) {
+ BuilderStatement rc = new BuilderStatement();
Class currentBuilder = RouteBuilder.class;
-
+
NodeList childElements = element.getChildNodes();
- ArrayList<RouteBuilderAction> actions = new ArrayList<RouteBuilderAction>(childElements.getLength());
+ ArrayList<BuilderAction> actions = new ArrayList<BuilderAction>(childElements.getLength());
if (childElements != null && childElements.getLength() > 0) {
- Element previousElement=null;
+ Element previousElement = null;
for (int i = 0; i < childElements.getLength(); ++i) {
Node node = childElements.item(i);
- if( node.getNodeType() == Node.ELEMENT_NODE ) {
- currentBuilder = parseAction(currentBuilder, actions, (Element)node, previousElement);
- previousElement = (Element)node;
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ currentBuilder = parseAction(currentBuilder, actions, (Element) node, previousElement);
+ previousElement = (Element) node;
}
}
}
-
+
+ rc.setReturnType(currentBuilder);
rc.setActions(actions);
return rc;
}
- private Class parseAction(Class currentBuilder, ArrayList<RouteBuilderAction> actions, Element element, Element previousElement) {
-
+ private Class parseAction(Class currentBuilder, ArrayList<BuilderAction> actions, Element element, Element previousElement) {
+
String actionName = element.getLocalName();
-
+
// Get a list of method names that match the action.
- ArrayList<MethodInfo> methods = findFluentMethodsWithName( currentBuilder, element.getLocalName() );
- if( methods.isEmpty() ) {
- throw new IllegalRouteException(actionName, previousElement==null? null : previousElement.getLocalName());
+ ArrayList<MethodInfo> methods = findFluentMethodsWithName(currentBuilder, element.getLocalName());
+ if (methods.isEmpty()) {
+ throw new IllegalRouteException(actionName, previousElement == null ? null : previousElement.getLocalName());
}
-
- // Pick the best method out of the list. Sort by argument length. Pick first longest match.
- Collections.sort(methods, new Comparator<MethodInfo>(){
+
+ // Pick the best method out of the list. Sort by argument length. Pick
+ // first longest match.
+ Collections.sort(methods, new Comparator<MethodInfo>() {
public int compare(MethodInfo m1, MethodInfo m2) {
- return m1.method.getParameterTypes().length - m2.method.getParameterTypes().length;
+ return m1.method.getParameterTypes().length - m2.method.getParameterTypes().length;
}
});
+
+ // Build the possible list of arguments from the attributes and child
+ // elements
+ HashMap<String, Object> attributeArguments = getArugmentsFromAttributes(element);
+ HashMap<String, ArrayList<Element>> elementArguments = getArgumentsFromElements(element);
+
+ // Find the first method that we can supply arguments for.
+ MethodInfo match = null;
+ match = findMethodMatch(methods, attributeArguments.keySet(), elementArguments.keySet());
+ if (match == null)
+ throw new IllegalRouteException(actionName, previousElement == null ? null : previousElement.getLocalName());
+
+ // Move element arguments into the attributeArguments map if needed.
+ Set<String> parameterNames = new HashSet<String>(match.parameters.keySet());
+ parameterNames.removeAll(attributeArguments.keySet());
+ for (String key : parameterNames) {
+ ArrayList<Element> elements = elementArguments.get(key);
+ Class clazz = match.parameters.get(key);
+ Object value = convertTo(elements, clazz);
+ attributeArguments.put(key, value);
+ for (Element el : elements) {
+ // remove the argument nodes so that they don't get interpreted as
+ // actions.
+ el.getParentNode().removeChild(el);
+ }
+ }
- // Build an ordered list of the element attributes.
- HashMap<String, Object> attributes = getAttributes(element);
-
- // Do we have enough parameters for this action.
- MethodInfo match=findBestMethod(methods, attributes);
- if( match == null )
- throw new IllegalRouteException(actionName, previousElement==null? null : previousElement.getLocalName());
-
- actions.add( new RouteBuilderAction(match, attributes) );
+ actions.add(new BuilderAction(match, attributeArguments));
return match.method.getReturnType();
}
- private MethodInfo findBestMethod(ArrayList<MethodInfo> methods, HashMap<String, Object> attributes) {
- Set<String> attributeNames = attributes.keySet();
- for (MethodInfo method : methods) {
- Set<String> parameterNames = method.parameters.keySet();
+ private Object convertTo(ArrayList<Element> 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.");
+ } else {
+
+ Element element = elements.get(0);
+ String ref = element.getAttribute("ref");
+ if( StringUtils.hasText(ref) ) {
+ return new RuntimeBeanReference(ref);
+ }
- // If all the parameters are specified as parameters.
- if( attributeNames.size()==parameterNames.size()
- && attributeNames.containsAll(parameterNames)) {
+ BuilderStatement statement = parseRouteElement(element);
+ if( !clazz.isAssignableFrom( statement.getReturnType() ) ) {
+ throw new IllegalStateException("Builder does not produce object of expected type: "+clazz.getName());
+ }
+ return statement;
+ }
+ }
+
+ private MethodInfo findMethodMatch(ArrayList<MethodInfo> methods, Set<String> attributeNames, Set<String> elementNames) {
+ for (MethodInfo method : methods) {
+
+ // make sure all the given attribute parameters can be assigned via
+ // attributes
+ boolean miss = false;
+ for (String key : attributeNames) {
+ FluentArg arg = method.annotations.get(key);
+ if (arg == null || !arg.attribute()) {
+ miss = true;
+ break;
+ }
+ }
+ if (miss)
+ continue; // Keep looking...
+
+ Set<String> parameterNames = new HashSet<String>(method.parameters.keySet());
+ parameterNames.removeAll(attributeNames);
+
+ // Bingo we found a match.
+ if (parameterNames.isEmpty()) {
+ return method;
+ }
+
+ // We may still be able to match using elements as parameters.
+ for (String key : elementNames) {
+ if (parameterNames.isEmpty()) {
+ break;
+ }
+ // We only want to use the first child elements as arguments,
+ // once we don't match, we can stop looking.
+ FluentArg arg = method.annotations.get(key);
+ if (arg == null || !arg.element()) {
+ break;
+ }
+ if (!parameterNames.remove(key)) {
+ break;
+ }
+ }
+
+ // All parameters found! We have a match!
+ if (parameterNames.isEmpty()) {
return method;
}
+
}
return null;
}
- private HashMap<String, Object> getAttributes(Element element) {
+ private LinkedHashMap<String, ArrayList<Element>> getArgumentsFromElements(Element element) {
+ LinkedHashMap<String, ArrayList<Element>> elements = new LinkedHashMap<String, ArrayList<Element>>();
+ NodeList childNodes = element.getChildNodes();
+ String lastTag = null;
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node node = childNodes.item(i);
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element el = (Element) node;
+ String tag = el.getLocalName();
+ ArrayList<Element> els = elements.get(tag);
+ if (els == null) {
+ els = new ArrayList<Element>();
+ elements.put(el.getLocalName(), els);
+ els.add(el);
+ lastTag = tag;
+ } else {
+ // add to array if the elements are consecutive
+ if (tag.equals(lastTag)) {
+ els.add(el);
+ lastTag = tag;
+ }
+ }
+ }
+ }
+ return elements;
+ }
+
+ private HashMap<String, Object> getArugmentsFromAttributes(Element element) {
HashMap<String, Object> attributes = new HashMap<String, Object>();
NamedNodeMap childNodes = element.getAttributes();
- for( int i=0; i < childNodes.getLength(); i++) {
+ for (int i = 0; i < childNodes.getLength(); i++) {
Node node = childNodes.item(i);
- if( node.getNodeType() == Node.ATTRIBUTE_NODE ) {
+ if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
Attr attr = (Attr) node;
-
+
String str = attr.getValue();
Object value = str;
-
+
// If the value starts with # then it's a bean reference
- if( str.startsWith("#")) {
+ if (str.startsWith("#")) {
str = str.substring(1);
// Support using ## to escape the bean reference feature.
- if( !str.startsWith("#")) {
+ if (!str.startsWith("#")) {
value = new RuntimeBeanReference(str);
- }
+ }
}
-
+
attributes.put(attr.getName(), value);
}
}
@@ -144,8 +249,9 @@
/**
* Finds all the methods on the clazz that match the name and which have the
- * {@see Fluent} annotation and whoes parameters have the {@see FluentArg} annotation.
- *
+ * {@see Fluent} annotation and whoes parameters have the {@see FluentArg}
+ * annotation.
+ *
* @param clazz
* @param name
* @return
@@ -155,30 +261,31 @@
Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
- if( name.equals(method.getName())) {
-
- if( !method.isAnnotationPresent(Fluent.class) ) {
+ if (name.equals(method.getName())) {
+
+ if (!method.isAnnotationPresent(Fluent.class)) {
List<Annotation> l = Arrays.asList(method.getAnnotations());
System.out.println(l);
continue;
}
-
-
+
LinkedHashMap<String, Class> map = new LinkedHashMap<String, Class>();
+ LinkedHashMap<String, FluentArg> amap = new LinkedHashMap<String, FluentArg>();
Class<?>[] parameters = method.getParameterTypes();
for (int j = 0; j < parameters.length; j++) {
Class<?> parameter = parameters[j];
FluentArg annotation = getParameterAnnotation(FluentArg.class, method, j);
- if( annotation!=null ) {
+ if (annotation != null) {
map.put(annotation.value(), parameter);
+ amap.put(annotation.value(), annotation);
} else {
break;
}
}
-
+
// If all the parameters were annotated...
- if( parameters.length == map.size() ) {
- rc.add(new MethodInfo(method, map));
+ if (parameters.length == map.size()) {
+ rc.add(new MethodInfo(method, map, amap));
}
}
}
@@ -188,8 +295,8 @@
private <T> T getParameterAnnotation(Class<T> annotationClass, Method method, int index) {
Annotation[] annotations = method.getParameterAnnotations()[index];
for (int i = 0; i < annotations.length; i++) {
- if( annotationClass.isAssignableFrom(annotations[i].getClass()) ) {
- return (T)annotations[i];
+ if (annotationClass.isAssignableFrom(annotations[i].getClass())) {
+ return (T) annotations[i];
}
}
return null;
Modified: activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/MethodInfo.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/MethodInfo.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/MethodInfo.java (original)
+++ activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/MethodInfo.java Thu Mar 22 00:03:10 2007
@@ -6,15 +6,17 @@
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
-import org.springframework.beans.BeanWrapperImpl;
+import org.apache.camel.builder.FluentArg;
public class MethodInfo {
final Method method;
final LinkedHashMap<String, Class> parameters;
+ final LinkedHashMap<String, FluentArg> annotations;
- public MethodInfo(Method method, LinkedHashMap<String, Class> parameters) {
+ public MethodInfo(Method method, LinkedHashMap<String, Class> parameters, LinkedHashMap<String, FluentArg> annotations) {
this.method=method;
this.parameters=parameters;
+ this.annotations = annotations;
}
public String getName() {
Modified: activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFactory.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFactory.java?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFactory.java (original)
+++ activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFactory.java Thu Mar 22 00:03:10 2007
@@ -9,25 +9,25 @@
import org.springframework.beans.factory.FactoryBean;
public class RouteBuilderFactory implements FactoryBean, BeanFactoryAware {
- private ArrayList<RouteBuilderStatement> routes;
+ private ArrayList<BuilderStatement> routes;
private boolean singleton;
private BeanFactory beanFactory;
class SpringRouteBuilder extends RouteBuilder {
- private ArrayList<RouteBuilderStatement> routes;
+ private ArrayList<BuilderStatement> routes;
private BeanFactory beanFactory;
@Override
public void configure() {
- for (RouteBuilderStatement routeFactory : routes) {
+ for (BuilderStatement routeFactory : routes) {
routeFactory.create(beanFactory, this);
}
}
- public ArrayList<RouteBuilderStatement> getRoutes() {
+ public ArrayList<BuilderStatement> getRoutes() {
return routes;
}
- public void setRoutes(ArrayList<RouteBuilderStatement> routes) {
+ public void setRoutes(ArrayList<BuilderStatement> routes) {
this.routes = routes;
}
@@ -54,10 +54,10 @@
this.singleton = singleton;
}
- public ArrayList<RouteBuilderStatement> getRoutes() {
+ public ArrayList<BuilderStatement> getRoutes() {
return routes;
}
- public void setRoutes(ArrayList<RouteBuilderStatement> routes) {
+ public void setRoutes(ArrayList<BuilderStatement> routes) {
this.routes = routes;
}
Modified: activemq/camel/trunk/camel-spring/src/main/resources/org/apache/camel/spring/camel-1.0.xsd
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/resources/org/apache/camel/spring/camel-1.0.xsd?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/main/resources/org/apache/camel/spring/camel-1.0.xsd (original)
+++ activemq/camel/trunk/camel-spring/src/main/resources/org/apache/camel/spring/camel-1.0.xsd Thu Mar 22 00:03:10 2007
@@ -97,7 +97,7 @@
<xs:complexType>
<xs:sequence>
<xs:element ref="c:header"/>
- <xs:element ref="c:equalTo"/>
+ <xs:element ref="c:isEqualTo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -106,7 +106,7 @@
<xs:attribute name="name" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
- <xs:element name="equalTo">
+ <xs:element name="isEqualTo">
<xs:complexType>
<xs:attribute name="value" use="required" type="xs:NCName"/>
</xs:complexType>
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=521139&r1=521138&r2=521139
==============================================================================
--- 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 00:03:10 2007
@@ -61,8 +61,10 @@
@Override
protected RouteBuilder<Exchange> buildCustomProcessorWithFilter() {
- // TODO Auto-generated method stub
- return super.buildCustomProcessorWithFilter();
+ myProcessor = (Processor<Exchange>) ctx.getBean("myProcessor");
+ RouteBuilder<Exchange> builder = (RouteBuilder<Exchange>) ctx.getBean("buildCustomProcessorWithFilter");
+ assertNotNull(builder);
+ return builder;
}
@Override
Modified: activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/examples.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/examples.xml?view=diff&rev=521139&r1=521138&r2=521139
==============================================================================
--- activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/examples.xml (original)
+++ activemq/camel/trunk/camel-spring/src/test/resources/org/apache/camel/spring/examples.xml Thu Mar 22 00:03:10 2007
@@ -21,6 +21,11 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/camel/schema/camel-1.0.xsd http://activemq.apache.org/camel/schema/camel-1.0.xsd
">
+
+ <!--
+ put all combinations of possible usages in this file so that XML->XSD converters
+ (like trang) can generate a pretty good XSD.
+ -->
<routeBuilder id="buildSimpleRoute" xmlns="http://activemq.apache.org/camel/schema/camel-1.0.xsd">
</routeBuilder>
@@ -53,13 +58,13 @@
<filter>
<predicate>
<header name="foo"/>
- <equalTo value="bar"/>
+ <isEqualTo value="bar"/>
</predicate>
</filter>
<filter>
<predicate>
<header name="foo"/>
- <equalTo value="bar"/>
+ <isEqualTo value="bar"/>
</predicate>
</filter>
<process ref="#myProcessor"/>
@@ -84,14 +89,14 @@
<when>
<predicate>
<header name="foo"/>
- <equalTo value="bar"/>
+ <isEqualTo value="bar"/>
</predicate>
<to uri="queue:b"/>
</when>
<when>
<predicate>
<header name="foo"/>
- <equalTo value="cheese"/>
+ <isEqualTo value="cheese"/>
</predicate>
<to endpoint="queue:c"/>
</when>
@@ -106,7 +111,7 @@
<filter>
<predicate>
<header name="foo"/>
- <equalTo value="bar"/>
+ <isEqualTo value="bar"/>
</predicate>
</filter>
<to uri="queue:b"/>
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=521139&r1=521138&r2=521139
==============================================================================
--- 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 00:03:10 2007
@@ -44,23 +44,19 @@
</routeBuilder>
<!--
- from("queue:a").filter(headerEquals("foo", "bar")).process(myProcessor);
+ from("queue:a").filter(header("foo").isEqualTo("bar")).process(myProcessor);
-->
<routeBuilder id="buildCustomProcessorWithFilter" xmlns="http://activemq.apache.org/camel/schema/camel-1.0.xsd">
- <!--
<route>
<from uri="queue:a"/>
<filter>
- <predicate>
- <header name="foo"/>
- <equalTo value="bar"/>
- </predicate>
+ <predicate>
+ <header name="foo"/>
+ <isEqualTo value="bar"/>
+ </predicate>
</filter>
- <processor>
- <s:bean class="some.Processor"/>
- </processor>
+ <process ref="#myProcessor"/>
</route>
- -->
</routeBuilder>
<!--