org.elasticsearch.script.ScriptContext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch Show documentation
Show all versions of elasticsearch Show documentation
Elasticsearch subproject :server
/*
* 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;
import org.elasticsearch.common.Strings;
/**
* Context of an operation that uses scripts as part of its execution.
*/
public interface ScriptContext {
/**
* @return the name of the operation
*/
String getKey();
/**
* Standard operations that make use of scripts as part of their execution.
* Note that the suggest api is considered part of search for simplicity, as well as the percolate api.
*/
enum Standard implements ScriptContext {
AGGS("aggs"), SEARCH("search"), UPDATE("update"), INGEST("ingest");
private final String key;
Standard(String key) {
this.key = key;
}
@Override
public String getKey() {
return key;
}
@Override
public String toString() {
return getKey();
}
}
/**
* Custom operation exposed via plugin, which makes use of scripts as part of its execution
*/
final class Plugin implements ScriptContext {
private final String pluginName;
private final String operation;
private final String key;
/**
* Creates a new custom scripts based operation exposed via plugin.
* The name of the plugin combined with the operation name can be used to enable/disable scripts via fine-grained settings.
*
* @param pluginName the name of the plugin
* @param operation the name of the operation
*/
public Plugin(String pluginName, String operation) {
if (Strings.hasLength(pluginName) == false) {
throw new IllegalArgumentException("plugin name cannot be empty when registering a custom script context");
}
if (Strings.hasLength(operation) == false) {
throw new IllegalArgumentException("operation name cannot be empty when registering a custom script context");
}
this.pluginName = pluginName;
this.operation = operation;
this.key = pluginName + "_" + operation;
}
public String getPluginName() {
return pluginName;
}
public String getOperation() {
return operation;
}
@Override
public String getKey() {
return key;
}
@Override
public String toString() {
return getKey();
}
}
}