diff --git a/pom.xml b/pom.xml index 5a24f2b17..d1df59e83 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 3.2.1 2.6 - 6.1.0 + 6.2.2 2.9.1 2.1.0.BUILD-SNAPSHOT spring.data.elasticsearch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 1a6d78b7d..c02ed1f31 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -29,6 +29,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; +import java.util.stream.Collectors; import org.elasticsearch.action.ActionFuture; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest; @@ -961,16 +962,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati @Override public Map getSetting(String indexName) { Assert.notNull(indexName, "No index defined for getSettings"); - Settings settings = client.admin().indices().getSettings(new GetSettingsRequest()).actionGet().getIndexToSettings() - .get(indexName); - - SortedMap settingsMap = new TreeMap<>(); - - settings.keySet().forEach((key) -> { - settingsMap.put(key, String.valueOf(settings.get(key))); - }); - - return Collections.unmodifiableSortedMap(settingsMap); + Settings settings = client.admin().indices().getSettings(new GetSettingsRequest()).actionGet() + .getIndexToSettings().get(indexName); + return settings.keySet().stream().collect(Collectors.toMap((key)->key, (key)->settings.get(key))); } private SearchRequestBuilder prepareSearch(Query query, Class clazz) { diff --git a/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java b/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java new file mode 100644 index 000000000..c5996f099 --- /dev/null +++ b/src/test/java/org/elasticsearch/plugins/ExtendedPluginsClassLoader.java @@ -0,0 +1,62 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch 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.elasticsearch.plugins; + +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Collections; +import java.util.List; + +/** + * A classloader that is a union over the parent core classloader and classloaders of extended plugins. + * Cloned from ES repository + * - that file is only available in ES server libs + * - and we need it o create a node client for unittests + */ +public class ExtendedPluginsClassLoader extends ClassLoader { + + /** Loaders of plugins extended by a plugin. */ + private final List extendedLoaders; + + private ExtendedPluginsClassLoader(ClassLoader parent, List extendedLoaders) { + super(parent); + this.extendedLoaders = Collections.unmodifiableList(extendedLoaders); + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + for (ClassLoader loader : extendedLoaders) { + try { + return loader.loadClass(name); + } catch (ClassNotFoundException e) { + // continue + } + } + throw new ClassNotFoundException(name); + } + + /** + * Return a new classloader across the parent and extended loaders. + */ + public static ExtendedPluginsClassLoader create(ClassLoader parent, List extendedLoaders) { + return AccessController.doPrivileged((PrivilegedAction) + () -> new ExtendedPluginsClassLoader(parent, extendedLoaders)); + } +} \ No newline at end of file diff --git a/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.1.0.jar b/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.1.0.jar deleted file mode 100644 index 3f7482118..000000000 Binary files a/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.1.0.jar and /dev/null differ diff --git a/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.2.2.jar b/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.2.2.jar new file mode 100644 index 000000000..521648ddf Binary files /dev/null and b/src/test/resources/test-home-dir/modules/lang-expression/lang-expression-6.2.2.jar differ diff --git a/src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.1.0.jar b/src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.2.1.jar similarity index 85% rename from src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.1.0.jar rename to src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.2.1.jar index 1c479a24a..a0e0b7be3 100644 Binary files a/src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.1.0.jar and b/src/test/resources/test-home-dir/modules/lang-expression/lucene-expressions-7.2.1.jar differ diff --git a/src/test/resources/test-home-dir/modules/lang-expression/plugin-descriptor.properties b/src/test/resources/test-home-dir/modules/lang-expression/plugin-descriptor.properties index 2486156fe..6ed2760a4 100644 --- a/src/test/resources/test-home-dir/modules/lang-expression/plugin-descriptor.properties +++ b/src/test/resources/test-home-dir/modules/lang-expression/plugin-descriptor.properties @@ -22,7 +22,7 @@ description=Lucene expressions integration for Elasticsearch # # 'version': plugin's version -version=6.1.0 +version=6.2.2 # # 'name': the plugin name name=lang-expression @@ -37,9 +37,12 @@ classname=org.elasticsearch.script.expression.ExpressionPlugin java.version=1.8 # # 'elasticsearch.version': version of elasticsearch compiled against -elasticsearch.version=6.1.0 +elasticsearch.version=6.2.2 ### optional elements for plugins: # +# 'extended.plugins': other plugins this plugin extends through SPI +extended.plugins= +# # 'has.native.controller': whether or not the plugin has a native controller has.native.controller=false #