From 9ca3d7c85039cb923c07632eaa21c90f336881a7 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 18 Jan 2018 13:39:34 -0800 Subject: [PATCH 1/2] Painless: Add spi jar that will be published for extending whitelists In order to build a plugin that extends the painless whitelist, the spi classes must be available to the plugin at compile time. This commit moves the spi classes into a separate jar which will be published. Any plugin authors whiching to extend painless through spi would then add a compileOnly dependency on this jar. --- distribution/build.gradle | 2 +- modules/build.gradle | 2 +- modules/lang-painless/build.gradle | 1 + modules/lang-painless/spi/build.gradle | 37 +++++++++++++++++++ .../painless/spi/PainlessExtension.java | 0 .../elasticsearch/painless/spi/Whitelist.java | 0 .../painless/spi/WhitelistLoader.java | 0 7 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 modules/lang-painless/spi/build.gradle rename modules/lang-painless/{ => spi}/src/main/java/org/elasticsearch/painless/spi/PainlessExtension.java (100%) rename modules/lang-painless/{ => spi}/src/main/java/org/elasticsearch/painless/spi/Whitelist.java (100%) rename modules/lang-painless/{ => spi}/src/main/java/org/elasticsearch/painless/spi/WhitelistLoader.java (100%) diff --git a/distribution/build.gradle b/distribution/build.gradle index c6fc9d5b6946f..d322aa9c1ff12 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -83,7 +83,7 @@ ext.restTestExpansions = [ // we create the buildModules task above so the distribution subprojects can // depend on it, but we don't actually configure it until here so we can do a single // loop over modules to also setup cross task dependencies and increment our modules counter -project.rootProject.subprojects.findAll { it.path.startsWith(':modules:') }.each { Project module -> +project.rootProject.subprojects.findAll { it.parent.path == ':modules' }.each { Project module -> buildFullNotice { def defaultLicensesDir = new File(module.projectDir, 'licenses') if (defaultLicensesDir.exists()) { diff --git a/modules/build.gradle b/modules/build.gradle index b3dbde24936e9..7f7e7e0965bc9 100644 --- a/modules/build.gradle +++ b/modules/build.gradle @@ -17,7 +17,7 @@ * under the License. */ -subprojects { +configure(subprojects.findAll { it.parent.path == project.path }) { group = 'org.elasticsearch.plugin' // for modules which publish client jars apply plugin: 'elasticsearch.esplugin' diff --git a/modules/lang-painless/build.gradle b/modules/lang-painless/build.gradle index 0bd96725c66b4..d287d7ee02378 100644 --- a/modules/lang-painless/build.gradle +++ b/modules/lang-painless/build.gradle @@ -31,6 +31,7 @@ integTestCluster { dependencies { compile 'org.antlr:antlr4-runtime:4.5.3' compile 'org.ow2.asm:asm-debug-all:5.1' + compile project('spi') } dependencyLicenses { diff --git a/modules/lang-painless/spi/build.gradle b/modules/lang-painless/spi/build.gradle new file mode 100644 index 0000000000000..e08871873fbd8 --- /dev/null +++ b/modules/lang-painless/spi/build.gradle @@ -0,0 +1,37 @@ +/* + * 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. + */ + +apply plugin: 'elasticsearch.build' +apply plugin: 'nebula.maven-base-publish' +apply plugin: 'nebula.maven-scm' + +group = 'org.elasticsearch.plugin' +archivesBaseName = 'elasticsearch-scripting-painless-spi' + +publishing { + publications { + nebula { + artifactId = archivesBaseName + } + } +} + +dependencies { + compile "org.elasticsearch:elasticsearch:${version}" +} diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/PainlessExtension.java b/modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/PainlessExtension.java similarity index 100% rename from modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/PainlessExtension.java rename to modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/PainlessExtension.java diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/Whitelist.java b/modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/Whitelist.java similarity index 100% rename from modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/Whitelist.java rename to modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/Whitelist.java diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/WhitelistLoader.java b/modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/WhitelistLoader.java similarity index 100% rename from modules/lang-painless/src/main/java/org/elasticsearch/painless/spi/WhitelistLoader.java rename to modules/lang-painless/spi/src/main/java/org/elasticsearch/painless/spi/WhitelistLoader.java From 8de23fc7c96649a392a21270fa6473a3f0bef38a Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 18 Jan 2018 15:09:47 -0800 Subject: [PATCH 2/2] disable tests --- modules/lang-painless/spi/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/lang-painless/spi/build.gradle b/modules/lang-painless/spi/build.gradle index e08871873fbd8..7e43a242a23a9 100644 --- a/modules/lang-painless/spi/build.gradle +++ b/modules/lang-painless/spi/build.gradle @@ -35,3 +35,6 @@ publishing { dependencies { compile "org.elasticsearch:elasticsearch:${version}" } + +// no tests...yet? +test.enabled = false