camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrea Cosentino <ancosen1...@yahoo.com.INVALID>
Subject Re: [1/7] camel git commit: CAMEL-8052 Added RemovePropertiesDefinition
Date Mon, 17 Nov 2014 14:19:08 GMT
Thank you Willem.
Regards, 

     On Monday, November 17, 2014 2:31 PM, Willem Jiang <willem.jiang@gmail.com> wrote:
   

 Hi Andrea,

Do worry about that, I’m working on the fix now.

Regards,


--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On November 17, 2014 at 8:13:25 PM, Andrea Cosentino (ancosen1985@yahoo.com.invalid) wrote:
> Ok, sorry about this.
> I'll work on the camel-scala component. Sorry.
>  
> On Monday, November 17, 2014 12:56 PM, Claus Ibsen wrote:  
>  
>  
> The Scala DSL needs to have this added, as the compiler fails now.
>  
> ERROR] /Users/davsclaus/workspace/camel/components/camel-scala/src/main/scala/org/apache/camel/scala/RichExchange.scala:28: 

> error: class RichExchange needs to be abstract, since:
> [ERROR] it has 2 unimplemented members.
> [ERROR] /** As seen from class RichExchange, the missing signatures
> are as follows.
> [ERROR] * For convenience, these are usable as stub implementations.
> [ERROR] */
> [ERROR] def removeProperties(x$1: String,x$2: String*): Boolean = ???
> [ERROR] def removeProperties(x$1: String): Boolean = ???
> [ERROR]
> [ERROR] class RichExchange(val exchange : Exchange) extends Exchange {
> [ERROR] ^
>  
> On Mon, Nov 17, 2014 at 5:11 AM, wrote:
> > Repository: camel
> > Updated Branches:
> > refs/heads/master f686fcb0d -> 0273cd737
> >
> >
> > CAMEL-8052 Added RemovePropertiesDefinition
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/29ba4c3d
> > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/29ba4c3d
> > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/29ba4c3d
> >
> > Branch: refs/heads/master
> > Commit: 29ba4c3da595a6e09e1c93151b671750a14f8eff
> > Parents: f686fcb
> > Author: ancosen  
> > Authored: Sat Nov 15 16:20:04 2014 +0100
> > Committer: Willem Jiang  
> > Committed: Mon Nov 17 12:06:02 2014 +0800
> >
> > ----------------------------------------------------------------------  
> > .../main/java/org/apache/camel/Exchange.java | 18 ++++
> > .../apache/camel/builder/ProcessorBuilder.java | 32 ++++++
> > .../org/apache/camel/impl/DefaultExchange.java | 34 ++++++
> > .../apache/camel/model/ProcessorDefinition.java | 27 +++++
> > .../camel/model/RemovePropertiesDefinition.java | 106 +++++++++++++++++++  
> > .../resources/org/apache/camel/model/jaxb.index | 1 +
> > .../apache/camel/impl/DefaultExchangeTest.java | 70 ++++++++++++
> > .../RemovePropertiesWithExclusionTest.java | 85 +++++++++++++++
> > .../RemovePropertiesWithoutExclusionTest.java | 79 ++++++++++++++
> > 9 files changed, 452 insertions(+)
> > ----------------------------------------------------------------------  
> >
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/java/org/apache/camel/Exchange.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java 

> > index a33253a..d8e5a4c 100644
> > --- a/camel-core/src/main/java/org/apache/camel/Exchange.java
> > +++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
> > @@ -532,5 +532,23 @@ public interface Exchange {
> > * @return the on completions
> > */
> > List handoverCompletions();
> > +
> > + /**
> > + * Remove all of the properties associated with the exchange matching a specific
pattern  
> > + *
> > + * @param pattern pattern of names
> > + * @return boolean whether any properties matched
> > + */
> > + boolean removeProperties(String pattern);
> > +
> > + /**
> > + * Removes the properties from this exchange that match the given pattern,  
> > + * except for the ones matching one ore more excludePatterns
> > + *
> > + * @param pattern pattern of names that should be removed
> > + * @param excludePatterns one or more pattern of properties names that should be
excluded  
> (= preserved)
> > + * @return boolean whether any properties matched
> > + */
> > + boolean removeProperties(String pattern, String... excludePatterns);
> >
> > }
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java 

> b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java  
> > index b909f99..f246f92 100644
> > --- a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java 

> > +++ b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java 

> > @@ -264,6 +264,38 @@ public final class ProcessorBuilder {
> > }
> > };
> > }
> > +
> > + /**
> > + * Removes the properties on the exchange
> > + */
> > + public static Processor removeProperties(final String pattern) {
> > + return new Processor() {
> > + public void process(Exchange exchange) {
> > + exchange.removeProperties(pattern);
> > + }
> > +
> > + @Override
> > + public String toString() {
> > + return "removeProperties(" + pattern + ")";
> > + }
> > + };
> > + }
> > +
> > + /**
> > + * Removes all properties on the exchange, except for the ones provided in the
names  
> parameter
> > + */
> > + public static Processor removeProperties(final String pattern, final String... 

> exceptionPatterns) {
> > + return new Processor() {
> > + public void process(Exchange exchange) {
> > + exchange.removeProperties(pattern, exceptionPatterns);
> > + }
> > +
> > + @Override
> > + public String toString() {
> > + return "removeProperties(" + pattern + ", " + Arrays.toString(exceptionPatterns) 

> + ")";
> > + }
> > + };
> > + }
> >
> > /**
> > * Throws an exception
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java 

> b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
> > index 164ae67..513546d 100644
> > --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java  
> > +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java  
> > @@ -29,6 +29,7 @@ import org.apache.camel.Message;
> > import org.apache.camel.MessageHistory;
> > import org.apache.camel.spi.Synchronization;
> > import org.apache.camel.spi.UnitOfWork;
> > +import org.apache.camel.util.EndpointHelper;
> > import org.apache.camel.util.ExchangeHelper;
> > import org.apache.camel.util.ObjectHelper;
> >
> > @@ -187,6 +188,30 @@ public final class DefaultExchange implements Exchange {
> > }
> > return getProperties().remove(name);
> > }
> > +
> > + public boolean removeProperties(String pattern) {
> > + return removeProperties(pattern, (String[]) null);
> > + }
> > +
> > + public boolean removeProperties(String pattern, String... excludePatterns)  
> {
> > + if (!hasProperties()) {
> > + return false;
> > + }
> > +
> > + boolean matches = false;
> > + for (Map.Entry entry : properties.entrySet()) {
> > + String key = entry.getKey();
> > + if (EndpointHelper.matchPattern(key, pattern)) {
> > + if (excludePatterns != null && isExcludePatternMatch(key, excludePatterns)) 

> {
> > + continue;
> > + }
> > + matches = true;
> > + properties.remove(entry.getKey());
> > + }
> > +
> > + }
> > + return matches;
> > + }
> >
> > public Map getProperties() {
> > if (properties == null) {
> > @@ -450,4 +475,13 @@ public final class DefaultExchange implements Exchange {
> > }
> > return answer;
> > }
> > +
> > + private static boolean isExcludePatternMatch(String key, String... excludePatterns) 

> {
> > + for (String pattern : excludePatterns) {
> > + if (EndpointHelper.matchPattern(key, pattern)) {
> > + return true;
> > + }
> > + }
> > + return false;
> > + }
> > }
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java 

> b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java  
> > index a6a8457..cf37350 100644
> > --- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java 

> > +++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java 

> > @@ -2873,6 +2873,33 @@ public abstract class ProcessorDefinition  
> > addOutput(answer);
> > return (Type) this;
> > }
> > +
> > + /**
> > + * Adds a processor which removes the properties in the exchange
> > + *
> > + * @param pattern a pattern to match properties names to be removed
> > + * @return the builder
> > + */
> > + @SuppressWarnings("unchecked")
> > + public Type removeProperties(String pattern) {
> > + RemovePropertiesDefinition answer = new RemovePropertiesDefinition(pattern); 

> > + addOutput(answer);
> > + return (Type) this;
> > + }
> > +
> > + /**
> > + * Adds a processor which removes the properties in the exchange
> > + *
> > + * @param pattern a pattern to match properties names to be removed
> > + * @param excludePatterns one or more pattern of properties names that should be
excluded  
> (= preserved)
> > + * @return the builder
> > + */
> > + @SuppressWarnings("unchecked")
> > + public Type removeProperties(String pattern, String... excludePatterns) {
> > + RemovePropertiesDefinition answer = new RemovePropertiesDefinition(pattern, 

> excludePatterns);
> > + addOutput(answer);
> > + return (Type) this;
> > + }
> >
> > /**
> > * Converts the IN message body to the specified type
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java 

> b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java  
> > new file mode 100644
> > index 0000000..8480447
> > --- /dev/null
> > +++ b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java 

> > @@ -0,0 +1,106 @@
> > +/**
> > + * 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.model;
> > +
> > +import javax.xml.bind.annotation.XmlAccessType;
> > +import javax.xml.bind.annotation.XmlAccessorType;
> > +import javax.xml.bind.annotation.XmlAttribute;
> > +import javax.xml.bind.annotation.XmlRootElement;
> > +import javax.xml.bind.annotation.XmlTransient;
> > +
> > +import org.apache.camel.Processor;
> > +import org.apache.camel.builder.ProcessorBuilder;
> > +import org.apache.camel.spi.RouteContext;
> > +import org.apache.camel.util.ObjectHelper;
> > +
> > +/**
> > + * Represents an XML <removeProperties/> element
> > + */
> > +@XmlRootElement(name = "removeProperties")
> > +@XmlAccessorType(XmlAccessType.FIELD)
> > +public class RemovePropertiesDefinition extends NoOutputDefinition  
> {
> > + @XmlAttribute(required = true)
> > + private String pattern;
> > + @XmlAttribute
> > + private String excludePattern;
> > + // in XML we cannot use String[] for attributes, so we provide a single attribute
instead  
> > + @XmlTransient
> > + private String[] excludePatterns;
> > +
> > + public RemovePropertiesDefinition() {
> > + }
> > +
> > + public RemovePropertiesDefinition(String pattern) {
> > + setPattern(pattern);
> > + }
> > +
> > + public RemovePropertiesDefinition(String pattern, String... excludePatterns) 

> {
> > + setPattern(pattern);
> > + setExcludePatterns(excludePatterns);
> > + }
> > +
> > + @Override
> > + public String toString() {
> > + return "removeProperties[" + getPattern() + "]";
> > + }
> > +
> > + @Override
> > + public String getShortName() {
> > + return "removeProperties";
> > + }
> > +
> > + @Override
> > + public String getLabel() {
> > + return "removeProperties[" + getPattern() + "]";
> > + }
> > +
> > + @Override
> > + public Processor createProcessor(RouteContext routeContext) throws Exception 

> {
> > + ObjectHelper.notNull(getPattern(), "patterns", this);
> > + if (getExcludePatterns() != null) {
> > + return ProcessorBuilder.removeProperties(getPattern(), getExcludePatterns()); 

> > + } else if (getExcludePattern() != null) {
> > + return ProcessorBuilder.removeProperties(getPattern(), getExcludePattern()); 

> > + } else {
> > + return ProcessorBuilder.removeProperties(getPattern());
> > + }
> > + }
> > +
> > + public void setPattern(String pattern) {
> > + this.pattern = pattern;
> > + }
> > +
> > + public String getPattern() {
> > + return pattern;
> > + }
> > +
> > + public String[] getExcludePatterns() {
> > + return excludePatterns;
> > + }
> > +
> > + public void setExcludePatterns(String[] excludePatterns) {
> > + this.excludePatterns = excludePatterns;
> > + }
> > +
> > + public String getExcludePattern() {
> > + return excludePattern;
> > + }
> > +
> > + public void setExcludePattern(String excludePattern) {
> > + this.excludePattern = excludePattern;
> > + }
> > +}
> > \ No newline at end of file
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/main/resources/org/apache/camel/model/jaxb.index  
> b/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
> > index ea0d2b9..7e47451 100644
> > --- a/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
> > +++ b/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
> > @@ -58,6 +58,7 @@ RedeliveryPolicyDefinition
> > RemoveHeaderDefinition
> > RemoveHeadersDefinition
> > RemovePropertyDefinition
> > +RemovePropertiesDefinition
> > ResequenceDefinition
> > RestContextRefDefinition
> > RollbackDefinition
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/test/java/org/apache/camel/impl/DefaultExchangeTest.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultExchangeTest.java 

> b/camel-core/src/test/java/org/apache/camel/impl/DefaultExchangeTest.java  
> > index 87e858a..cd6fd7e 100644
> > --- a/camel-core/src/test/java/org/apache/camel/impl/DefaultExchangeTest.java 

> > +++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultExchangeTest.java 

> > @@ -120,6 +120,76 @@ public class DefaultExchangeTest extends ExchangeTestSupport 

> {
> > assertEquals("banana", exchange.getProperty("beer", "banana"));
> > assertEquals("banana", exchange.getProperty("beer", "banana", String.class)); 

> > }
> > +
> > + public void testRemoveProperties() throws Exception {
> > + exchange.removeProperty("foobar");
> > + assertFalse(exchange.hasProperties());
> > +
> > + exchange.setProperty("fruit", "apple");
> > + exchange.setProperty("fruit1", "banana");
> > + exchange.setProperty("zone", "Africa");
> > + assertTrue(exchange.hasProperties());
> > +
> > + assertEquals("apple", exchange.getProperty("fruit"));
> > + assertEquals("banana", exchange.getProperty("fruit1"));
> > + assertEquals("Africa", exchange.getProperty("zone"));
> > +
> > + exchange.removeProperties("fr*");
> > + assertTrue(exchange.hasProperties());
> > + assertEquals(exchange.getProperties().size(), 1);
> > + assertEquals(null, exchange.getProperty("fruit", String.class));
> > + assertEquals(null, exchange.getProperty("fruit1", String.class));
> > + assertEquals("Africa", exchange.getProperty("zone", String.class));
> > + }
> > +
> > + public void testRemovePropertiesWithExclusion() throws Exception {
> > + exchange.removeProperty("foobar");
> > + assertFalse(exchange.hasProperties());
> > +
> > + exchange.setProperty("fruit", "apple");
> > + exchange.setProperty("fruit1", "banana");
> > + exchange.setProperty("fruit2", "peach");
> > + exchange.setProperty("zone", "Africa");
> > + assertTrue(exchange.hasProperties());
> > +
> > + assertEquals("apple", exchange.getProperty("fruit"));
> > + assertEquals("banana", exchange.getProperty("fruit1"));
> > + assertEquals("peach", exchange.getProperty("fruit2"));
> > + assertEquals("Africa", exchange.getProperty("zone"));
> > +
> > + exchange.removeProperties("fr*","fruit1","fruit2");
> > + assertTrue(exchange.hasProperties());
> > + assertEquals(exchange.getProperties().size(), 3);
> > + assertEquals(null, exchange.getProperty("fruit", String.class));
> > + assertEquals("banana", exchange.getProperty("fruit1", String.class));
> > + assertEquals("peach", exchange.getProperty("fruit2", String.class));
> > + assertEquals("Africa", exchange.getProperty("zone", String.class));
> > + }
> > +
> > + public void testRemovePropertiesPatternWithAllExcluded() throws Exception  
> {
> > + exchange.removeProperty("foobar");
> > + assertFalse(exchange.hasProperties());
> > +
> > + exchange.setProperty("fruit", "apple");
> > + exchange.setProperty("fruit1", "banana");
> > + exchange.setProperty("fruit2", "peach");
> > + exchange.setProperty("zone", "Africa");
> > + assertTrue(exchange.hasProperties());
> > +
> > + assertEquals("apple", exchange.getProperty("fruit"));
> > + assertEquals("banana", exchange.getProperty("fruit1"));
> > + assertEquals("peach", exchange.getProperty("fruit2"));
> > + assertEquals("Africa", exchange.getProperty("zone"));
> > +
> > + exchange.removeProperties("fr*","fruit","fruit1","fruit2","zone");
> > + assertTrue(exchange.hasProperties());
> > + assertEquals(exchange.getProperties().size(), 4);
> > + assertEquals("apple", exchange.getProperty("fruit", String.class));
> > + assertEquals("banana", exchange.getProperty("fruit1", String.class));
> > + assertEquals("peach", exchange.getProperty("fruit2", String.class));
> > + assertEquals("Africa", exchange.getProperty("zone", String.class));
> > + }
> > +
> >
> > public void testInType() throws Exception {
> > exchange.setIn(new MyMessage());
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithExclusionTest.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithExclusionTest.java 

> b/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithExclusionTest.java 

> > new file mode 100644
> > index 0000000..058681c
> > --- /dev/null
> > +++ b/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithExclusionTest.java 

> > @@ -0,0 +1,85 @@
> > +/**
> > + * 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;
> > +
> > +import java.util.List;
> > +
> > +import org.apache.camel.ContextTestSupport;
> > +import org.apache.camel.Exchange;
> > +import org.apache.camel.builder.RouteBuilder;
> > +import org.apache.camel.component.mock.MockEndpoint;
> > +
> > +public class RemovePropertiesWithExclusionTest extends ContextTestSupport  
> {
> > + private MockEndpoint end;
> > + private MockEndpoint mid;
> > + private String propertyName = "foo";
> > + private String expectedPropertyValue = "bar";
> > + private String propertyName1 = "fee";
> > + private String expectedPropertyValue1 = "bar1";
> > + private String propertyName2 = "fiu";
> > + private String expectedPropertyValue2 = "bar2";
> > + private String pattern = "f*";
> > + private String exclusion = "fiu";
> > +
> > + public void testSetExchangePropertiesMidRouteThenRemoveWithPatternAndExclusion() 

> throws Exception {
> > + mid.expectedMessageCount(1);
> > + end.expectedMessageCount(1);
> > +
> > + template.sendBody("direct:start", "message");
> > +
> > + // make sure we got the message
> > + assertMockEndpointsSatisfied();
> > +
> > + List midExchanges = mid.getExchanges();
> > + Exchange midExchange = midExchanges.get(0);
> > + String actualPropertyValue = midExchange.getProperty(propertyName, String.class); 

> > + String actualPropertyValue1 = midExchange.getProperty(propertyName1, String.class); 

> > + String actualPropertyValue2 = midExchange.getProperty(propertyName2, String.class); 

> > +
> > + assertEquals(expectedPropertyValue, actualPropertyValue);
> > + assertEquals(expectedPropertyValue1, actualPropertyValue1);
> > + assertEquals(expectedPropertyValue2, actualPropertyValue2);
> > +
> > + List endExchanges = end.getExchanges();
> > + Exchange endExchange = endExchanges.get(0);
> > +
> > + // property should be removed
> > + assertNull(endExchange.getProperty(propertyName, String.class));
> > + assertNull(endExchange.getProperty(propertyName1, String.class));
> > + assertEquals(expectedPropertyValue2, endExchange.getProperty(propertyName2, 

> String.class));
> > + }
> > +
> > + @Override
> > + protected void setUp() throws Exception {
> > + super.setUp();
> > + end = getMockEndpoint("mock:end");
> > + mid = getMockEndpoint("mock:mid");
> > + }
> > +
> > + protected RouteBuilder createRouteBuilder() {
> > + return new RouteBuilder() {
> > + public void configure() {
> > + from("direct:start").
> > + setProperty(propertyName).constant(expectedPropertyValue)
> > + .setProperty(propertyName1).constant(expectedPropertyValue1)
> > + .setProperty(propertyName2).constant(expectedPropertyValue2).to("mock:mid"). 

> > + removeProperties(pattern,exclusion).to("mock:end");
> > + }
> > + };
> > + }
> > +}
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/29ba4c3d/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithoutExclusionTest.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithoutExclusionTest.java 

> b/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithoutExclusionTest.java 

> > new file mode 100644
> > index 0000000..698d7b1
> > --- /dev/null
> > +++ b/camel-core/src/test/java/org/apache/camel/processor/RemovePropertiesWithoutExclusionTest.java 

> > @@ -0,0 +1,79 @@
> > +/**
> > + * 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;
> > +
> > +import java.util.List;
> > +
> > +import org.apache.camel.ContextTestSupport;
> > +import org.apache.camel.Exchange;
> > +import org.apache.camel.builder.RouteBuilder;
> > +import org.apache.camel.component.mock.MockEndpoint;
> > +
> > +public class RemovePropertiesWithoutExclusionTest extends ContextTestSupport 

> {
> > + private MockEndpoint end;
> > + private MockEndpoint mid;
> > + private String propertyName = "foo";
> > + private String expectedPropertyValue = "bar";
> > + private String propertyName1 = "fee";
> > + private String expectedPropertyValue1 = "bar1";
> > + private String pattern = "f*";
> > +
> > + public void testSetExchangePropertiesMidRouteThenRemoveWithPattern() throws 

> Exception {
> > + mid.expectedMessageCount(1);
> > + end.expectedMessageCount(1);
> > +
> > + template.sendBody("direct:start", "message");
> > +
> > + // make sure we got the message
> > + assertMockEndpointsSatisfied();
> > +
> > + List midExchanges = mid.getExchanges();
> > + Exchange midExchange = midExchanges.get(0);
> > + String actualPropertyValue = midExchange.getProperty(propertyName, String.class); 

> > + String actualPropertyValue1 = midExchange.getProperty(propertyName1, String.class); 

> > +
> > + assertEquals(expectedPropertyValue, actualPropertyValue);
> > + assertEquals(expectedPropertyValue1, actualPropertyValue1);
> > +
> > + List endExchanges = end.getExchanges();
> > + Exchange endExchange = endExchanges.get(0);
> > +
> > + // property should be removed
> > + assertNull(endExchange.getProperty(propertyName, String.class));
> > + assertNull(endExchange.getProperty(propertyName1, String.class));
> > + }
> > +
> > + @Override
> > + protected void setUp() throws Exception {
> > + super.setUp();
> > + end = getMockEndpoint("mock:end");
> > + mid = getMockEndpoint("mock:mid");
> > + }
> > +
> > + protected RouteBuilder createRouteBuilder() {
> > + return new RouteBuilder() {
> > + public void configure() {
> > + from("direct:start").
> > + setProperty(propertyName).constant(expectedPropertyValue)
> > + .setProperty(propertyName1).constant(expectedPropertyValue1)
> > + .to("mock:mid").
> > + removeProperties(pattern).to("mock:end");
> > + }
> > + };
> > + }
> > +}
> >
>  
>  
>  
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cibsen@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/
>  
>  
>  


   
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message