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());
}