diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/buildSrc/src/main/resources/checkstyle_suppressions.xml
index 62e9eec224dc..28443f7ff470 100644
--- a/buildSrc/src/main/resources/checkstyle_suppressions.xml
+++ b/buildSrc/src/main/resources/checkstyle_suppressions.xml
@@ -968,14 +968,6 @@
-
-
-
-
-
-
-
-
diff --git a/core/src/main/java/org/elasticsearch/bootstrap/Security.java b/core/src/main/java/org/elasticsearch/bootstrap/Security.java
index 2b8fd325d81e..8cf67d70e4d9 100644
--- a/core/src/main/java/org/elasticsearch/bootstrap/Security.java
+++ b/core/src/main/java/org/elasticsearch/bootstrap/Security.java
@@ -78,7 +78,7 @@ import java.util.Map;
* when they are so dangerous that general code should not be granted the
* permission, but there are extenuating circumstances.
*
- * Scripts (groovy, javascript, python) are assigned minimal permissions. This does not provide adequate
+ * Scripts (groovy) are assigned minimal permissions. This does not provide adequate
* sandboxing, as these scripts still have access to ES classes, and could
* modify members, etc that would cause bad things to happen later on their
* behalf (no package protections are yet in place, this would need some
diff --git a/dev-tools/smoke_test_rc.py b/dev-tools/smoke_test_rc.py
index 9a2e7f9b786d..c35e6a0075a2 100644
--- a/dev-tools/smoke_test_rc.py
+++ b/dev-tools/smoke_test_rc.py
@@ -69,8 +69,6 @@ DEFAULT_PLUGINS = ["analysis-icu",
"ingest-attachment",
"ingest-geoip",
"ingest-user-agent",
- "lang-javascript",
- "lang-python",
"mapper-attachments",
"mapper-murmur3",
"mapper-size",
@@ -297,6 +295,3 @@ if __name__ == "__main__":
else:
download_url = 'https://staging.elastic.co/%s-%s/downloads/elasticsearch' % (version, hash)
download_and_verify(version, hash, files, download_url, plugins=DEFAULT_PLUGINS + plugins)
-
-
-
diff --git a/docs/plugins/index.asciidoc b/docs/plugins/index.asciidoc
index ec1954a86a88..569e24fda8ec 100644
--- a/docs/plugins/index.asciidoc
+++ b/docs/plugins/index.asciidoc
@@ -56,8 +56,6 @@ include::management.asciidoc[]
include::mapper.asciidoc[]
-include::scripting.asciidoc[]
-
include::security.asciidoc[]
include::repository.asciidoc[]
diff --git a/docs/plugins/lang-javascript.asciidoc b/docs/plugins/lang-javascript.asciidoc
deleted file mode 100644
index 001b7f222315..000000000000
--- a/docs/plugins/lang-javascript.asciidoc
+++ /dev/null
@@ -1,189 +0,0 @@
-[[lang-javascript]]
-=== JavaScript Language Plugin
-
-deprecated[5.0.0,JavaScript will be replaced by the new scripting language {ref}/modules-scripting-painless.html[`Painless`]]
-
-The JavaScript language plugin enables the use of JavaScript in Elasticsearch
-scripts, via Mozilla's
-https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino[Rhino JavaScript] engine.
-
-[[lang-javascript-install]]
-[float]
-==== Installation
-
-This plugin can be installed using the plugin manager:
-
-[source,sh]
-----------------------------------------------------------------
-sudo bin/elasticsearch-plugin install lang-javascript
-----------------------------------------------------------------
-
-The plugin must be installed on every node in the cluster, and each node must
-be restarted after installation.
-
-This plugin can be downloaded for <> from
-{plugin_url}/lang-javascript/lang-javascript-{version}.zip.
-
-[[lang-javascript-remove]]
-[float]
-==== Removal
-
-The plugin can be removed with the following command:
-
-[source,sh]
-----------------------------------------------------------------
-sudo bin/elasticsearch-plugin remove lang-javascript
-----------------------------------------------------------------
-
-The node must be stopped before removing the plugin.
-
-[[lang-javascript-usage]]
-==== Using JavaScript in Elasticsearch
-
-Once the plugin has been installed, JavaScript can be used at a scripting
-language by setting the `lang` parameter to `javascript`.
-
-Scripting is available in many APIs, but we will use an example with the
-`function_score` for demonstration purposes:
-
-[[lang-javascript-inline]]
-[float]
-=== Inline scripts
-
-WARNING: Enabling inline scripting on an unprotected Elasticsearch cluster is dangerous.
-See <> for a safer option.
-
-If you have enabled {ref}/modules-scripting-security.html#enable-dynamic-scripting[inline scripts],
-you can use JavaScript as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "inline": "doc[\"num\"].value * factor",
- "lang": "javascript",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-----
-// CONSOLE
-
-[[lang-javascript-stored]]
-[float]
-=== Stored scripts
-
-WARNING: Enabling stored scripts on an unprotected Elasticsearch cluster is dangerous.
-See <> for a safer option.
-
-If you have enabled {ref}/modules-scripting-security.html#enable-dynamic-scripting[stored scripts],
-you can use JavaScript as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-POST _scripts/javascript/my_script <1>
-{
- "script": "doc[\"num\"].value * factor"
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "stored": "my_script", <2>
- "lang": "javascript",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-----
-// CONSOLE
-
-<1> We store the script under the id `my_script`.
-<2> The function score query retrieves the script with id `my_script`.
-
-
-[[lang-javascript-file]]
-[float]
-=== File scripts
-
-You can save your scripts to a file in the `config/scripts/` directory on
-every node. The `.javascript` file suffix identifies the script as containing
-JavaScript:
-
-First, save this file as `config/scripts/my_script.js` on every node
-in the cluster:
-
-[source,painless]
-----
-doc["num"].value * factor
-----
-
-then use the script as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "file": "my_script", <1>
- "lang": "javascript",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-----
-// CONSOLE
-
-<1> The function score query retrieves the script with filename `my_script.javascript`.
diff --git a/docs/plugins/lang-python.asciidoc b/docs/plugins/lang-python.asciidoc
deleted file mode 100644
index 0e328d79f605..000000000000
--- a/docs/plugins/lang-python.asciidoc
+++ /dev/null
@@ -1,189 +0,0 @@
-[[lang-python]]
-=== Python Language Plugin
-
-deprecated[5.0.0,Python will be replaced by the new scripting language {ref}/modules-scripting-painless.html[`Painless`]]
-
-The Python language plugin enables the use of Python in Elasticsearch
-scripts, via the http://www.jython.org/[Jython] Java implementation of Python.
-
-[[lang-python-install]]
-[float]
-==== Installation
-
-This plugin can be installed using the plugin manager:
-
-[source,sh]
-----------------------------------------------------------------
-sudo bin/elasticsearch-plugin install lang-python
-----------------------------------------------------------------
-
-The plugin must be installed on every node in the cluster, and each node must
-be restarted after installation.
-
-This plugin can be downloaded for <> from
-{plugin_url}/lang-python/lang-python-{version}.zip.
-
-[[lang-python-remove]]
-[float]
-==== Removal
-
-The plugin can be removed with the following command:
-
-[source,sh]
-----------------------------------------------------------------
-sudo bin/elasticsearch-plugin remove lang-python
-----------------------------------------------------------------
-
-The node must be stopped before removing the plugin.
-
-[[lang-python-usage]]
-==== Using Python in Elasticsearch
-
-Once the plugin has been installed, Python can be used at a scripting
-language by setting the `lang` parameter to `python`.
-
-Scripting is available in many APIs, but we will use an example with the
-`function_score` for demonstration purposes:
-
-[[lang-python-inline]]
-[float]
-=== Inline scripts
-
-WARNING: Enabling inline scripting on an unprotected Elasticsearch cluster is dangerous.
-See <> for a safer option.
-
-If you have enabled {ref}/modules-scripting-security.html#enable-dynamic-scripting[inline scripts],
-you can use Python as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "inline": "doc[\"num\"].value * factor",
- "lang": "python",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-----
-// CONSOLE
-
-[[lang-python-stored]]
-[float]
-=== Stored scripts
-
-WARNING: Enabling stored scripts on an unprotected Elasticsearch cluster is dangerous.
-See <> for a safer option.
-
-If you have enabled {ref}/modules-scripting-security.html#enable-dynamic-scripting[stored scripts],
-you can use Python as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-POST _scripts/python/my_script <1>
-{
- "script": "doc[\"num\"].value * factor"
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "stored": "my_script", <2>
- "lang": "python",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-
-----
-// CONSOLE
-
-<1> We store the script under the id `my_script`.
-<2> The function score query retrieves the script with id `my_script`.
-
-
-[[lang-python-file]]
-[float]
-=== File scripts
-
-You can save your scripts to a file in the `config/scripts/` directory on
-every node. The `.py` file suffix identifies the script as containing
-Python:
-
-First, save this file as `config/scripts/my_script.py` on every node
-in the cluster:
-
-[source,python]
-----
-doc["num"].value * factor
-----
-
-then use the script as follows:
-
-[source,js]
-----
-PUT test/doc/1
-{
- "num": 1.0
-}
-
-PUT test/doc/2
-{
- "num": 2.0
-}
-
-GET test/_search
-{
- "query": {
- "function_score": {
- "script_score": {
- "script": {
- "file": "my_script", <1>
- "lang": "python",
- "params": {
- "factor": 2
- }
- }
- }
- }
- }
-}
-----
-// CONSOLE
-
-<1> The function score query retrieves the script with filename `my_script.py`.
diff --git a/docs/plugins/scripting.asciidoc b/docs/plugins/scripting.asciidoc
deleted file mode 100644
index fc601fd47093..000000000000
--- a/docs/plugins/scripting.asciidoc
+++ /dev/null
@@ -1,25 +0,0 @@
-[[scripting]]
-== Scripting Plugins
-
-Scripting plugins extend the scripting functionality in Elasticsearch to allow
-the use of other scripting languages.
-
-[float]
-=== Core scripting plugins
-
-The core scripting plugins are:
-
-<>::
-
-The JavaScript language plugin enables the use of JavaScript in Elasticsearch
-scripts, via Mozilla's
-https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino[Rhino JavaScript] engine.
-
-<>::
-
-The Python language plugin enables the use of Python in Elasticsearch
-scripts, via the http://www.jython.org/[Jython] Java implementation of Python.
-
-include::lang-javascript.asciidoc[]
-
-include::lang-python.asciidoc[]
diff --git a/docs/reference/cat/plugins.asciidoc b/docs/reference/cat/plugins.asciidoc
index b4aa02a7af7c..6343480228c3 100644
--- a/docs/reference/cat/plugins.asciidoc
+++ b/docs/reference/cat/plugins.asciidoc
@@ -28,8 +28,6 @@ U7321H6 ingest-attachment {version} Ingest processor that uses Apache Tika
U7321H6 ingest-geoip {version} Ingest processor that uses looksup geo data based on ip adresses using the Maxmind geo database
U7321H6 ingest-user-agent {version} Ingest processor that extracts information from a user agent
U7321H6 jvm-example {version} Demonstrates all the pluggable Java entry points in Elasticsearch
-U7321H6 lang-javascript {version} The JavaScript language plugin allows to have javascript as the language of scripts to execute.
-U7321H6 lang-python {version} The Python language plugin allows to have python as the language of scripts to execute.
U7321H6 mapper-murmur3 {version} The Mapper Murmur3 plugin allows to compute hashes of a field's values at index-time and to store them in the index.
U7321H6 mapper-size {version} The Mapper Size plugin allows document to record their uncompressed size at index time.
U7321H6 store-smb {version} The Store SMB plugin adds support for SMB stores.
diff --git a/docs/reference/modules.asciidoc b/docs/reference/modules.asciidoc
index 5a39cdfd7905..2ab1232d3b55 100644
--- a/docs/reference/modules.asciidoc
+++ b/docs/reference/modules.asciidoc
@@ -45,10 +45,10 @@ The modules in this section are:
<>::
A Java node client joins the cluster, but doesn't hold data or act as a master node.
-
+
<>::
- A built-in scripting language for Elasticsearch that's designed to be as secure as possible.
+ A built-in scripting language for Elasticsearch that's designed to be as secure as possible.
<>::
@@ -56,8 +56,8 @@ The modules in this section are:
<>::
- Custom scripting available in Lucene Expressions, Groovy, Python, and
- Javascript. You can also write scripts in the built-in scripting language,
+ Custom scripting available in Lucene Expressions, ad Groovy. You can also
+ write scripts in the built-in scripting language,
<>.
<>::
@@ -105,7 +105,3 @@ include::modules/threadpool.asciidoc[]
include::modules/transport.asciidoc[]
include::modules/tribe.asciidoc[]
-
-
-
-
diff --git a/docs/reference/modules/scripting.asciidoc b/docs/reference/modules/scripting.asciidoc
index 253fab3941b9..1f4b66d95bdc 100644
--- a/docs/reference/modules/scripting.asciidoc
+++ b/docs/reference/modules/scripting.asciidoc
@@ -30,14 +30,6 @@ and give the most flexibility.
|<>
|built-in
-|{plugins}/lang-javascript.html[`javascript`]
- |<>
- |{plugins}/lang-javascript.html[`lang-javascript`]
-
-|{plugins}/lang-python.html[`python`]
- |<>
- |{plugins}/lang-python.html[`lang-python`]
-
|=======================================================================
[float]
@@ -98,4 +90,3 @@ include::scripting/expression.asciidoc[]
include::scripting/native.asciidoc[]
include::scripting/advanced-scripting.asciidoc[]
-
diff --git a/docs/reference/modules/scripting/security.asciidoc b/docs/reference/modules/scripting/security.asciidoc
index 4d35b0da250b..cab7561d1855 100644
--- a/docs/reference/modules/scripting/security.asciidoc
+++ b/docs/reference/modules/scripting/security.asciidoc
@@ -150,7 +150,7 @@ The benefit of doing this is that it severely limits the attack vectors
available to a hacker.
Restricting permissions is particularly important with scripting languages
-like Groovy and Javascript which are designed to do anything that can be done
+like Groovy which is designed to do anything that can be done
in Java itself, including writing to the file system, opening sockets to
remote servers, etc.
@@ -287,4 +287,3 @@ doing so.
======================================
See http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html for more information.
-
diff --git a/plugins/lang-javascript/build.gradle b/plugins/lang-javascript/build.gradle
deleted file mode 100644
index 13204e1d5d7f..000000000000
--- a/plugins/lang-javascript/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.
- */
-
-esplugin {
- description 'The JavaScript language plugin allows to have javascript as the language of scripts to execute.'
- classname 'org.elasticsearch.plugin.javascript.JavaScriptPlugin'
-}
-
-dependencies {
- compile 'org.mozilla:rhino:1.7.7'
-}
-
-integTest {
- cluster {
- setting 'script.inline', 'true'
- setting 'script.stored', 'true'
- setting 'script.max_compilations_per_minute', '1000'
- }
-}
diff --git a/plugins/lang-javascript/licenses/rhino-1.7.7.jar.sha1 b/plugins/lang-javascript/licenses/rhino-1.7.7.jar.sha1
deleted file mode 100644
index 8c997d41c2b2..000000000000
--- a/plugins/lang-javascript/licenses/rhino-1.7.7.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3a9ea863b86126b0ed8f2fe2230412747cd3c254
\ No newline at end of file
diff --git a/plugins/lang-javascript/licenses/rhino-LICENSE.txt b/plugins/lang-javascript/licenses/rhino-LICENSE.txt
deleted file mode 100644
index c0e7c21fbffb..000000000000
--- a/plugins/lang-javascript/licenses/rhino-LICENSE.txt
+++ /dev/null
@@ -1,375 +0,0 @@
-The majority of Rhino is licensed under the MPL 2.0:
-
-Mozilla Public License Version 2.0
-==================================
-
-1. Definitions
---------------
-
-1.1. "Contributor"
- means each individual or legal entity that creates, contributes to
- the creation of, or owns Covered Software.
-
-1.2. "Contributor Version"
- means the combination of the Contributions of others (if any) used
- by a Contributor and that particular Contributor's Contribution.
-
-1.3. "Contribution"
- means Covered Software of a particular Contributor.
-
-1.4. "Covered Software"
- means Source Code Form to which the initial Contributor has attached
- the notice in Exhibit A, the Executable Form of such Source Code
- Form, and Modifications of such Source Code Form, in each case
- including portions thereof.
-
-1.5. "Incompatible With Secondary Licenses"
- means
-
- (a) that the initial Contributor has attached the notice described
- in Exhibit B to the Covered Software; or
-
- (b) that the Covered Software was made available under the terms of
- version 1.1 or earlier of the License, but not also under the
- terms of a Secondary License.
-
-1.6. "Executable Form"
- means any form of the work other than Source Code Form.
-
-1.7. "Larger Work"
- means a work that combines Covered Software with other material, in
- a separate file or files, that is not Covered Software.
-
-1.8. "License"
- means this document.
-
-1.9. "Licensable"
- means having the right to grant, to the maximum extent possible,
- whether at the time of the initial grant or subsequently, any and
- all of the rights conveyed by this License.
-
-1.10. "Modifications"
- means any of the following:
-
- (a) any file in Source Code Form that results from an addition to,
- deletion from, or modification of the contents of Covered
- Software; or
-
- (b) any new file in Source Code Form that contains any Covered
- Software.
-
-1.11. "Patent Claims" of a Contributor
- means any patent claim(s), including without limitation, method,
- process, and apparatus claims, in any patent Licensable by such
- Contributor that would be infringed, but for the grant of the
- License, by the making, using, selling, offering for sale, having
- made, import, or transfer of either its Contributions or its
- Contributor Version.
-
-1.12. "Secondary License"
- means either the GNU General Public License, Version 2.0, the GNU
- Lesser General Public License, Version 2.1, the GNU Affero General
- Public License, Version 3.0, or any later versions of those
- licenses.
-
-1.13. "Source Code Form"
- means the form of the work preferred for making modifications.
-
-1.14. "You" (or "Your")
- means an individual or a legal entity exercising rights under this
- License. For legal entities, "You" includes any entity that
- controls, is controlled by, or is under common control with You. For
- purposes of this definition, "control" means (a) the power, direct
- or indirect, to cause the direction or management of such entity,
- whether by contract or otherwise, or (b) ownership of more than
- fifty percent (50%) of the outstanding shares or beneficial
- ownership of such entity.
-
-2. License Grants and Conditions
---------------------------------
-
-2.1. Grants
-
-Each Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark)
- Licensable by such Contributor to use, reproduce, make available,
- modify, display, perform, distribute, and otherwise exploit its
- Contributions, either on an unmodified basis, with Modifications, or
- as part of a Larger Work; and
-
-(b) under Patent Claims of such Contributor to make, use, sell, offer
- for sale, have made, import, and otherwise transfer either its
- Contributions or its Contributor Version.
-
-2.2. Effective Date
-
-The licenses granted in Section 2.1 with respect to any Contribution
-become effective for each Contribution on the date the Contributor first
-distributes such Contribution.
-
-2.3. Limitations on Grant Scope
-
-The licenses granted in this Section 2 are the only rights granted under
-this License. No additional rights or licenses will be implied from the
-distribution or licensing of Covered Software under this License.
-Notwithstanding Section 2.1(b) above, no patent license is granted by a
-Contributor:
-
-(a) for any code that a Contributor has removed from Covered Software;
- or
-
-(b) for infringements caused by: (i) Your and any other third party's
- modifications of Covered Software, or (ii) the combination of its
- Contributions with other software (except as part of its Contributor
- Version); or
-
-(c) under Patent Claims infringed by Covered Software in the absence of
- its Contributions.
-
-This License does not grant any rights in the trademarks, service marks,
-or logos of any Contributor (except as may be necessary to comply with
-the notice requirements in Section 3.4).
-
-2.4. Subsequent Licenses
-
-No Contributor makes additional grants as a result of Your choice to
-distribute the Covered Software under a subsequent version of this
-License (see Section 10.2) or under the terms of a Secondary License (if
-permitted under the terms of Section 3.3).
-
-2.5. Representation
-
-Each Contributor represents that the Contributor believes its
-Contributions are its original creation(s) or it has sufficient rights
-to grant the rights to its Contributions conveyed by this License.
-
-2.6. Fair Use
-
-This License is not intended to limit any rights You have under
-applicable copyright doctrines of fair use, fair dealing, or other
-equivalents.
-
-2.7. Conditions
-
-Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
-in Section 2.1.
-
-3. Responsibilities
--------------------
-
-3.1. Distribution of Source Form
-
-All distribution of Covered Software in Source Code Form, including any
-Modifications that You create or to which You contribute, must be under
-the terms of this License. You must inform recipients that the Source
-Code Form of the Covered Software is governed by the terms of this
-License, and how they can obtain a copy of this License. You may not
-attempt to alter or restrict the recipients' rights in the Source Code
-Form.
-
-3.2. Distribution of Executable Form
-
-If You distribute Covered Software in Executable Form then:
-
-(a) such Covered Software must also be made available in Source Code
- Form, as described in Section 3.1, and You must inform recipients of
- the Executable Form how they can obtain a copy of such Source Code
- Form by reasonable means in a timely manner, at a charge no more
- than the cost of distribution to the recipient; and
-
-(b) You may distribute such Executable Form under the terms of this
- License, or sublicense it under different terms, provided that the
- license for the Executable Form does not attempt to limit or alter
- the recipients' rights in the Source Code Form under this License.
-
-3.3. Distribution of a Larger Work
-
-You may create and distribute a Larger Work under terms of Your choice,
-provided that You also comply with the requirements of this License for
-the Covered Software. If the Larger Work is a combination of Covered
-Software with a work governed by one or more Secondary Licenses, and the
-Covered Software is not Incompatible With Secondary Licenses, this
-License permits You to additionally distribute such Covered Software
-under the terms of such Secondary License(s), so that the recipient of
-the Larger Work may, at their option, further distribute the Covered
-Software under the terms of either this License or such Secondary
-License(s).
-
-3.4. Notices
-
-You may not remove or alter the substance of any license notices
-(including copyright notices, patent notices, disclaimers of warranty,
-or limitations of liability) contained within the Source Code Form of
-the Covered Software, except that You may alter any license notices to
-the extent required to remedy known factual inaccuracies.
-
-3.5. Application of Additional Terms
-
-You may choose to offer, and to charge a fee for, warranty, support,
-indemnity or liability obligations to one or more recipients of Covered
-Software. However, You may do so only on Your own behalf, and not on
-behalf of any Contributor. You must make it absolutely clear that any
-such warranty, support, indemnity, or liability obligation is offered by
-You alone, and You hereby agree to indemnify every Contributor for any
-liability incurred by such Contributor as a result of warranty, support,
-indemnity or liability terms You offer. You may include additional
-disclaimers of warranty and limitations of liability specific to any
-jurisdiction.
-
-4. Inability to Comply Due to Statute or Regulation
----------------------------------------------------
-
-If it is impossible for You to comply with any of the terms of this
-License with respect to some or all of the Covered Software due to
-statute, judicial order, or regulation then You must: (a) comply with
-the terms of this License to the maximum extent possible; and (b)
-describe the limitations and the code they affect. Such description must
-be placed in a text file included with all distributions of the Covered
-Software under this License. Except to the extent prohibited by statute
-or regulation, such description must be sufficiently detailed for a
-recipient of ordinary skill to be able to understand it.
-
-5. Termination
---------------
-
-5.1. The rights granted under this License will terminate automatically
-if You fail to comply with any of its terms. However, if You become
-compliant, then the rights granted under this License from a particular
-Contributor are reinstated (a) provisionally, unless and until such
-Contributor explicitly and finally terminates Your grants, and (b) on an
-ongoing basis, if such Contributor fails to notify You of the
-non-compliance by some reasonable means prior to 60 days after You have
-come back into compliance. Moreover, Your grants from a particular
-Contributor are reinstated on an ongoing basis if such Contributor
-notifies You of the non-compliance by some reasonable means, this is the
-first time You have received notice of non-compliance with this License
-from such Contributor, and You become compliant prior to 30 days after
-Your receipt of the notice.
-
-5.2. If You initiate litigation against any entity by asserting a patent
-infringement claim (excluding declaratory judgment actions,
-counter-claims, and cross-claims) alleging that a Contributor Version
-directly or indirectly infringes any patent, then the rights granted to
-You by any and all Contributors for the Covered Software under Section
-2.1 of this License shall terminate.
-
-5.3. In the event of termination under Sections 5.1 or 5.2 above, all
-end user license agreements (excluding distributors and resellers) which
-have been validly granted by You or Your distributors under this License
-prior to termination shall survive termination.
-
-************************************************************************
-* *
-* 6. Disclaimer of Warranty *
-* ------------------------- *
-* *
-* Covered Software is provided under this License on an "as is" *
-* basis, without warranty of any kind, either expressed, implied, or *
-* statutory, including, without limitation, warranties that the *
-* Covered Software is free of defects, merchantable, fit for a *
-* particular purpose or non-infringing. The entire risk as to the *
-* quality and performance of the Covered Software is with You. *
-* Should any Covered Software prove defective in any respect, You *
-* (not any Contributor) assume the cost of any necessary servicing, *
-* repair, or correction. This disclaimer of warranty constitutes an *
-* essential part of this License. No use of any Covered Software is *
-* authorized under this License except under this disclaimer. *
-* *
-************************************************************************
-
-************************************************************************
-* *
-* 7. Limitation of Liability *
-* -------------------------- *
-* *
-* Under no circumstances and under no legal theory, whether tort *
-* (including negligence), contract, or otherwise, shall any *
-* Contributor, or anyone who distributes Covered Software as *
-* permitted above, be liable to You for any direct, indirect, *
-* special, incidental, or consequential damages of any character *
-* including, without limitation, damages for lost profits, loss of *
-* goodwill, work stoppage, computer failure or malfunction, or any *
-* and all other commercial damages or losses, even if such party *
-* shall have been informed of the possibility of such damages. This *
-* limitation of liability shall not apply to liability for death or *
-* personal injury resulting from such party's negligence to the *
-* extent applicable law prohibits such limitation. Some *
-* jurisdictions do not allow the exclusion or limitation of *
-* incidental or consequential damages, so this exclusion and *
-* limitation may not apply to You. *
-* *
-************************************************************************
-
-8. Litigation
--------------
-
-Any litigation relating to this License may be brought only in the
-courts of a jurisdiction where the defendant maintains its principal
-place of business and such litigation shall be governed by laws of that
-jurisdiction, without reference to its conflict-of-law provisions.
-Nothing in this Section shall prevent a party's ability to bring
-cross-claims or counter-claims.
-
-9. Miscellaneous
-----------------
-
-This License represents the complete agreement concerning the subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent
-necessary to make it enforceable. Any law or regulation which provides
-that the language of a contract shall be construed against the drafter
-shall not be used to construe this License against a Contributor.
-
-10. Versions of the License
----------------------------
-
-10.1. New Versions
-
-Mozilla Foundation is the license steward. Except as provided in Section
-10.3, no one other than the license steward has the right to modify or
-publish new versions of this License. Each version will be given a
-distinguishing version number.
-
-10.2. Effect of New Versions
-
-You may distribute the Covered Software under the terms of the version
-of the License under which You originally received the Covered Software,
-or under the terms of any subsequent version published by the license
-steward.
-
-10.3. Modified Versions
-
-If you create software not governed by this License, and you want to
-create a new license for such software, you may create and use a
-modified version of this License if you rename the license and remove
-any references to the name of the license steward (except to note that
-such modified license differs from this License).
-
-10.4. Distributing Source Code Form that is Incompatible With Secondary
-Licenses
-
-If You choose to distribute Source Code Form that is Incompatible With
-Secondary Licenses under the terms of this version of the License, the
-notice described in Exhibit B of this License must be attached.
-
-Exhibit A - Source Code Form License Notice
--------------------------------------------
-
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-If it is not possible or desirable to put the notice in a particular
-file, then You may include the notice in a location (such as a LICENSE
-file in a relevant directory) where a recipient would be likely to look
-for such a notice.
-
-You may add additional accurate notices of copyright ownership.
-
-Exhibit B - "Incompatible With Secondary Licenses" Notice
----------------------------------------------------------
-
- This Source Code Form is "Incompatible With Secondary Licenses", as
- defined by the Mozilla Public License, v. 2.0.
diff --git a/plugins/lang-javascript/licenses/rhino-NOTICE.txt b/plugins/lang-javascript/licenses/rhino-NOTICE.txt
deleted file mode 100644
index afe1503d8429..000000000000
--- a/plugins/lang-javascript/licenses/rhino-NOTICE.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Rhino is licensed subject to the terms of the Mozilla Public License, v. 2.0.
-See "License.txt" for the text of the license.
-
-Rhino contains the following additional software:
-
-----
-
-Portions of the floating-point conversion code, and portions of the test suite
-come from the Google V8 JavaScript engine and are subject to the following:
-
-Copyright 2010-2015 the V8 project authors. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/plugins/lang-javascript/src/main/java/org/elasticsearch/plugin/javascript/JavaScriptPlugin.java b/plugins/lang-javascript/src/main/java/org/elasticsearch/plugin/javascript/JavaScriptPlugin.java
deleted file mode 100644
index 4baeb71652df..000000000000
--- a/plugins/lang-javascript/src/main/java/org/elasticsearch/plugin/javascript/JavaScriptPlugin.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.plugin.javascript;
-
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.plugins.Plugin;
-import org.elasticsearch.plugins.ScriptPlugin;
-import org.elasticsearch.script.ScriptEngineRegistry;
-import org.elasticsearch.script.ScriptEngineService;
-import org.elasticsearch.script.ScriptModule;
-import org.elasticsearch.script.javascript.JavaScriptScriptEngineService;
-
-public class JavaScriptPlugin extends Plugin implements ScriptPlugin {
-
- static {
- // install rhino policy on plugin init
- JavaScriptScriptEngineService.init();
- }
-
- @Override
- public ScriptEngineService getScriptEngineService(Settings settings) {
- return new JavaScriptScriptEngineService(settings);
- }
-}
diff --git a/plugins/lang-javascript/src/main/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineService.java b/plugins/lang-javascript/src/main/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineService.java
deleted file mode 100644
index 6af04561e4bd..000000000000
--- a/plugins/lang-javascript/src/main/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineService.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * 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.script.javascript;
-
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.search.Scorer;
-import org.elasticsearch.SpecialPermission;
-import org.elasticsearch.bootstrap.BootstrapInfo;
-import org.elasticsearch.common.Nullable;
-import org.elasticsearch.common.component.AbstractComponent;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.script.ClassPermission;
-import org.elasticsearch.script.CompiledScript;
-import org.elasticsearch.script.ExecutableScript;
-import org.elasticsearch.script.LeafSearchScript;
-import org.elasticsearch.script.ScoreAccessor;
-import org.elasticsearch.script.ScriptEngineService;
-import org.elasticsearch.script.SearchScript;
-import org.elasticsearch.script.javascript.support.NativeList;
-import org.elasticsearch.script.javascript.support.NativeMap;
-import org.elasticsearch.script.javascript.support.ScriptValueConverter;
-import org.elasticsearch.search.lookup.LeafSearchLookup;
-import org.elasticsearch.search.lookup.SearchLookup;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.ContextFactory;
-import org.mozilla.javascript.GeneratedClassLoader;
-import org.mozilla.javascript.PolicySecurityController;
-import org.mozilla.javascript.Script;
-import org.mozilla.javascript.Scriptable;
-import org.mozilla.javascript.ScriptableObject;
-import org.mozilla.javascript.SecurityController;
-import org.mozilla.javascript.WrapFactory;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.CodeSource;
-import java.security.PrivilegedAction;
-import java.security.cert.Certificate;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-public class JavaScriptScriptEngineService extends AbstractComponent implements ScriptEngineService {
-
- public static final String NAME = "javascript";
-
- public static final String EXTENSION = "js";
-
- private final AtomicLong counter = new AtomicLong();
-
- private static WrapFactory wrapFactory = new CustomWrapFactory();
-
- private Scriptable globalScope;
-
- // one time initialization of rhino security manager integration
- private static final CodeSource DOMAIN;
- private static final int OPTIMIZATION_LEVEL = 1;
-
- static {
- try {
- DOMAIN = new CodeSource(new URL("file:" + BootstrapInfo.UNTRUSTED_CODEBASE), (Certificate[]) null);
- } catch (MalformedURLException e) {
- throw new RuntimeException(e);
- }
- ContextFactory factory = new ContextFactory() {
- @Override
- protected void onContextCreated(Context cx) {
- cx.setWrapFactory(wrapFactory);
- cx.setOptimizationLevel(OPTIMIZATION_LEVEL);
- }
- };
- if (System.getSecurityManager() != null) {
- factory.initApplicationClassLoader(AccessController.doPrivileged(new PrivilegedAction() {
- @Override
- public ClassLoader run() {
- // snapshot our context (which has permissions for classes), since the script has none
- final AccessControlContext engineContext = AccessController.getContext();
- return new ClassLoader(JavaScriptScriptEngineService.class.getClassLoader()) {
- @Override
- protected Class> loadClass(String name, boolean resolve) throws ClassNotFoundException {
- try {
- engineContext.checkPermission(new ClassPermission(name));
- } catch (SecurityException e) {
- throw new ClassNotFoundException(name, e);
- }
- return super.loadClass(name, resolve);
- }
- };
- }
- }));
- }
- factory.seal();
- ContextFactory.initGlobal(factory);
- SecurityController.initGlobal(new PolicySecurityController() {
- @Override
- public GeneratedClassLoader createClassLoader(ClassLoader parent, Object securityDomain) {
- // don't let scripts compile other scripts
- SecurityManager sm = System.getSecurityManager();
- if (sm != null) {
- sm.checkPermission(new SpecialPermission());
- }
- // check the domain, this is all we allow
- if (securityDomain != DOMAIN) {
- throw new SecurityException("illegal securityDomain: " + securityDomain);
- }
-
- return super.createClassLoader(parent, securityDomain);
- }
- });
- }
-
- /** ensures this engine is initialized */
- public static void init() {}
-
- public JavaScriptScriptEngineService(Settings settings) {
- super(settings);
-
- deprecationLogger.deprecated("[javascript] scripts are deprecated, use [painless] scripts instead");
-
- Context ctx = Context.enter();
- try {
- globalScope = ctx.initStandardObjects(null, true);
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public void close() {
- // Nothing to do here
- }
-
- @Override
- public String getType() {
- return NAME;
- }
-
- @Override
- public String getExtension() {
- return EXTENSION;
- }
-
- @Override
- public Object compile(String scriptName, String scriptSource, Map params) {
- Context ctx = Context.enter();
- try {
- return ctx.compileString(scriptSource, generateScriptName(), 1, DOMAIN);
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public ExecutableScript executable(CompiledScript compiledScript, @Nullable Map vars) {
- deprecationLogger.deprecated("[javascript] scripts are deprecated, use [painless] scripts instead");
-
- Context ctx = Context.enter();
- try {
- Scriptable scope = ctx.newObject(globalScope);
- scope.setPrototype(globalScope);
- scope.setParentScope(null);
- if (vars != null) {
- for (Map.Entry entry : vars.entrySet()) {
- ScriptableObject.putProperty(scope, entry.getKey(), entry.getValue());
- }
- }
-
- return new JavaScriptExecutableScript((Script) compiledScript.compiled(), scope);
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public SearchScript search(final CompiledScript compiledScript, final SearchLookup lookup, @Nullable final Map vars) {
- deprecationLogger.deprecated("[javascript] scripts are deprecated, use [painless] scripts instead");
-
- Context ctx = Context.enter();
- try {
- final Scriptable scope = ctx.newObject(globalScope);
- scope.setPrototype(globalScope);
- scope.setParentScope(null);
-
- return new SearchScript() {
-
- @Override
- public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException {
- final LeafSearchLookup leafLookup = lookup.getLeafSearchLookup(context);
- for (Map.Entry entry : leafLookup.asMap().entrySet()) {
- ScriptableObject.putProperty(scope, entry.getKey(), entry.getValue());
- }
-
- if (vars != null) {
- for (Map.Entry entry : vars.entrySet()) {
- ScriptableObject.putProperty(scope, entry.getKey(), entry.getValue());
- }
- }
-
- return new JavaScriptSearchScript((Script) compiledScript.compiled(), scope, leafLookup);
- }
-
- @Override
- public boolean needsScores() {
- // TODO: can we reliably know if a javascript script makes use of _score
- return true;
- }
- };
- } finally {
- Context.exit();
- }
- }
-
- private String generateScriptName() {
- return "Script" + counter.incrementAndGet() + ".js";
- }
-
- public static class JavaScriptExecutableScript implements ExecutableScript {
-
- private final Script script;
-
- private final Scriptable scope;
-
- public JavaScriptExecutableScript(Script script, Scriptable scope) {
- this.script = script;
- this.scope = scope;
- }
-
- @Override
- public Object run() {
- Context ctx = Context.enter();
- try {
- return ScriptValueConverter.unwrapValue(script.exec(ctx, scope));
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public void setNextVar(String name, Object value) {
- ScriptableObject.putProperty(scope, name, value);
- }
-
- @Override
- public Object unwrap(Object value) {
- return ScriptValueConverter.unwrapValue(value);
- }
- }
-
- public static class JavaScriptSearchScript implements LeafSearchScript {
-
- private final Script script;
-
- private final Scriptable scope;
-
- private final LeafSearchLookup lookup;
-
- public JavaScriptSearchScript(Script script, Scriptable scope, LeafSearchLookup lookup) {
- this.script = script;
- this.scope = scope;
- this.lookup = lookup;
- }
-
- @Override
- public void setScorer(Scorer scorer) {
- Context ctx = Context.enter();
- try {
- ScriptableObject.putProperty(scope, "_score", wrapFactory.wrapAsJavaObject(ctx, scope, new ScoreAccessor(scorer), ScoreAccessor.class));
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public void setDocument(int doc) {
- lookup.setDocument(doc);
- }
-
- @Override
- public void setNextVar(String name, Object value) {
- ScriptableObject.putProperty(scope, name, value);
- }
-
- @Override
- public void setSource(Map source) {
- lookup.source().setSource(source);
- }
-
- @Override
- public Object run() {
- Context ctx = Context.enter();
- try {
- return ScriptValueConverter.unwrapValue(script.exec(ctx, scope));
- } finally {
- Context.exit();
- }
- }
-
- @Override
- public long runAsLong() {
- return ((Number) run()).longValue();
- }
-
- @Override
- public double runAsDouble() {
- return ((Number) run()).doubleValue();
- }
-
- @Override
- public Object unwrap(Object value) {
- return ScriptValueConverter.unwrapValue(value);
- }
- }
-
- /**
- * Wrap Factory for Rhino Script Engine
- */
- public static class CustomWrapFactory extends WrapFactory {
-
- public CustomWrapFactory() {
- setJavaPrimitiveWrap(false); // RingoJS does that..., claims its annoying...
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public Scriptable wrapAsJavaObject(Context cx, Scriptable scope, Object javaObject, Class> staticType) {
- if (javaObject instanceof Map) {
- return NativeMap.wrap(scope, (Map