You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2014/09/24 11:58:37 UTC

git commit: METAMODEL-77: Made build also work on JDK6 - with older ElasticSearch version.

Repository: incubator-metamodel
Updated Branches:
  refs/heads/master 6aeb35073 -> bc956daf8


METAMODEL-77: Made build also work on JDK6 - with older ElasticSearch
version.

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

Branch: refs/heads/master
Commit: bc956daf83c12160c1b5bdbdec6192345cf1a0ef
Parents: 6aeb350
Author: Kasper Sørensen <i....@gmail.com>
Authored: Wed Sep 24 11:58:33 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Wed Sep 24 11:58:33 2014 +0200

----------------------------------------------------------------------
 .../elasticsearch/ElasticSearchDataContext.java | 26 ++++++++++++++++++--
 .../ElasticSearchDataContextTest.java           |  7 +++---
 2 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/bc956daf/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
index 651a828..9db94fd 100644
--- a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
+++ b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
@@ -18,6 +18,7 @@
  */
 package org.apache.metamodel.elasticsearch;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -36,6 +37,8 @@ import org.apache.metamodel.schema.MutableTable;
 import org.apache.metamodel.schema.Schema;
 import org.apache.metamodel.schema.Table;
 import org.apache.metamodel.util.SimpleTableDef;
+import org.elasticsearch.Version;
+import org.elasticsearch.action.admin.cluster.state.ClusterStateRequestBuilder;
 import org.elasticsearch.action.count.CountResponse;
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
@@ -122,8 +125,27 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext implem
      *         user.
      */
     public static SimpleTableDef[] detectSchema(Client client, String indexName) {
-        final ClusterState cs = client.admin().cluster().prepareState().setIndices(indexName).execute().actionGet()
-                .getState();
+        final ClusterState cs;
+        final ClusterStateRequestBuilder clusterStateRequestBuilder = client.admin().cluster().prepareState();
+
+        // different methods here to set the index name, so we have to use
+        // reflection :-/
+        try {
+            final byte majorVersion = Version.CURRENT.major;
+            final Object methodArgument = new String[] { indexName };
+            if (majorVersion == 0) {
+                final Method method = ClusterStateRequestBuilder.class.getMethod("setFilterIndices", String[].class);
+                method.invoke(clusterStateRequestBuilder, methodArgument);
+            } else {
+                final Method method = ClusterStateRequestBuilder.class.getMethod("setIndices", String[].class);
+                method.invoke(clusterStateRequestBuilder, methodArgument);
+            }
+        } catch (Exception e) {
+            logger.error("Failed to set index name on ClusterStateRequestBuilder, version {}", Version.CURRENT, e);
+            throw new MetaModelException("Failed to create request for index information needed to detect schema", e);
+        }
+        cs = clusterStateRequestBuilder.execute().actionGet().getState();
+
         final IndexMetaData imd = cs.getMetaData().index(indexName);
         final ImmutableOpenMap<String, MappingMetaData> mappings = imd.getMappings();
         final ObjectLookupContainer<String> documentTypes = mappings.keys();

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/bc956daf/elasticsearch/src/test/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContextTest.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/test/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContextTest.java b/elasticsearch/src/test/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContextTest.java
index 89690d3..5435f58 100644
--- a/elasticsearch/src/test/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContextTest.java
+++ b/elasticsearch/src/test/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContextTest.java
@@ -159,17 +159,16 @@ public class ElasticSearchDataContextTest {
                 new SelectItem(FunctionType.MAX, table.getColumnByName("age")),
                 new SelectItem(FunctionType.MIN, table.getColumnByName("age")), new SelectItem(FunctionType.COUNT, "*",
                         "total"), new SelectItem(FunctionType.MIN, table.getColumnByName("id")).setAlias("firstId"));
+        q.orderBy("gender");
         DataSet data = dataContext.executeQuery(q);
         assertEquals(
                 "[peopletype.gender, MAX(peopletype.age), MIN(peopletype.age), COUNT(*) AS total, MIN(peopletype.id) AS firstId]",
                 Arrays.toString(data.getSelectItems()));
 
-        String[] expectations = new String[] { "Row[values=[female, 20, 17, 5, 5]]", "Row[values=[male, 19, 17, 4, 1]]" };
-
         assertTrue(data.next());
-        assertTrue(Arrays.asList(expectations).contains(data.getRow().toString()));
+        assertEquals("Row[values=[female, 20, 17, 5, 5]]", data.getRow().toString());
         assertTrue(data.next());
-        assertTrue(Arrays.asList(expectations).contains(data.getRow().toString()));
+        assertEquals("Row[values=[male, 19, 17, 4, 1]]", data.getRow().toString());
         assertFalse(data.next());
     }