camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: [1/7] camel git commit: CAMEL-8052 Added RemovePropertiesDefinition
Date Mon, 17 Nov 2014 11:56:41 GMT
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,  <ningjiang@apache.org> 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 <ancosen@gmail.com>
> Authored: Sat Nov 15 16:20:04 2014 +0100
> Committer: Willem Jiang <willem.jiang@gmail.com>
> 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<Synchronization> 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 <tt>pattern</tt>,
> +     * except for the ones matching one ore more <tt>excludePatterns</tt>
> +     *
> +     * @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 <tt>names</tt>
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<String, Object> 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<String, Object> 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<Type extends ProcessorDefinition<Type>
>          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 &lt;removeProperties/&gt; element
> + */
> +@XmlRootElement(name = "removeProperties")
> +@XmlAccessorType(XmlAccessType.FIELD)
> +public class RemovePropertiesDefinition extends NoOutputDefinition<RemovePropertiesDefinition>
{
> +    @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<Exchange> 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<Exchange> 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<Exchange> 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<Exchange> 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
View raw message