diff --git a/pom.xml b/pom.xml index b3af829b9..5b22a688d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.springframework.data @@ -150,9 +151,30 @@ asciidoctor-maven-plugin + + + + ${basedir}/src/test/resources + + + ${basedir}/target/test-home-dir + ${basedir}/src/test/es-modules/${elasticsearch} + + **/* + + + + + + es2.3.3 + + 2.3.3 + + + release diff --git a/src/test/resources/test-home-dir/modules/lang-groovy/groovy-all-2.4.4-indy.jar b/src/test/es-modules/2.2.0/modules/lang-groovy/groovy-all-2.4.4-indy.jar similarity index 100% rename from src/test/resources/test-home-dir/modules/lang-groovy/groovy-all-2.4.4-indy.jar rename to src/test/es-modules/2.2.0/modules/lang-groovy/groovy-all-2.4.4-indy.jar diff --git a/src/test/resources/test-home-dir/modules/lang-groovy/lang-groovy-2.2.0.jar b/src/test/es-modules/2.2.0/modules/lang-groovy/lang-groovy-2.2.0.jar similarity index 100% rename from src/test/resources/test-home-dir/modules/lang-groovy/lang-groovy-2.2.0.jar rename to src/test/es-modules/2.2.0/modules/lang-groovy/lang-groovy-2.2.0.jar diff --git a/src/test/resources/test-home-dir/modules/lang-groovy/plugin-descriptor.properties b/src/test/es-modules/2.2.0/modules/lang-groovy/plugin-descriptor.properties similarity index 100% rename from src/test/resources/test-home-dir/modules/lang-groovy/plugin-descriptor.properties rename to src/test/es-modules/2.2.0/modules/lang-groovy/plugin-descriptor.properties diff --git a/src/test/resources/test-home-dir/modules/lang-groovy/plugin-security.policy b/src/test/es-modules/2.2.0/modules/lang-groovy/plugin-security.policy similarity index 100% rename from src/test/resources/test-home-dir/modules/lang-groovy/plugin-security.policy rename to src/test/es-modules/2.2.0/modules/lang-groovy/plugin-security.policy diff --git a/src/test/es-modules/2.3.3/modules/lang-groovy/groovy-2.4.6-indy.jar b/src/test/es-modules/2.3.3/modules/lang-groovy/groovy-2.4.6-indy.jar new file mode 100644 index 000000000..ce3531e0b Binary files /dev/null and b/src/test/es-modules/2.3.3/modules/lang-groovy/groovy-2.4.6-indy.jar differ diff --git a/src/test/es-modules/2.3.3/modules/lang-groovy/lang-groovy-2.3.3.jar b/src/test/es-modules/2.3.3/modules/lang-groovy/lang-groovy-2.3.3.jar new file mode 100644 index 000000000..ad7716aec Binary files /dev/null and b/src/test/es-modules/2.3.3/modules/lang-groovy/lang-groovy-2.3.3.jar differ diff --git a/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-descriptor.properties b/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-descriptor.properties new file mode 100644 index 000000000..92b613b2e --- /dev/null +++ b/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-descriptor.properties @@ -0,0 +1,80 @@ +# Elasticsearch plugin descriptor file +# This file must exist as 'plugin-descriptor.properties' at +# the root directory of all plugins. +# +# A plugin can be 'site', 'jvm', or both. +# +### example site plugin for "foo": +# +# foo.zip <-- zip file for the plugin, with this structure: +# _site/ <-- the contents that will be served +# plugin-descriptor.properties <-- example contents below: +# +# site=true +# description=My cool plugin +# version=1.0 +# +### example jvm plugin for "foo" +# +# foo.zip <-- zip file for the plugin, with this structure: +# .jar <-- classes, resources, dependencies +# .jar <-- any number of jars +# plugin-descriptor.properties <-- example contents below: +# +# jvm=true +# classname=foo.bar.BazPlugin +# description=My cool plugin +# version=2.0.0-rc1 +# elasticsearch.version=2.0 +# java.version=1.7 +# +### mandatory elements for all plugins: +# +# 'description': simple summary of the plugin +description=Groovy scripting integration for Elasticsearch +# +# 'version': plugin's version +version=2.3.3 +# +# 'name': the plugin name +name=lang-groovy + +### mandatory elements for site plugins: +# +# 'site': set to true to indicate contents of the _site/ +# directory in the root of the plugin should be served. +site=false +# +### mandatory elements for jvm plugins : +# +# 'jvm': true if the 'classname' class should be loaded +# from jar files in the root directory of the plugin. +# Note that only jar files in the root directory are +# added to the classpath for the plugin! If you need +# other resources, package them into a resources jar. +jvm=true +# +# 'classname': the name of the class to load, fully-qualified. +classname=org.elasticsearch.script.groovy.GroovyPlugin +# +# 'java.version' version of java the code is built against +# use the system property java.specification.version +# version string must be a sequence of nonnegative decimal integers +# separated by "."'s and may have leading zeros +java.version=1.7 +# +# 'elasticsearch.version' version of elasticsearch compiled against +# You will have to release a new version of the plugin for each new +# elasticsearch release. This version is checked when the plugin +# is loaded so Elasticsearch will refuse to start in the presence of +# plugins with the incorrect elasticsearch.version. +elasticsearch.version=2.3.3 +# +### deprecated elements for jvm plugins : +# +# 'isolated': true if the plugin should have its own classloader. +# passing false is deprecated, and only intended to support plugins +# that have hard dependencies against each other. If this is +# not specified, then the plugin is isolated by default. +isolated=true +# diff --git a/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-security.policy b/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-security.policy new file mode 100644 index 000000000..7a12ea039 --- /dev/null +++ b/src/test/es-modules/2.3.3/modules/lang-groovy/plugin-security.policy @@ -0,0 +1,58 @@ +/* + * 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. + */ + +grant { + // needed to generate runtime classes + permission java.lang.RuntimePermission "createClassLoader"; + // needed by IndyInterface + permission java.lang.RuntimePermission "getClassLoader"; + // needed by groovy engine + permission java.lang.RuntimePermission "accessClassInPackage.sun.reflect"; + // needed by GroovyScriptEngineService to close its classloader (why?) + permission java.lang.RuntimePermission "closeClassLoader"; + // Allow executing groovy scripts with codesource of /untrusted + permission groovy.security.GroovyCodeSourcePermission "/untrusted"; + + // Standard set of classes + permission org.elasticsearch.script.ClassPermission "<>"; + // groovy runtime (TODO: clean these up if possible) + permission org.elasticsearch.script.ClassPermission "groovy.grape.GrabAnnotationTransformation"; + permission org.elasticsearch.script.ClassPermission "groovy.json.JsonOutput"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.Binding"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.GroovyObject"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.GString"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.Script"; + permission org.elasticsearch.script.ClassPermission "groovy.util.GroovyCollections"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.ast.builder.AstBuilderTransformation"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.reflection.ClassInfo"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.GStringImpl"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.powerassert.ValueRecorder"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.powerassert.AssertionRenderer"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.ScriptBytecodeAdapter"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.vmplugin.v7.IndyInterface"; + permission org.elasticsearch.script.ClassPermission "sun.reflect.ConstructorAccessorImpl"; + permission org.elasticsearch.script.ClassPermission "sun.reflect.MethodAccessorImpl"; + + permission org.elasticsearch.script.ClassPermission "groovy.lang.Closure"; + permission org.elasticsearch.script.ClassPermission "org.codehaus.groovy.runtime.GeneratedClosure"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.MetaClass"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.Range"; + permission org.elasticsearch.script.ClassPermission "groovy.lang.Reference"; +}; diff --git a/src/test/java/org/springframework/data/elasticsearch/Utils.java b/src/test/java/org/springframework/data/elasticsearch/Utils.java index 1dfe172a3..81b34ea56 100644 --- a/src/test/java/org/springframework/data/elasticsearch/Utils.java +++ b/src/test/java/org/springframework/data/elasticsearch/Utils.java @@ -31,7 +31,7 @@ public class Utils { return (NodeClient) nodeBuilder().settings(Settings.builder() .put("http.enabled", "false") .put("path.data", "target/elasticsearchTestData") - .put("path.home", "src/test/resources/test-home-dir")) + .put("path.home", "target/test-home-dir")) .clusterName(UUID.randomUUID().toString()).local(true).node() .client(); } diff --git a/src/test/resources/infrastructure.xml b/src/test/resources/infrastructure.xml index 06bb606b4..336f04420 100644 --- a/src/test/resources/infrastructure.xml +++ b/src/test/resources/infrastructure.xml @@ -6,7 +6,7 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> diff --git a/src/test/resources/org/springframework/data/elasticsearch/config/namespace.xml b/src/test/resources/org/springframework/data/elasticsearch/config/namespace.xml index 946270894..b9f598ed7 100644 --- a/src/test/resources/org/springframework/data/elasticsearch/config/namespace.xml +++ b/src/test/resources/org/springframework/data/elasticsearch/config/namespace.xml @@ -7,7 +7,7 @@ + path-data="target/elasticsearchTestData" path-home="target/test-home-dir"/> diff --git a/template.mf b/template.mf index af2ebf325..0ecb4555b 100644 --- a/template.mf +++ b/template.mf @@ -10,8 +10,8 @@ Import-Template: javax.enterprise.*;version="${cdi:[=.=.=,+1.0.0)}";resolution:=optional, org.apache.commons.lang.*;version="${commonslang:[=.=.=,+1.0.0)}", com.fasterxml.jackson.*;version="${jackson:[=.=.=,+1.0.0)}";resolution:=optional, - org.elasticsearch.*;version="${elasticsearch:[=.=.=,2.2.0)}", - org.apache.lucene.*;version="5.4.1", + org.elasticsearch.*;version="${elasticsearch:[=.=.=,+2.2.0)}", + org.apache.lucene.*;version="[5.4.1,+5.4.1)", org.joda.time.*;version="${jodatime:[=.=.=,+1.0.0)}", org.slf4j.*;version="${slf4j:[=.=.=,+1.0.0)}", org.springframework.*;version="${spring:[=.=.=.=,+1.0.0)}",