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/04/05 12:17:43 UTC
svn commit: r1309735 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/ main/java/org/apache/camel/builder/
main/java/org/apache/camel/impl/ main/java/org/apache/camel/model/
main/java/org/apache/camel/util/ test/java/org/apache/camel/proces...
Author: davsclaus
Date: Thu Apr 5 10:17:42 2012
New Revision: 1309735
URL: http://svn.apache.org/viewvc?rev=1309735&view=rev
Log:
CAMEL-5129: Fixed interceptFrom to support property placeholders.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromPropertyPlaceholderTest.java
camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/
camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/myproperties.properties
- copied, changed from r1309668, camel/trunk/camel-core/src/test/resources/org/apache/camel/component/properties/myproperties.properties
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/EndpointHelper.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Thu Apr 5 10:17:42 2012
@@ -308,7 +308,7 @@ public interface CamelContext extends Su
* @param pattern an uri or pattern to match
* @return a collection of endpoints removed which could be empty if there are no endpoints found for the given <tt>pattern</tt>
* @throws Exception if at least one endpoint could not be stopped
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String) for pattern
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(CamelContext, String, String) for pattern
*/
Collection<Endpoint> removeEndpoints(String pattern) throws Exception;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java Thu Apr 5 10:17:42 2012
@@ -82,7 +82,7 @@ public abstract class AdviceWithRouteBui
*
* @param pattern the pattern(s).
* @throws Exception can be thrown if error occurred
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public void mockEndpoints(String... pattern) throws Exception {
for (String s : pattern) {
@@ -95,7 +95,7 @@ public abstract class AdviceWithRouteBui
*
* @param pattern the pattern(s).
* @throws Exception can be thrown if error occurred
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public void mockEndpointsAndSkip(String... pattern) throws Exception {
for (String s : pattern) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java Thu Apr 5 10:17:42 2012
@@ -101,7 +101,7 @@ public class NotifyBuilder {
*
* @param endpointUri uri of endpoint or pattern (see the EndpointHelper javadoc)
* @return the builder
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public NotifyBuilder from(final String endpointUri) {
stack.add(new EventPredicateSupport() {
@@ -115,7 +115,7 @@ public class NotifyBuilder {
@Override
public boolean onExchange(Exchange exchange) {
// filter non matching exchanges
- return EndpointHelper.matchEndpoint(exchange.getFromEndpoint().getEndpointUri(), endpointUri);
+ return EndpointHelper.matchEndpoint(context, exchange.getFromEndpoint().getEndpointUri(), endpointUri);
}
public boolean matches() {
@@ -137,7 +137,7 @@ public class NotifyBuilder {
*
* @param routeId id of route or pattern (see the EndpointHelper javadoc)
* @return the builder
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public NotifyBuilder fromRoute(final String routeId) {
stack.add(new EventPredicateSupport() {
@@ -282,7 +282,7 @@ public class NotifyBuilder {
*
* @param endpointUri uri of endpoint or pattern (see the EndpointHelper javadoc)
* @return the builder
- * @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
+ * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public NotifyBuilder wereSentTo(final String endpointUri) {
// insert in start of stack but after the previous wereSentTo
@@ -304,7 +304,7 @@ public class NotifyBuilder {
@Override
public boolean onExchangeSent(Exchange exchange, Endpoint endpoint, long timeTaken) {
- if (EndpointHelper.matchEndpoint(endpoint.getEndpointUri(), endpointUri)) {
+ if (EndpointHelper.matchEndpoint(context, endpoint.getEndpointUri(), endpointUri)) {
sentTo = true;
}
return onExchange(exchange);
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Thu Apr 5 10:17:42 2012
@@ -393,7 +393,7 @@ public class DefaultCamelContext extends
} else {
for (Map.Entry<EndpointKey, Endpoint> entry : endpoints.entrySet()) {
oldEndpoint = entry.getValue();
- if (EndpointHelper.matchEndpoint(oldEndpoint.getEndpointUri(), uri)) {
+ if (EndpointHelper.matchEndpoint(this, oldEndpoint.getEndpointUri(), uri)) {
try {
stopServices(oldEndpoint);
answer.add(oldEndpoint);
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java Thu Apr 5 10:17:42 2012
@@ -52,7 +52,7 @@ public class InterceptSendToMockEndpoint
* Mock endpoints based on the given pattern.
*
* @param pattern the pattern.
- * @see EndpointHelper#matchEndpoint(String, String)
+ * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public InterceptSendToMockEndpointStrategy(String pattern) {
this(pattern, false);
@@ -63,7 +63,7 @@ public class InterceptSendToMockEndpoint
*
* @param pattern the pattern.
* @param skip <tt>true</tt> to skip sending after the detour to the original endpoint
- * @see EndpointHelper#matchEndpoint(String, String)
+ * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
*/
public InterceptSendToMockEndpointStrategy(String pattern, boolean skip) {
this.pattern = pattern;
@@ -77,7 +77,7 @@ public class InterceptSendToMockEndpoint
} else if (endpoint instanceof MockEndpoint) {
// we should not intercept mock endpoints
return endpoint;
- } else if (uri == null || pattern == null || EndpointHelper.matchEndpoint(uri, pattern)) {
+ } else if (uri == null || pattern == null || EndpointHelper.matchEndpoint(endpoint.getCamelContext(), uri, pattern)) {
// if pattern is null then it mean to match all
// only proxy if the uri is matched decorate endpoint with our proxy
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java Thu Apr 5 10:17:42 2012
@@ -80,7 +80,7 @@ public class InterceptSendToEndpointDefi
}
@Override
- public Processor createProcessor(RouteContext routeContext) throws Exception {
+ public Processor createProcessor(final RouteContext routeContext) throws Exception {
// create the detour
final Processor detour = this.createChildProcessor(routeContext, true);
@@ -90,7 +90,7 @@ public class InterceptSendToEndpointDefi
if (endpoint instanceof InterceptSendToEndpoint) {
// endpoint already decorated
return endpoint;
- } else if (getUri() == null || EndpointHelper.matchEndpoint(uri, getUri())) {
+ } else if (getUri() == null || EndpointHelper.matchEndpoint(routeContext.getCamelContext(), uri, getUri())) {
// only proxy if the uri is matched decorate endpoint with our proxy
// should be false by default
boolean skip = isSkipSendToOriginalEndpoint();
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java Thu Apr 5 10:17:42 2012
@@ -270,7 +270,7 @@ public final class RouteDefinitionHelper
// lookup the endpoint to get its url
uri = CamelContextHelper.getMandatoryEndpoint(context, "ref:" + input.getRef()).getEndpointUri();
}
- if (EndpointHelper.matchEndpoint(uri, intercept.getUri())) {
+ if (EndpointHelper.matchEndpoint(context, uri, intercept.getUri())) {
match = true;
break;
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/EndpointHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/EndpointHelper.java?rev=1309735&r1=1309734&r2=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/EndpointHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/EndpointHelper.java Thu Apr 5 10:17:42 2012
@@ -91,6 +91,8 @@ public final class EndpointHelper {
/**
* Matches the endpoint with the given pattern.
* <p/>
+ * The endpoint will first resolve property placeholders using {@link CamelContext#resolvePropertyPlaceholders(String)}.
+ * <p/>
* The match rules are applied in this order:
* <ul>
* <li>exact match, returns true</li>
@@ -99,11 +101,20 @@ public final class EndpointHelper {
* <li>otherwise returns false</li>
* </ul>
*
+ * @param context the Camel context, if <tt>null</tt> then property placeholder resolution is skipped.
* @param uri the endpoint uri
* @param pattern a pattern to match
* @return <tt>true</tt> if match, <tt>false</tt> otherwise.
*/
- public static boolean matchEndpoint(String uri, String pattern) {
+ public static boolean matchEndpoint(CamelContext context, String uri, String pattern) {
+ if (context != null) {
+ try {
+ uri = context.resolvePropertyPlaceholders(uri);
+ } catch (Exception e) {
+ throw new ResolveEndpointFailedException(uri, e);
+ }
+ }
+
// normalize uri so we can do endpoint hits with minor mistakes and parameters is not in the same order
try {
uri = URISupport.normalizeUri(uri);
@@ -133,6 +144,17 @@ public final class EndpointHelper {
}
/**
+ * Matches the endpoint with the given pattern.
+ * @see #matchEndpoint(org.apache.camel.CamelContext, String, String)
+ *
+ * @deprecated use {@link #matchEndpoint(org.apache.camel.CamelContext, String, String)} instead.
+ */
+ @Deprecated
+ public static boolean matchEndpoint(String uri, String pattern) {
+ return matchEndpoint(null, uri, pattern);
+ }
+
+ /**
* Matches the name with the given pattern.
* <p/>
* The match rules are applied in this order:
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromPropertyPlaceholderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromPropertyPlaceholderTest.java?rev=1309735&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromPropertyPlaceholderTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromPropertyPlaceholderTest.java Thu Apr 5 10:17:42 2012
@@ -0,0 +1,61 @@
+/**
+ * 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.processor.intercept;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.properties.PropertiesComponent;
+
+/**
+ *
+ */
+public class InterceptFromPropertyPlaceholderTest extends ContextTestSupport {
+
+ public void testInterceptFrom() throws Exception {
+ getMockEndpoint("mock:foo").expectedMessageCount(1);
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+
+ template.sendBody("seda:foo", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ interceptFrom("seda:foo").to("mock:foo");
+
+ from("seda:{{queue}}").to("mock:result");
+ }
+ };
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext context = super.createCamelContext();
+
+ PropertiesComponent pc = new PropertiesComponent();
+ pc.setLocation("classpath:org/apache/camel/processor/intercept/myproperties.properties");
+ context.addComponent("properties", pc);
+
+ return context;
+ }
+
+}
Copied: camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/myproperties.properties (from r1309668, camel/trunk/camel-core/src/test/resources/org/apache/camel/component/properties/myproperties.properties)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/myproperties.properties?p2=camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/myproperties.properties&p1=camel/trunk/camel-core/src/test/resources/org/apache/camel/component/properties/myproperties.properties&r1=1309668&r2=1309735&rev=1309735&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/resources/org/apache/camel/component/properties/myproperties.properties (original)
+++ camel/trunk/camel-core/src/test/resources/org/apache/camel/processor/intercept/myproperties.properties Thu Apr 5 10:17:42 2012
@@ -15,20 +15,4 @@
## limitations under the License.
## ---------------------------------------------------------------------------
-cool.end=mock:result
-cool.result=result
-cool.concat=mock:{{cool.result}}
-cool.start=direct:cool
-cool.showid=true
-
-# circular reference test
-cool.a={{cool.b}}
-cool.b={{cool.c}}
-cool.c={{cool.a}}
-
-cool.mock=mock
-
-myCoolCharset=iso-8859-1
-slipDelimiter=##
-
-stop=true
\ No newline at end of file
+queue=foo
\ No newline at end of file