You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/03/08 10:22:25 UTC

camel git commit: CAMEL-10872: camel-jgroups : upgrade to JGroups 4.0

Repository: camel
Updated Branches:
  refs/heads/master a6f109538 -> b150e7ada


CAMEL-10872: camel-jgroups : upgrade to JGroups 4.0


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b150e7ad
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b150e7ad
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b150e7ad

Branch: refs/heads/master
Commit: b150e7ada616b1329691621ce92bbc3e4d61130f
Parents: a6f1095
Author: Andrea Cosentino <an...@gmail.com>
Authored: Wed Mar 8 11:13:21 2017 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Wed Mar 8 11:13:51 2017 +0100

----------------------------------------------------------------------
 .../src/main/docs/jgroups-component.adoc        |   2 +-
 .../component/jgroups/JGroupsComponent.java     |   7 +-
 .../component/jgroups/JGroupsConsumer.java      |   5 +-
 .../component/jgroups/JGroupsEndpoint.java      |  15 ++-
 .../component/jgroups/JGroupsProducer.java      |  10 +-
 .../jgroups/CamelJGroupsReceiverTest.java       |   5 +-
 .../component/jgroups/JGroupsComponentTest.java |   8 +-
 ...roupsComponentWithChannelPropertiesTest.java | 116 +++++++++++++++++++
 .../component/jgroups/JGroupsConsumerTest.java  |   8 +-
 parent/pom.xml                                  |   2 +-
 .../JGroupsComponentConfiguration.java          |   8 +-
 11 files changed, 156 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/main/docs/jgroups-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/main/docs/jgroups-component.adoc b/components/camel-jgroups/src/main/docs/jgroups-component.adoc
index 6bd0ce6..06fad21 100644
--- a/components/camel-jgroups/src/main/docs/jgroups-component.adoc
+++ b/components/camel-jgroups/src/main/docs/jgroups-component.adoc
@@ -56,7 +56,7 @@ The JGroups component supports 4 options which are listed below.
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
-| channel | common |  | Channel | Channel to use
+| channel | common |  | JChannel | Channel to use
 | channelProperties | common |  | String | Specifies configuration properties of the JChannel used by the endpoint.
 | enableViewMessages | consumer | false | boolean | If set to true the consumer endpoint will receive org.jgroups.View messages as well (not only org.jgroups.Message instances). By default only regular messages are consumed by the endpoint.
 | resolvePropertyPlaceholders | advanced | true | boolean | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders.

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
index 436487d..1dff080 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
@@ -22,13 +22,14 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.spi.Metadata;
 import org.jgroups.Channel;
+import org.jgroups.JChannel;
 
 /**
  * Component providing support for messages multicasted from- or to JGroups channels ({@code org.jgroups.Channel}).
  */
 public class JGroupsComponent extends UriEndpointComponent {
 
-    private Channel channel;
+    private JChannel channel;
     private String channelProperties;
     @Metadata(label = "consumer")
     private boolean enableViewMessages;
@@ -42,14 +43,14 @@ public class JGroupsComponent extends UriEndpointComponent {
         return new JGroupsEndpoint(uri, this, channel, clusterName, channelProperties, enableViewMessages);
     }
 
-    public Channel getChannel() {
+    public JChannel getChannel() {
         return channel;
     }
 
     /**
      * Channel to use
      */
-    public void setChannel(Channel channel) {
+    public void setChannel(JChannel channel) {
         this.channel = channel;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsConsumer.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsConsumer.java
index a2f6815..2c5dd4e 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsConsumer.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsConsumer.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jgroups;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
 import org.jgroups.Channel;
+import org.jgroups.JChannel;
 
 /**
  * Consumes messages from the JGroups channels ({@code org.jgroups.Channel}). Received messages
@@ -26,13 +27,13 @@ import org.jgroups.Channel;
  */
 public class JGroupsConsumer extends DefaultConsumer {
 
-    private final Channel channel;
+    private final JChannel channel;
     private final String clusterName;
 
     private final CamelJGroupsReceiver receiver;
     private final JGroupsEndpoint endpoint;
 
-    public JGroupsConsumer(JGroupsEndpoint endpoint, Processor processor, Channel channel, String clusterName) {
+    public JGroupsConsumer(JGroupsEndpoint endpoint, Processor processor, JChannel channel, String clusterName) {
         super(endpoint, processor);
 
         this.endpoint = endpoint;

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsEndpoint.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsEndpoint.java
index d7ee5a4..193fef5 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsEndpoint.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsEndpoint.java
@@ -28,7 +28,6 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.jgroups.Channel;
 import org.jgroups.JChannel;
 import org.jgroups.Message;
 import org.jgroups.View;
@@ -50,8 +49,8 @@ public class JGroupsEndpoint extends DefaultEndpoint {
 
     private AtomicInteger connectCount = new AtomicInteger(0);
 
-    private Channel channel;
-    private Channel resolvedChannel;
+    private JChannel channel;
+    private JChannel resolvedChannel;
 
     @UriPath @Metadata(required = "true")
     private String clusterName;
@@ -60,7 +59,7 @@ public class JGroupsEndpoint extends DefaultEndpoint {
     @UriParam(label = "consumer")
     private boolean enableViewMessages;
 
-    public JGroupsEndpoint(String endpointUri, Component component, Channel channel, String clusterName, String channelProperties, boolean enableViewMessages) {
+    public JGroupsEndpoint(String endpointUri, Component component, JChannel channel, String clusterName, String channelProperties, boolean enableViewMessages) {
         super(endpointUri, component);
         this.channel = channel;
         this.clusterName = clusterName;
@@ -118,7 +117,7 @@ public class JGroupsEndpoint extends DefaultEndpoint {
         super.doStop();
     }
 
-    private Channel resolveChannel() throws Exception {
+    private JChannel resolveChannel() throws Exception {
         if (channel != null) {
             return channel;
         }
@@ -148,14 +147,14 @@ public class JGroupsEndpoint extends DefaultEndpoint {
         }
     }
 
-    public Channel getChannel() {
+    public JChannel getChannel() {
         return channel;
     }
 
     /**
      * The channel to use
      */
-    public void setChannel(Channel channel) {
+    public void setChannel(JChannel channel) {
         this.channel = channel;
     }
 
@@ -181,7 +180,7 @@ public class JGroupsEndpoint extends DefaultEndpoint {
         this.channelProperties = channelProperties;
     }
 
-    Channel getResolvedChannel() {
+    JChannel getResolvedChannel() {
         return resolvedChannel;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsProducer.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsProducer.java
index f49ef82..c9fb80e 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsProducer.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsProducer.java
@@ -20,6 +20,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultProducer;
 import org.jgroups.Address;
 import org.jgroups.Channel;
+import org.jgroups.JChannel;
 import org.jgroups.Message;
 
 /**
@@ -31,13 +32,13 @@ public class JGroupsProducer extends DefaultProducer {
 
     private final JGroupsEndpoint endpoint;
 
-    private final Channel channel;
+    private final JChannel channel;
 
     private final String clusterName;
 
     // Constructor
 
-    public JGroupsProducer(JGroupsEndpoint endpoint, Channel channel, String clusterName) {
+    public JGroupsProducer(JGroupsEndpoint endpoint, JChannel channel, String clusterName) {
         super(endpoint);
 
         this.endpoint = endpoint;
@@ -75,8 +76,9 @@ public class JGroupsProducer extends DefaultProducer {
             if (sourceAddress != null) {
                 log.debug("Posting from custom source address: {}", sourceAddress);
             }
-
-            channel.send(new Message(destinationAddress, sourceAddress, body));
+            Message message = new Message(destinationAddress, body);
+            message.setSrc(sourceAddress);
+            channel.send(message);
         } else {
             log.debug("Body is null, cannot post to channel.");
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/CamelJGroupsReceiverTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/CamelJGroupsReceiverTest.java b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/CamelJGroupsReceiverTest.java
index bc9ecf0..8b6c761 100644
--- a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/CamelJGroupsReceiverTest.java
+++ b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/CamelJGroupsReceiverTest.java
@@ -46,9 +46,10 @@ public class CamelJGroupsReceiverTest {
     public void shouldHandleProcessingException() throws Exception {
         // Given
         willThrow(Exception.class).given(processor).process(any(Exchange.class));
-
+        Message message = new Message(null, "someMessage");
+        message.setSrc(null);
         // When
-        receiver.receive(new Message(null, null, "someMessage"));
+        receiver.receive(message);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
index c10008d..dc31599 100644
--- a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
+++ b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentTest.java
@@ -31,11 +31,11 @@ public class JGroupsComponentTest extends CamelTestSupport {
 
     static final String MESSAGE = "MESSAGE";
 
-    static final String SAMPLE_CHANNEL_PROPERTY = "discard_incompatible_packets=true";
+    static final String SAMPLE_CHANNEL_PROPERTY = "enable_diagnostics=true";
 
     static final String SAMPLE_CHANNEL_PROPERTIES = String.format("UDP(%s)", SAMPLE_CHANNEL_PROPERTY);
 
-    static final String CONFIGURED_ENDPOINT_URI = String.format("jgroups:%s?channelProperties=%s", CLUSTER_NAME, SAMPLE_CHANNEL_PROPERTIES);
+    static final String CONFIGURED_ENDPOINT_URI = String.format("jgroups:%s", CLUSTER_NAME);
 
     // Fixtures
 
@@ -85,7 +85,9 @@ public class JGroupsComponentTest extends CamelTestSupport {
         mockEndpoint.expectedBodiesReceived(MESSAGE);
 
         // When
-        clientChannel.send(new Message(null, null, MESSAGE));
+        Message message = new Message(null, MESSAGE);
+        message.setSrc(null);
+        clientChannel.send(message);
 
         // Then
         mockEndpoint.assertIsSatisfied();

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentWithChannelPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentWithChannelPropertiesTest.java b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentWithChannelPropertiesTest.java
new file mode 100644
index 0000000..273328f
--- /dev/null
+++ b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsComponentWithChannelPropertiesTest.java
@@ -0,0 +1,116 @@
+/**
+ * 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.component.jgroups;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.jgroups.JChannel;
+import org.jgroups.Message;
+import org.junit.Test;
+
+public class JGroupsComponentWithChannelPropertiesTest extends CamelTestSupport {
+
+    // Constants
+
+    static final String CLUSTER_NAME = "CLUSTER_NAME";
+
+    static final String MESSAGE = "MESSAGE";
+
+    static final String SAMPLE_CHANNEL_PROPERTY = "enable_diagnostics=true";
+
+    static final String SAMPLE_CHANNEL_PROPERTIES = String.format("UDP(%s)", SAMPLE_CHANNEL_PROPERTY);
+
+    static final String CONFIGURED_ENDPOINT_URI = String.format("jgroups:%s?channelProperties=%s", CLUSTER_NAME, "udp.xml");
+
+    // Fixtures
+
+    JChannel clientChannel;
+
+    JChannel defaultComponentChannel;
+
+    // Routes fixture
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                JGroupsComponent defaultComponent = new JGroupsComponent();
+                defaultComponent.setChannel(defaultComponentChannel);
+                context().addComponent("my-default-jgroups", defaultComponent);
+
+                from("my-default-jgroups:" + CLUSTER_NAME).to("mock:default");
+                from(CONFIGURED_ENDPOINT_URI).to("mock:configured");
+            }
+        };
+    }
+
+    // Fixture setup
+
+    @Override
+    protected void doPreSetup() throws Exception {
+        super.doPreSetup();
+        clientChannel = new JChannel();
+        clientChannel.connect(CLUSTER_NAME);
+
+        defaultComponentChannel = new JChannel();
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        clientChannel.close();
+        super.tearDown();
+    }
+
+    @Test
+    public void shouldConsumeMulticastedMessage() throws Exception {
+        // Given
+        MockEndpoint mockEndpoint = getMockEndpoint("mock:default");
+        mockEndpoint.setExpectedMessageCount(1);
+        mockEndpoint.expectedBodiesReceived(MESSAGE);
+
+        // When
+        Message message = new Message(null, MESSAGE);
+        message.setSrc(null);
+        clientChannel.send(message);
+
+        // Then
+        mockEndpoint.assertIsSatisfied();
+    }
+
+    @Test
+    public void shouldConfigureChannelWithProperties() throws Exception {
+        // When
+        JGroupsEndpoint endpoint = getMandatoryEndpoint(CONFIGURED_ENDPOINT_URI, JGroupsEndpoint.class);
+
+        // Then
+        assertTrue(endpoint.getResolvedChannel().getProperties().contains(SAMPLE_CHANNEL_PROPERTY));
+    }
+
+    @Test
+    public void shouldCreateChannel() throws Exception {
+        // When
+        JGroupsEndpoint endpoint = getMandatoryEndpoint("my-default-jgroups:" + CLUSTER_NAME, JGroupsEndpoint.class);
+        JGroupsComponent component = (JGroupsComponent)endpoint.getComponent();
+
+        // Then
+        assertNotNull(component.getChannel());
+    }
+
+}
+

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsConsumerTest.java b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsConsumerTest.java
index 5e6dccc..26e5263 100644
--- a/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsConsumerTest.java
+++ b/components/camel-jgroups/src/test/java/org/apache/camel/component/jgroups/JGroupsConsumerTest.java
@@ -75,7 +75,9 @@ public class JGroupsConsumerTest extends CamelTestSupport {
         mockEndpoint.expectedBodiesReceived(message);
 
         // When
-        channel.send(new Message(null, null, message));
+        Message msg = new Message(null, message);
+        msg.setSrc(null);
+        channel.send(msg);
 
         // Then
         assertMockEndpointsSatisfied();
@@ -88,7 +90,9 @@ public class JGroupsConsumerTest extends CamelTestSupport {
         mockEndpoint.message(0).header(HEADER_JGROUPS_ORIGINAL_MESSAGE).isInstanceOf(Message.class);
 
         // When
-        channel.send(new Message(null, null, message));
+        Message msg = new Message(null, message);
+        msg.setSrc(null);
+        channel.send(msg);
 
         // Then
         assertMockEndpointsSatisfied();

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index fbaee9e..961c129 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -340,7 +340,7 @@
     <jetty-runner-groupId>org.eclipse.jetty</jetty-runner-groupId>
     <jettison-version>1.3.8</jettison-version>
     <jgit-version>4.6.0.201612231935-r</jgit-version>
-    <jgroups-version>3.6.13.Final</jgroups-version>
+    <jgroups-version>4.0.1.Final</jgroups-version>
     <libthrift-version>0.9.3</libthrift-version>
     <jibx-version>1.2.6</jibx-version>
     <jing-bundle-version>20030619_5</jing-bundle-version>

http://git-wip-us.apache.org/repos/asf/camel/blob/b150e7ad/platforms/spring-boot/components-starter/camel-jgroups-starter/src/main/java/org/apache/camel/component/jgroups/springboot/JGroupsComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-jgroups-starter/src/main/java/org/apache/camel/component/jgroups/springboot/JGroupsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-jgroups-starter/src/main/java/org/apache/camel/component/jgroups/springboot/JGroupsComponentConfiguration.java
index 1f03ffd..8f61eb1 100644
--- a/platforms/spring-boot/components-starter/camel-jgroups-starter/src/main/java/org/apache/camel/component/jgroups/springboot/JGroupsComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-jgroups-starter/src/main/java/org/apache/camel/component/jgroups/springboot/JGroupsComponentConfiguration.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.component.jgroups.springboot;
 
-import org.jgroups.Channel;
+import org.jgroups.JChannel;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
@@ -33,7 +33,7 @@ public class JGroupsComponentConfiguration {
      * Channel to use
      */
     @NestedConfigurationProperty
-    private Channel channel;
+    private JChannel channel;
     /**
      * Specifies configuration properties of the JChannel used by the endpoint.
      */
@@ -51,11 +51,11 @@ public class JGroupsComponentConfiguration {
      */
     private Boolean resolvePropertyPlaceholders = true;
 
-    public Channel getChannel() {
+    public JChannel getChannel() {
         return channel;
     }
 
-    public void setChannel(Channel channel) {
+    public void setChannel(JChannel channel) {
         this.channel = channel;
     }