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 2017/07/30 09:03:54 UTC

[1/5] camel git commit: [CAMEL-11597] Revert log info to only log info when XPack client is present. - Use the CamelContext resolveClass instead

Repository: camel
Updated Branches:
  refs/heads/master 57a3a3d01 -> 6cc7ca4c6


[CAMEL-11597] Revert log info to only log info when XPack client
is present.
- Use the CamelContext resolveClass instead


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

Branch: refs/heads/master
Commit: fe9994588f868549392b5db9fe7e16314bc2fd30
Parents: f3b111b
Author: fharms <fl...@gmail.com>
Authored: Sun Jul 30 10:40:55 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 30 10:47:26 2017 +0200

----------------------------------------------------------------------
 .../elasticsearch5/ElasticsearchProducer.java         | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fe999458/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
index a395c39..3830a6f 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
@@ -17,10 +17,12 @@
 package org.apache.camel.component.elasticsearch5;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
@@ -234,16 +236,18 @@ public class ElasticsearchProducer extends DefaultProducer {
         }
     }
 
-    private TransportClient createClient() {
+    private TransportClient createClient() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
         final Settings.Builder settings = getSettings();
-        try {
-            Class clazz = Class.forName("org.elasticsearch.xpack.client.PreBuiltXPackTransportClient");
+        final CamelContext camelContext = getEndpoint().getCamelContext();
+        final Class<?> clazz = camelContext.getClassResolver().resolveClass("org.elasticsearch.xpack.client.PreBuiltXPackTransportClient");
+        if (clazz != null) {
             Constructor<?> ctor = clazz.getConstructor(Settings.class, Class[].class);
             settings.put("xpack.security.user", configuration.getUser() + ":" + configuration.getPassword())
                 .put("xpack.security.transport.ssl.enabled", configuration.getEnableSSL());
+            LOG.debug("XPack Client was found on the classpath");
             return (TransportClient) ctor.newInstance(new Object[] {settings.build(), new Class[0]});
-        } catch (Exception e) {
-            LOG.info("XPack Client was not found on the classpath, using the standard client");
+        } else {
+            LOG.debug("XPack Client was not found on the classpath, using the standard client");
             return new PreBuiltTransportClient(settings.build());
         }
     }


[2/5] camel git commit: [CAMEL-11597] Remove hard dependency on XPack client

Posted by da...@apache.org.
[CAMEL-11597] Remove hard dependency on XPack client

If the XPack client exist on the classpath it use the
PreBuiltXPackTransportClient for connection to the instance, otherwise
the PreBuiltTransportClient


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

Branch: refs/heads/master
Commit: f3b111bf42f6660d9967ad01519033c278340227
Parents: 811d6f7
Author: fharms <fl...@gmail.com>
Authored: Sat Jul 29 15:18:18 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 30 10:47:26 2017 +0200

----------------------------------------------------------------------
 components/camel-elasticsearch5/pom.xml         | 19 --------
 .../ElasticsearchConfiguration.java             | 12 ++---
 .../elasticsearch5/ElasticsearchEndpoint.java   |  5 +-
 .../elasticsearch5/ElasticsearchProducer.java   | 49 +++++++++++++-------
 .../elasticsearch5/ElasticsearchBaseTest.java   |  4 +-
 5 files changed, 42 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f3b111bf/components/camel-elasticsearch5/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/pom.xml b/components/camel-elasticsearch5/pom.xml
index e7014cd..8342eaf 100644
--- a/components/camel-elasticsearch5/pom.xml
+++ b/components/camel-elasticsearch5/pom.xml
@@ -38,20 +38,6 @@
     <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=elasticsearch5</camel.osgi.export.service>
   </properties>
 
-  <repositories>
-    <!-- add the elasticsearch repo -->
-    <repository>
-      <id>elasticsearch-releases</id>
-      <url>https://artifacts.elastic.co/maven</url>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.camel</groupId>
@@ -63,11 +49,6 @@
       <version>${elasticsearch5-version}</version>
     </dependency>
     <dependency>
-      <groupId>org.elasticsearch.client</groupId>
-      <artifactId>x-pack-transport</artifactId>
-      <version>${elasticsearch5-version}</version>
-    </dependency>
-    <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <version>${jackson2-version}</version>

http://git-wip-us.apache.org/repos/asf/camel/blob/f3b111bf/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
index a0c423f..25eddca 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
@@ -47,11 +47,11 @@ public class ElasticsearchConfiguration {
     private int port = ElasticsearchConstants.DEFAULT_PORT;
     @UriParam(defaultValue = "false")
     private Boolean clientTransportSniff = false;
-    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_SCHEDULE)
+    @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PING_SCHEDULE)
     private String pingSchedule = ElasticsearchConstants.DEFAULT_PING_SCHEDULE;
-    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_TIMEOUT)
+    @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PING_TIMEOUT)
     private String pingTimeout = ElasticsearchConstants.DEFAULT_PING_TIMEOUT;
-    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT)
+    @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT)
     private String tcpConnectTimeout = ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT;
     @UriParam(defaultValue = "false")
     private Boolean tcpCompress = false;
@@ -206,7 +206,7 @@ public class ElasticsearchConfiguration {
 
     /**
      *  User for authenticate against the cluster. Requires "transport_client" role
-     *  for accessing the cluster
+     *  for accessing the cluster. Require XPack client jar on the classpath
      */
     public String getUser() {
         return user;
@@ -217,7 +217,7 @@ public class ElasticsearchConfiguration {
     }
 
     /**
-     *  Password for authenticate against the cluster
+     *  Password for authenticate against the cluster. Require XPack client jar on the classpath
      */
     public String getPassword() {
         return password;
@@ -228,7 +228,7 @@ public class ElasticsearchConfiguration {
     }
 
     /**
-     * Enable SSL
+     * Enable SSL. Require XPack client jar on the classpath
      */
     public Boolean getEnableSSL() {
         return enableSSL;

http://git-wip-us.apache.org/repos/asf/camel/blob/f3b111bf/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
index a75634b..9618097 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
@@ -22,9 +22,9 @@ import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.elasticsearch.client.transport.TransportClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.elasticsearch.client.transport.TransportClient;
 
 /**
  * The elasticsearch component is used for interfacing with ElasticSearch server using 5.x API.
@@ -34,10 +34,11 @@ public class ElasticsearchEndpoint extends DefaultEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchEndpoint.class);
 
-    private TransportClient client;
     @UriParam
     protected final ElasticsearchConfiguration configuration;
 
+    private TransportClient client;
+
     public ElasticsearchEndpoint(String uri, ElasticsearchComponent component, ElasticsearchConfiguration config, TransportClient client) throws Exception {
         super(uri, component);
         this.configuration = config;

http://git-wip-us.apache.org/repos/asf/camel/blob/f3b111bf/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
index 03390de..a395c39 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.elasticsearch5;
 
+import java.lang.reflect.Constructor;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
@@ -38,7 +39,7 @@ import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 import org.elasticsearch.common.transport.TransportAddress;
 import org.elasticsearch.index.IndexNotFoundException;
-import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
+import org.elasticsearch.transport.client.PreBuiltTransportClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,12 +47,12 @@ import org.slf4j.LoggerFactory;
  * Represents an Elasticsearch producer.
  */
 public class ElasticsearchProducer extends DefaultProducer {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchProducer.class);
-    
+
     protected final ElasticsearchConfiguration configuration;
     private TransportClient client;
-    
+
     public ElasticsearchProducer(ElasticsearchEndpoint endpoint, ElasticsearchConfiguration configuration) {
         super(endpoint);
         this.configuration = configuration;
@@ -177,7 +178,7 @@ public class ElasticsearchProducer extends DefaultProducer {
             }
         } else if (operation == ElasticsearchOperation.SEARCH) {
             SearchRequest searchRequest = message.getBody(SearchRequest.class);
-            message.setBody(client.search(searchRequest).actionGet());            
+            message.setBody(client.search(searchRequest).actionGet());
         } else if (operation == ElasticsearchOperation.MULTISEARCH) {
             MultiSearchRequest multiSearchRequest = message.getBody(MultiSearchRequest.class);
             message.setBody(client.multiSearch(multiSearchRequest));
@@ -209,7 +210,7 @@ public class ElasticsearchProducer extends DefaultProducer {
         }
 
     }
-    
+
     @Override
     @SuppressWarnings("unchecked")
     protected void doStart() throws Exception {
@@ -217,37 +218,45 @@ public class ElasticsearchProducer extends DefaultProducer {
 
         if (client == null) {
             LOG.info("Connecting to the ElasticSearch cluster: " + configuration.getClusterName());
-            
             if (configuration.getIp() != null) {
-                client = new PreBuiltXPackTransportClient(getSettings())
+                client = createClient()
                     .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(configuration.getIp()), configuration.getPort()));
             } else if (configuration.getTransportAddressesList() != null
-                    && !configuration.getTransportAddressesList().isEmpty()) {
+                && !configuration.getTransportAddressesList().isEmpty()) {
                 List<TransportAddress> addresses = new ArrayList<TransportAddress>(configuration.getTransportAddressesList().size());
                 for (TransportAddress address : configuration.getTransportAddressesList()) {
                     addresses.add(address);
                 }
-                client = new PreBuiltXPackTransportClient(getSettings()).addTransportAddresses(addresses.toArray(new TransportAddress[addresses.size()]));
+                client = createClient().addTransportAddresses(addresses.toArray(new TransportAddress[addresses.size()]));
             } else {
                 LOG.info("Incorrect ip address and port parameters settings for ElasticSearch cluster");
             }
         }
     }
 
-    private Settings getSettings() {
+    private TransportClient createClient() {
+        final Settings.Builder settings = getSettings();
+        try {
+            Class clazz = Class.forName("org.elasticsearch.xpack.client.PreBuiltXPackTransportClient");
+            Constructor<?> ctor = clazz.getConstructor(Settings.class, Class[].class);
+            settings.put("xpack.security.user", configuration.getUser() + ":" + configuration.getPassword())
+                .put("xpack.security.transport.ssl.enabled", configuration.getEnableSSL());
+            return (TransportClient) ctor.newInstance(new Object[] {settings.build(), new Class[0]});
+        } catch (Exception e) {
+            LOG.info("XPack Client was not found on the classpath, using the standard client");
+            return new PreBuiltTransportClient(settings.build());
+        }
+    }
+
+    private Settings.Builder getSettings() {
         final Settings.Builder settings = Settings.builder()
             .put("cluster.name", configuration.getClusterName())
             .put("client.transport.sniff", configuration.getClientTransportSniff())
             .put("transport.ping_schedule", configuration.getPingSchedule())
             .put("client.transport.ping_timeout", configuration.getPingTimeout())
             .put("client.transport.sniff", configuration.getClientTransportSniff())
-            .put("request.headers.X-Found-Cluster", configuration.getClusterName());//according to the documentation this should be the same as cluster name
-
-        if (configuration.getUser() != null && configuration.getPassword() != null) {
-            settings.put("xpack.security.user", configuration.getUser() +":"+ configuration.getPassword())
-            .put("xpack.security.transport.ssl.enabled", configuration.getEnableSSL());
-        }
-        return settings.build();
+            .put("request.headers.X-Found-Cluster", configuration.getClusterName());
+        return settings;
     }
 
     @Override
@@ -259,4 +268,8 @@ public class ElasticsearchProducer extends DefaultProducer {
         }
         super.doStop();
     }
+
+    public TransportClient getClient() {
+        return client;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/f3b111bf/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
index 4209393..99885ff 100644
--- a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
+++ b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
@@ -33,7 +33,7 @@ import org.elasticsearch.node.InternalSettingsPreparer;
 import org.elasticsearch.node.Node;
 import org.elasticsearch.plugins.Plugin;
 import org.elasticsearch.transport.Netty4Plugin;
-import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
+import org.elasticsearch.transport.client.PreBuiltTransportClient;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
@@ -62,7 +62,7 @@ public class ElasticsearchBaseTest extends CamelTestSupport {
             .put("path.home", "target/home")
             .put("transport.profiles.default.port", ES_TRANSPORT_PORT)
             .build(), Arrays.asList(Netty4Plugin.class)).start();
-        client = new PreBuiltXPackTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), ES_TRANSPORT_PORT));
+        client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), ES_TRANSPORT_PORT));
     }
 
     @AfterClass


[4/5] camel git commit: [CAMEL-11597] Disable sniffing by default.

Posted by da...@apache.org.
[CAMEL-11597] Disable sniffing by default.

-Remove client.transport.ignore_cluster_name setting
-Rename property


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

Branch: refs/heads/master
Commit: 811d6f75ace6df2be5076018357e5b3b4a02e89d
Parents: dc56d62
Author: fharms <fl...@gmail.com>
Authored: Thu Jul 27 10:53:34 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 30 10:47:26 2017 +0200

----------------------------------------------------------------------
 .../elasticsearch5/ElasticsearchConfiguration.java    | 14 +++++++-------
 .../elasticsearch5/ElasticsearchProducer.java         |  6 ++----
 2 files changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/811d6f75/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
index b24c662..a0c423f 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
@@ -45,8 +45,8 @@ public class ElasticsearchConfiguration {
     private String transportAddresses;
     @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PORT)
     private int port = ElasticsearchConstants.DEFAULT_PORT;
-    @UriParam(defaultValue = "true")
-    private Boolean clientTransportSniff = true;
+    @UriParam(defaultValue = "false")
+    private Boolean clientTransportSniff = false;
     @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_SCHEDULE)
     private String pingSchedule = ElasticsearchConstants.DEFAULT_PING_SCHEDULE;
     @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_TIMEOUT)
@@ -60,7 +60,7 @@ public class ElasticsearchConfiguration {
     @UriParam(secret = true)
     private String password;
     @UriParam(defaultValue = "false")
-    private Boolean enabledSSL = false;
+    private Boolean enableSSL = false;
 
 
     /**
@@ -230,12 +230,12 @@ public class ElasticsearchConfiguration {
     /**
      * Enable SSL
      */
-    public Boolean getEnabledSSL() {
-        return enabledSSL;
+    public Boolean getEnableSSL() {
+        return enableSSL;
     }
 
-    public void setEnabledSSL(Boolean enabledSSL) {
-        this.enabledSSL = enabledSSL;
+    public void setEnableSSL(Boolean enableSSL) {
+        this.enableSSL = enableSSL;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/811d6f75/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
index a6b0c91..03390de 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
@@ -38,7 +38,6 @@ import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
 import org.elasticsearch.common.transport.TransportAddress;
 import org.elasticsearch.index.IndexNotFoundException;
-import org.elasticsearch.transport.client.PreBuiltTransportClient;
 import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -228,7 +227,7 @@ public class ElasticsearchProducer extends DefaultProducer {
                 for (TransportAddress address : configuration.getTransportAddressesList()) {
                     addresses.add(address);
                 }
-                client = new PreBuiltTransportClient(getSettings()).addTransportAddresses(addresses.toArray(new TransportAddress[addresses.size()]));
+                client = new PreBuiltXPackTransportClient(getSettings()).addTransportAddresses(addresses.toArray(new TransportAddress[addresses.size()]));
             } else {
                 LOG.info("Incorrect ip address and port parameters settings for ElasticSearch cluster");
             }
@@ -238,7 +237,6 @@ public class ElasticsearchProducer extends DefaultProducer {
     private Settings getSettings() {
         final Settings.Builder settings = Settings.builder()
             .put("cluster.name", configuration.getClusterName())
-            .put("client.transport.ignore_cluster_name", false)
             .put("client.transport.sniff", configuration.getClientTransportSniff())
             .put("transport.ping_schedule", configuration.getPingSchedule())
             .put("client.transport.ping_timeout", configuration.getPingTimeout())
@@ -247,7 +245,7 @@ public class ElasticsearchProducer extends DefaultProducer {
 
         if (configuration.getUser() != null && configuration.getPassword() != null) {
             settings.put("xpack.security.user", configuration.getUser() +":"+ configuration.getPassword())
-            .put("xpack.security.transport.ssl.enabled", configuration.getEnabledSSL());
+            .put("xpack.security.transport.ssl.enabled", configuration.getEnableSSL());
         }
         return settings.build();
     }


[5/5] camel git commit: CAMEL-11597: Polished. This closes #1857.

Posted by da...@apache.org.
CAMEL-11597: Polished. This closes #1857.


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

Branch: refs/heads/master
Commit: 6cc7ca4c6e6b74d50d68e3c1cb79f0c0b5b01cf4
Parents: fe99945
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 30 11:03:19 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 30 11:03:45 2017 +0200

----------------------------------------------------------------------
 .../src/main/docs/elasticsearch5-component.adoc | 22 ++++++++++++++---
 .../ElasticsearchConfiguration.java             | 26 ++++++++++----------
 .../elasticsearch5/ElasticsearchEndpoint.java   |  4 ---
 .../elasticsearch5/ElasticsearchProducer.java   | 25 ++++++++-----------
 .../ElasticsearchComponentConfiguration.java    | 17 +++++++++++++
 5 files changed, 59 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6cc7ca4c/components/camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc b/components/camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc
index 76590b1..0210882 100644
--- a/components/camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc
+++ b/components/camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc
@@ -31,7 +31,16 @@ elasticsearch5://clusterName[?options]
 
 
 // component options: START
-The Elasticsearch5 component has no options.
+The Elasticsearch5 component supports 2 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **client** (advanced) | To use an existing configured Elasticsearch client instead of creating a client per endpoint. This allow to customize the client with specific settings. |  | TransportClient
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
 // component options: END
 
 
@@ -53,20 +62,27 @@ with the following path and query parameters:
 | **clusterName** | *Required* Name of the cluster |  | String
 |=======================================================================
 
-#### Query Parameters (9 parameters):
+#### Query Parameters (16 parameters):
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |=======================================================================
 | Name | Description | Default | Type
-| **clientTransportSniff** (producer) | Is the client allowed to sniff the rest of the cluster or not (default true). This setting map to the client.transport.sniff setting. | true | Boolean
+| **clientTransportSniff** (producer) | Is the client allowed to sniff the rest of the cluster or not (default true). This setting map to the client.transport.sniff setting. | false | boolean
 | **indexName** (producer) | The name of the index to act against |  | String
 | **indexType** (producer) | The type of the index to act against |  | String
 | **ip** (producer) | The TransportClient remote host ip to use |  | String
 | **operation** (producer) | What operation to perform |  | ElasticsearchOperation
+| **pingSchedule** (producer) | The time(in unit) the client ping the cluster. | 5s | String
+| **pingTimeout** (producer) | The time(in unit) to wait for a ping response from a node too return. | 5s | String
 | **port** (producer) | The TransportClient remote port to use (defaults to 9300) | 9300 | int
+| **tcpCompress** (producer) | true if compression (LZF) enable between all nodes. | false | boolean
+| **tcpConnectTimeout** (producer) | The time( in unit) to wait for connection timeout. | 30s | String
 | **transportAddresses** (producer) | Comma separated list with ip:port formatted remote transport addresses to use. The ip and port options must be left blank for transportAddresses to be considered instead. |  | String
 | **waitForActiveShards** (producer) | Index creation waits for the write consistency number of shards to be available | 1 | int
 | **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| **enableSSL** (security) | Enable SSL. Require XPack client jar on the classpath | false | boolean
+| **password** (authentication) | Password for authenticate against the cluster. Require XPack client jar on the classpath |  | String
+| **user** (authentication) | User for authenticate against the cluster. Requires transport_client role for accessing the cluster. Require XPack client jar on the classpath |  | String
 |=======================================================================
 // endpoint options: END
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6cc7ca4c/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
index 25eddca..eff8388 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
@@ -45,22 +45,22 @@ public class ElasticsearchConfiguration {
     private String transportAddresses;
     @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PORT)
     private int port = ElasticsearchConstants.DEFAULT_PORT;
-    @UriParam(defaultValue = "false")
-    private Boolean clientTransportSniff = false;
+    @UriParam
+    private boolean clientTransportSniff;
     @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PING_SCHEDULE)
     private String pingSchedule = ElasticsearchConstants.DEFAULT_PING_SCHEDULE;
     @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_PING_TIMEOUT)
     private String pingTimeout = ElasticsearchConstants.DEFAULT_PING_TIMEOUT;
     @UriParam(defaultValue = "" + ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT)
     private String tcpConnectTimeout = ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT;
-    @UriParam(defaultValue = "false")
-    private Boolean tcpCompress = false;
     @UriParam
+    private boolean tcpCompress;
+    @UriParam(label = "authentication")
     private String user;
-    @UriParam(secret = true)
+    @UriParam(label = "authentication", secret = true)
     private String password;
-    @UriParam(defaultValue = "false")
-    private Boolean enableSSL = false;
+    @UriParam(label = "advanced,security")
+    private boolean enableSSL;
 
 
     /**
@@ -155,11 +155,11 @@ public class ElasticsearchConfiguration {
     /**
      * Is the client allowed to sniff the rest of the cluster or not (default true). This setting map to the <tt>client.transport.sniff</tt> setting.
      */
-    public Boolean getClientTransportSniff() {
+    public boolean getClientTransportSniff() {
         return clientTransportSniff;
     }
 
-    public void setClientTransportSniff(Boolean clientTransportSniff) {
+    public void setClientTransportSniff(boolean clientTransportSniff) {
         this.clientTransportSniff = clientTransportSniff;
     }
 
@@ -196,11 +196,11 @@ public class ElasticsearchConfiguration {
     /**
      * true if compression (LZF) enable between all nodes.
      */
-    public Boolean getTcpCompress() {
+    public boolean getTcpCompress() {
         return tcpCompress;
     }
 
-    public void setTcpCompress(Boolean tcpCompress) {
+    public void setTcpCompress(boolean tcpCompress) {
         this.tcpCompress = tcpCompress;
     }
 
@@ -230,11 +230,11 @@ public class ElasticsearchConfiguration {
     /**
      * Enable SSL. Require XPack client jar on the classpath
      */
-    public Boolean getEnableSSL() {
+    public boolean getEnableSSL() {
         return enableSSL;
     }
 
-    public void setEnableSSL(Boolean enableSSL) {
+    public void setEnableSSL(boolean enableSSL) {
         this.enableSSL = enableSSL;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6cc7ca4c/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
index 9618097..5835b31 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
@@ -23,8 +23,6 @@ import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.elasticsearch.client.transport.TransportClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The elasticsearch component is used for interfacing with ElasticSearch server using 5.x API.
@@ -32,8 +30,6 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "2.19.0", scheme = "elasticsearch5", title = "Elasticsearch5", syntax = "elasticsearch5:clusterName", producerOnly = true, label = "monitoring,search")
 public class ElasticsearchEndpoint extends DefaultEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchEndpoint.class);
-
     @UriParam
     protected final ElasticsearchConfiguration configuration;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6cc7ca4c/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
index 3830a6f..ad74f7a 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.elasticsearch5;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
@@ -83,9 +82,9 @@ public class ElasticsearchProducer extends DefaultProducer {
         } else if (request instanceof BulkRequest) {
             // do we want bulk or bulk_index?
             if (configuration.getOperation() == ElasticsearchOperation.BULK_INDEX) {
-                return configuration.getOperation().BULK_INDEX;
+                return ElasticsearchOperation.BULK_INDEX;
             } else {
-                return configuration.getOperation().BULK;
+                return ElasticsearchOperation.BULK;
             }
         } else if (request instanceof DeleteRequest) {
             return ElasticsearchOperation.DELETE;
@@ -219,16 +218,12 @@ public class ElasticsearchProducer extends DefaultProducer {
         super.doStart();
 
         if (client == null) {
-            LOG.info("Connecting to the ElasticSearch cluster: " + configuration.getClusterName());
+            LOG.info("Connecting to the ElasticSearch cluster: {}", configuration.getClusterName());
             if (configuration.getIp() != null) {
-                client = createClient()
-                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(configuration.getIp()), configuration.getPort()));
-            } else if (configuration.getTransportAddressesList() != null
-                && !configuration.getTransportAddressesList().isEmpty()) {
+                client = createClient().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(configuration.getIp()), configuration.getPort()));
+            } else if (configuration.getTransportAddressesList() != null && !configuration.getTransportAddressesList().isEmpty()) {
                 List<TransportAddress> addresses = new ArrayList<TransportAddress>(configuration.getTransportAddressesList().size());
-                for (TransportAddress address : configuration.getTransportAddressesList()) {
-                    addresses.add(address);
-                }
+                addresses.addAll(configuration.getTransportAddressesList());
                 client = createClient().addTransportAddresses(addresses.toArray(new TransportAddress[addresses.size()]));
             } else {
                 LOG.info("Incorrect ip address and port parameters settings for ElasticSearch cluster");
@@ -236,7 +231,7 @@ public class ElasticsearchProducer extends DefaultProducer {
         }
     }
 
-    private TransportClient createClient() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
+    private TransportClient createClient() throws Exception {
         final Settings.Builder settings = getSettings();
         final CamelContext camelContext = getEndpoint().getCamelContext();
         final Class<?> clazz = camelContext.getClassResolver().resolveClass("org.elasticsearch.xpack.client.PreBuiltXPackTransportClient");
@@ -244,10 +239,10 @@ public class ElasticsearchProducer extends DefaultProducer {
             Constructor<?> ctor = clazz.getConstructor(Settings.class, Class[].class);
             settings.put("xpack.security.user", configuration.getUser() + ":" + configuration.getPassword())
                 .put("xpack.security.transport.ssl.enabled", configuration.getEnableSSL());
-            LOG.debug("XPack Client was found on the classpath");
-            return (TransportClient) ctor.newInstance(new Object[] {settings.build(), new Class[0]});
+            LOG.info("XPack Client was found on the classpath");
+            return (TransportClient) ctor.newInstance(new Object[]{settings.build(), new Class[0]});
         } else {
-            LOG.debug("XPack Client was not found on the classpath, using the standard client");
+            LOG.debug("XPack Client was not found on the classpath, using the standard client.");
             return new PreBuiltTransportClient(settings.build());
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/6cc7ca4c/platforms/spring-boot/components-starter/camel-elasticsearch5-starter/src/main/java/org/apache/camel/component/elasticsearch5/springboot/ElasticsearchComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-elasticsearch5-starter/src/main/java/org/apache/camel/component/elasticsearch5/springboot/ElasticsearchComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-elasticsearch5-starter/src/main/java/org/apache/camel/component/elasticsearch5/springboot/ElasticsearchComponentConfiguration.java
index ed8752c..4d87828 100644
--- a/platforms/spring-boot/components-starter/camel-elasticsearch5-starter/src/main/java/org/apache/camel/component/elasticsearch5/springboot/ElasticsearchComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-elasticsearch5-starter/src/main/java/org/apache/camel/component/elasticsearch5/springboot/ElasticsearchComponentConfiguration.java
@@ -18,7 +18,9 @@ package org.apache.camel.component.elasticsearch5.springboot;
 
 import javax.annotation.Generated;
 import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.elasticsearch.client.transport.TransportClient;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * The elasticsearch component is used for interfacing with ElasticSearch server
@@ -33,12 +35,27 @@ public class ElasticsearchComponentConfiguration
             ComponentConfigurationPropertiesCommon {
 
     /**
+     * To use an existing configured Elasticsearch client instead of creating a
+     * client per endpoint. This allow to customize the client with specific
+     * settings.
+     */
+    @NestedConfigurationProperty
+    private TransportClient client;
+    /**
      * Whether the component should resolve property placeholders on itself when
      * starting. Only properties which are of String type can use property
      * placeholders.
      */
     private Boolean resolvePropertyPlaceholders = true;
 
+    public TransportClient getClient() {
+        return client;
+    }
+
+    public void setClient(TransportClient client) {
+        this.client = client;
+    }
+
     public Boolean getResolvePropertyPlaceholders() {
         return resolvePropertyPlaceholders;
     }


[3/5] camel git commit: [CAMEL-11597] Adding support for authentication with x-pack

Posted by da...@apache.org.
[CAMEL-11597] Adding support for authentication with x-pack

- Upgrade ElasticSearch to 5.5
- Adding support for overriding the client for advance use cases


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

Branch: refs/heads/master
Commit: dc56d620de66a76cb131e1fa3172c9de46dcd312
Parents: 57a3a3d
Author: fharms <fl...@gmail.com>
Authored: Wed Jul 26 20:16:26 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 30 10:47:26 2017 +0200

----------------------------------------------------------------------
 components/camel-elasticsearch5/pom.xml         | 19 ++++
 .../elasticsearch5/ElasticsearchComponent.java  | 19 +++-
 .../ElasticsearchConfiguration.java             | 93 ++++++++++++++++++++
 .../elasticsearch5/ElasticsearchConstants.java  |  3 +
 .../elasticsearch5/ElasticsearchEndpoint.java   |  9 +-
 .../elasticsearch5/ElasticsearchProducer.java   | 23 +++--
 .../elasticsearch5/ElasticsearchBaseTest.java   |  4 +-
 .../ElasticsearchClusterBaseTest.java           |  2 +-
 parent/pom.xml                                  |  2 +-
 9 files changed, 161 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/pom.xml b/components/camel-elasticsearch5/pom.xml
index 8342eaf..e7014cd 100644
--- a/components/camel-elasticsearch5/pom.xml
+++ b/components/camel-elasticsearch5/pom.xml
@@ -38,6 +38,20 @@
     <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=elasticsearch5</camel.osgi.export.service>
   </properties>
 
+  <repositories>
+    <!-- add the elasticsearch repo -->
+    <repository>
+      <id>elasticsearch-releases</id>
+      <url>https://artifacts.elastic.co/maven</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.camel</groupId>
@@ -49,6 +63,11 @@
       <version>${elasticsearch5-version}</version>
     </dependency>
     <dependency>
+      <groupId>org.elasticsearch.client</groupId>
+      <artifactId>x-pack-transport</artifactId>
+      <version>${elasticsearch5-version}</version>
+    </dependency>
+    <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <version>${jackson2-version}</version>

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchComponent.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchComponent.java
index cb3cd6c..ed8a060 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchComponent.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchComponent.java
@@ -35,6 +35,9 @@ import org.elasticsearch.common.transport.InetSocketTransportAddress;
  */
 public class ElasticsearchComponent extends UriEndpointComponent {
 
+    @Metadata(label = "advanced")
+    private TransportClient client;
+
     public ElasticsearchComponent() {
         super(ElasticsearchEndpoint.class);
     }
@@ -50,7 +53,7 @@ public class ElasticsearchComponent extends UriEndpointComponent {
         
         config.setTransportAddressesList(parseTransportAddresses(config.getTransportAddresses(), config));
         
-        Endpoint endpoint = new ElasticsearchEndpoint(uri, this, config);
+        Endpoint endpoint = new ElasticsearchEndpoint(uri, this, config, client);
         return endpoint;
     }
     
@@ -73,4 +76,16 @@ public class ElasticsearchComponent extends UriEndpointComponent {
         }
         return addressesTrAd;
     }
-}
\ No newline at end of file
+
+    public TransportClient getClient() {
+        return client;
+    }
+
+    /**
+     * To use an existing configured Elasticsearch client, instead of creating a client per endpoint.
+     * This allow to customize the client with specific settings.
+     */
+    public void setClient(TransportClient client) {
+        this.client = client;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
index ca09954..b24c662 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConfiguration.java
@@ -47,6 +47,21 @@ public class ElasticsearchConfiguration {
     private int port = ElasticsearchConstants.DEFAULT_PORT;
     @UriParam(defaultValue = "true")
     private Boolean clientTransportSniff = true;
+    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_SCHEDULE)
+    private String pingSchedule = ElasticsearchConstants.DEFAULT_PING_SCHEDULE;
+    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_PING_TIMEOUT)
+    private String pingTimeout = ElasticsearchConstants.DEFAULT_PING_TIMEOUT;
+    @UriParam(defaultValue = "" +ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT)
+    private String tcpConnectTimeout = ElasticsearchConstants.DEFAULT_TCP_CONNECT_TIMEOUT;
+    @UriParam(defaultValue = "false")
+    private Boolean tcpCompress = false;
+    @UriParam
+    private String user;
+    @UriParam(secret = true)
+    private String password;
+    @UriParam(defaultValue = "false")
+    private Boolean enabledSSL = false;
+
 
     /**
      * Name of the cluster
@@ -155,4 +170,82 @@ public class ElasticsearchConfiguration {
     public void setTransportAddressesList(List<InetSocketTransportAddress> transportAddressesList) {
         this.transportAddressesList = transportAddressesList;
     }
+
+    /**
+     * The time(in unit) the client ping the cluster.
+     */
+    public String getPingSchedule() {
+        return pingSchedule;
+    }
+
+    public void setPingSchedule(String pingSchedule) {
+        this.pingSchedule = pingSchedule;
+    }
+
+    /**
+     *  The time( in unit) to wait for connection timeout.
+     */
+    public String getTcpConnectTimeout() {
+        return tcpConnectTimeout;
+    }
+
+    public void setTcpConnectTimeout(String tcpConnectTimeout) {
+        this.tcpConnectTimeout = tcpConnectTimeout;
+    }
+
+    /**
+     * true if compression (LZF) enable between all nodes.
+     */
+    public Boolean getTcpCompress() {
+        return tcpCompress;
+    }
+
+    public void setTcpCompress(Boolean tcpCompress) {
+        this.tcpCompress = tcpCompress;
+    }
+
+    /**
+     *  User for authenticate against the cluster. Requires "transport_client" role
+     *  for accessing the cluster
+     */
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    /**
+     *  Password for authenticate against the cluster
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    /**
+     * Enable SSL
+     */
+    public Boolean getEnabledSSL() {
+        return enabledSSL;
+    }
+
+    public void setEnabledSSL(Boolean enabledSSL) {
+        this.enabledSSL = enabledSSL;
+    }
+
+    /**
+     * The time(in unit) to wait for a ping response from a node too return.
+     */
+    public String getPingTimeout() {
+        return pingTimeout;
+    }
+
+    public void setPingTimeout(String pingTimeout) {
+        this.pingTimeout = pingTimeout;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConstants.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConstants.java
index 6c31173..c77f32f 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConstants.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchConstants.java
@@ -32,6 +32,9 @@ public interface ElasticsearchConstants {
     String PORT = "port";
     int    DEFAULT_PORT = 9300;
     int    DEFAULT_FOR_WAIT_ACTIVE_SHARDS = 1; // Meaning only wait for the primary shard
+    String DEFAULT_PING_SCHEDULE = "5s"; // Meaning how often it should ping the cluster
+    String DEFAULT_PING_TIMEOUT = "5s"; // Meaning how long to wait for ping before timeout
+    String DEFAULT_TCP_CONNECT_TIMEOUT = "30s"; // Meaning how many seconds before it timeout when establish connection
     String TRANSPORT_ADDRESSES_SEPARATOR_REGEX = ",";
     String IP_PORT_SEPARATOR_REGEX = ":";
     String ES_QUERY_DSL_PREFIX = "query";

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
index 8a845e9..a75634b 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchEndpoint.java
@@ -24,6 +24,7 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.elasticsearch.client.transport.TransportClient;
 
 /**
  * The elasticsearch component is used for interfacing with ElasticSearch server using 5.x API.
@@ -33,12 +34,14 @@ public class ElasticsearchEndpoint extends DefaultEndpoint {
 
     private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchEndpoint.class);
 
+    private TransportClient client;
     @UriParam
     protected final ElasticsearchConfiguration configuration;
 
-    public ElasticsearchEndpoint(String uri, ElasticsearchComponent component, ElasticsearchConfiguration config) throws Exception {
+    public ElasticsearchEndpoint(String uri, ElasticsearchComponent component, ElasticsearchConfiguration config, TransportClient client) throws Exception {
         super(uri, component);
         this.configuration = config;
+        this.client = client;
     }
 
     public Producer createProducer() throws Exception {
@@ -52,4 +55,8 @@ public class ElasticsearchEndpoint extends DefaultEndpoint {
     public boolean isSingleton() {
         return true;
     }
+
+    public TransportClient getClient() {
+        return client;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
index c0aaff9..a6b0c91 100644
--- a/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch5/src/main/java/org/apache/camel/component/elasticsearch5/ElasticsearchProducer.java
@@ -39,6 +39,7 @@ import org.elasticsearch.common.transport.InetSocketTransportAddress;
 import org.elasticsearch.common.transport.TransportAddress;
 import org.elasticsearch.index.IndexNotFoundException;
 import org.elasticsearch.transport.client.PreBuiltTransportClient;
+import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,6 +56,7 @@ public class ElasticsearchProducer extends DefaultProducer {
     public ElasticsearchProducer(ElasticsearchEndpoint endpoint, ElasticsearchConfiguration configuration) {
         super(endpoint);
         this.configuration = configuration;
+        this.client = endpoint.getClient();
     }
 
     private ElasticsearchOperation resolveOperation(Exchange exchange) {
@@ -218,7 +220,7 @@ public class ElasticsearchProducer extends DefaultProducer {
             LOG.info("Connecting to the ElasticSearch cluster: " + configuration.getClusterName());
             
             if (configuration.getIp() != null) {
-                client = new PreBuiltTransportClient(getSettings())
+                client = new PreBuiltXPackTransportClient(getSettings())
                     .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(configuration.getIp()), configuration.getPort()));
             } else if (configuration.getTransportAddressesList() != null
                     && !configuration.getTransportAddressesList().isEmpty()) {
@@ -234,11 +236,20 @@ public class ElasticsearchProducer extends DefaultProducer {
     }
 
     private Settings getSettings() {
-        return Settings.builder()
-                .put("cluster.name", configuration.getClusterName())
-                .put("client.transport.ignore_cluster_name", false)
-                .put("client.transport.sniff", configuration.getClientTransportSniff())
-                .build();
+        final Settings.Builder settings = Settings.builder()
+            .put("cluster.name", configuration.getClusterName())
+            .put("client.transport.ignore_cluster_name", false)
+            .put("client.transport.sniff", configuration.getClientTransportSniff())
+            .put("transport.ping_schedule", configuration.getPingSchedule())
+            .put("client.transport.ping_timeout", configuration.getPingTimeout())
+            .put("client.transport.sniff", configuration.getClientTransportSniff())
+            .put("request.headers.X-Found-Cluster", configuration.getClusterName());//according to the documentation this should be the same as cluster name
+
+        if (configuration.getUser() != null && configuration.getPassword() != null) {
+            settings.put("xpack.security.user", configuration.getUser() +":"+ configuration.getPassword())
+            .put("xpack.security.transport.ssl.enabled", configuration.getEnabledSSL());
+        }
+        return settings.build();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
index 99885ff..4209393 100644
--- a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
+++ b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchBaseTest.java
@@ -33,7 +33,7 @@ import org.elasticsearch.node.InternalSettingsPreparer;
 import org.elasticsearch.node.Node;
 import org.elasticsearch.plugins.Plugin;
 import org.elasticsearch.transport.Netty4Plugin;
-import org.elasticsearch.transport.client.PreBuiltTransportClient;
+import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
@@ -62,7 +62,7 @@ public class ElasticsearchBaseTest extends CamelTestSupport {
             .put("path.home", "target/home")
             .put("transport.profiles.default.port", ES_TRANSPORT_PORT)
             .build(), Arrays.asList(Netty4Plugin.class)).start();
-        client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), ES_TRANSPORT_PORT));
+        client = new PreBuiltXPackTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), ES_TRANSPORT_PORT));
     }
 
     @AfterClass

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchClusterBaseTest.java
----------------------------------------------------------------------
diff --git a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchClusterBaseTest.java b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchClusterBaseTest.java
index ac6d323..89245bf 100644
--- a/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchClusterBaseTest.java
+++ b/components/camel-elasticsearch5/src/test/java/org/apache/camel/component/elasticsearch5/ElasticsearchClusterBaseTest.java
@@ -64,7 +64,7 @@ public class ElasticsearchClusterBaseTest extends CamelTestSupport {
                  .baseTransportPort(ES_BASE_TRANSPORT_PORT)
                  .baseHttpPort(ES_BASE_HTTP_PORT)
                  .basePath("target/testcluster/")
-                 .useLogger());
+                 .disableESLogger());
 
         // wait for green status
         runner.ensureGreen();

http://git-wip-us.apache.org/repos/asf/camel/blob/dc56d620/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index feceb87..ad0e4f9 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -197,7 +197,7 @@
     <elasticsearch-bundle-version>2.4.4_1</elasticsearch-bundle-version>
     <elasticsearch-guava-version>18.0</elasticsearch-guava-version>
     <elasticsearch-version>2.4.4</elasticsearch-version>
-    <elasticsearch5-version>5.4.3</elasticsearch5-version>
+    <elasticsearch5-version>5.5.0</elasticsearch5-version>
     <elasticsearch5-bundle-version>5.4.3_1</elasticsearch5-bundle-version>
     <elasticsearch-cluster-runner-version>2.4.0.0</elasticsearch-cluster-runner-version>
     <elasticsearch5-cluster-runner-version>5.4.2.0</elasticsearch5-cluster-runner-version>