Add Steph van Schalkwyk's patch -- work in progress.
git-svn-id: https://svn.apache.org/repos/asf/manifoldcf/integration/elasticsearch-5.5/trunk@1807497 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
index 7010493..c035998 100644
--- a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
+++ b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
@@ -26,8 +26,9 @@
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
-import org.elasticsearch.common.logging.Loggers;
-import org.elasticsearch.common.logging.ESLogger;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.common.logging.ESLoggerFactory;
+
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
@@ -51,7 +52,7 @@
static final public String NOSECURITY_TOKEN = "__nosecurity__";
/** A logger we can use */
- private static final ESLogger LOG = Loggers.getLogger(MCFAuthorizer.class);
+ private static final Logger LOG = ESLoggerFactory.getLogger(MCFAuthorizer.class);
// Member variables
diff --git a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerException.java b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerException.java
index 2a03821..420eac4 100644
--- a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerException.java
+++ b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerException.java
@@ -26,6 +26,9 @@
*/
public class MCFAuthorizerException extends ElasticsearchException
{
+ // default serialVersionID
+ private static final long serialVersionUID = 1L;
+
/** Constructor */
public MCFAuthorizerException(String message)
{
diff --git a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerPlugin.java b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerPlugin.java
index 5311ec4..ee957a8 100644
--- a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerPlugin.java
+++ b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerPlugin.java
@@ -18,27 +18,30 @@
*/
package org.apache.manifoldcf.elasticsearch;
-import org.elasticsearch.common.logging.ESLogger;
-import org.elasticsearch.common.logging.Loggers;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.plugins.Plugin;
-import org.elasticsearch.rest.RestModule;
+//import org.elasticsearch.rest.RestModule;
+import org.elasticsearch.rest.BytesRestResponse;
+import org.elasticsearch.rest.RestController;
+import org.elasticsearch.rest.RestRequest;
+import org.elasticsearch.rest.action.cat.AbstractCatAction;
+import org.elasticsearch.rest.action.cat.RestTable;
public class MCFAuthorizerPlugin extends Plugin
{
- private final ESLogger log = Loggers.getLogger(this.getClass());
+ private final Logger log = ESLoggerFactory.getLogger(this.getClass());
public MCFAuthorizerPlugin() {
log.info("Starting ManifoldCF Authorizer Plugin");
}
- @Override
public String name() {
return "elasticsearch-plugin-mcf";
}
- @Override
public String description() {
return "Plugin to connect elasticsearch with ManifoldCF";
}
diff --git a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerRestSearchAction.java b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerRestSearchAction.java
index d03c760..4f34d1c 100644
--- a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerRestSearchAction.java
+++ b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizerRestSearchAction.java
@@ -24,25 +24,26 @@
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.search.RestSearchAction;
-import org.elasticsearch.rest.action.support.RestStatusToXContentListener;
+import org.elasticsearch.rest.action.RestStatusToXContentListener;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.elasticsearch.action.support.IndicesOptions;
-import org.elasticsearch.common.ParseFieldMatcher;
+/**import org.elasticsearch.common.ParseFieldMatcher;*/
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.Strings;
import org.elasticsearch.index.query.*;
import org.elasticsearch.rest.RestRequest;
-import org.elasticsearch.rest.action.support.RestActions;
+import org.elasticsearch.rest.action.RestActions;
import org.elasticsearch.search.Scroll;
import org.elasticsearch.search.builder.SearchSourceBuilder;
-import org.elasticsearch.search.fetch.source.FetchSourceContext;
+import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.search.suggest.SuggestBuilders;
import org.elasticsearch.search.suggest.term.TermSuggestionBuilder;
import org.elasticsearch.common.unit.TimeValue;
+import org.elasticsearch.common.xcontent.XContentParser;
import java.io.*;
@@ -51,22 +52,22 @@
protected final MCFAuthorizer authorizer;
@Inject
- public MCFAuthorizerRestSearchAction(Settings settings, final RestController restController, Client client) {
- super(settings,restController,client);
+ public MCFAuthorizerRestSearchAction(Settings settings, final RestController restController) {
+ super(settings,restController);
final MCFConfigurationParameters conf = new MCFConfigurationParameters(settings);
authorizer = new MCFAuthorizer(conf);
}
- @Override
public void handleRequest(RestRequest request, RestChannel channel, Client client) {
SearchRequest searchRequest;
- searchRequest = parseSearchRequestMCF(request, parseFieldMatcher);
+ searchRequest = parseSearchRequestMCF(request); //, parseFieldMatcher);
client.search(searchRequest, new RestStatusToXContentListener(channel));
}
protected SearchRequest parseSearchRequestMCF(
- final RestRequest request,
- final ParseFieldMatcher parseFieldMatcher) throws MCFAuthorizerException {
+ final RestRequest request //,
+// final ParseFieldMatcher parseFieldMatcher
+ ) throws MCFAuthorizerException {
final SearchRequest searchRequest;
if(request.param("u")!=null) {
searchRequest = new SearchRequest();
@@ -77,24 +78,31 @@
if(request.hasContent() || request.hasParam("source")) {
QueryBuilder authorizationFilter = authorizer.buildAuthorizationFilter(authenticatedUserNamesAndDomains);
- FilteredQueryBuilder filteredQueryBuilder;
+ QueryBuilder filteredQueryBuilder;
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode modifiedJSON, innerJSON;
JsonNode requestJSON;
try {
- requestJSON = objectMapper.readTree(RestActions.getRestContent(request).toBytes());
+ requestJSON = objectMapper.readTree(RestActions.getQueryContent((XContentParser) request).toString());
if (isTemplateRequest) {
modifiedJSON = (ObjectNode) requestJSON;
innerJSON = (ObjectNode)requestJSON.findValue("template");
- filteredQueryBuilder = QueryBuilders.filteredQuery(QueryBuilders.wrapperQuery(innerJSON.findValue("query").toString()), authorizationFilter);
- modifiedJSON.replace("template",innerJSON.set("query", objectMapper.readTree(filteredQueryBuilder.buildAsBytes().toBytes())));
+ filteredQueryBuilder = QueryBuilders.boolQuery()
+ .must (QueryBuilders.wrapperQuery(innerJSON.findValue("query").toString()))
+ .must(authorizationFilter);
+
+ modifiedJSON.replace("template",innerJSON.set("query", objectMapper.readTree(filteredQueryBuilder.toString())));
searchRequest.templateSource(modifiedJSON.toString());
+ searchRequest.set
} else {
- filteredQueryBuilder = QueryBuilders.filteredQuery(QueryBuilders.wrapperQuery(requestJSON.findValue("query").toString()), authorizationFilter);
+ filteredQueryBuilder = QueryBuilders.boolQuery()
+ .must(QueryBuilders.wrapperQuery(requestJSON.findValue("query").toString()))
+ .must(authorizationFilter);
+
modifiedJSON = (ObjectNode) requestJSON;
- modifiedJSON.set("query", objectMapper.readTree(filteredQueryBuilder.buildAsBytes().toBytes()));
+ modifiedJSON.set("query", objectMapper.readTree(filteredQueryBuilder.toString()));
searchRequest.source(modifiedJSON.toString());
}
} catch (IOException e) {
@@ -103,7 +111,7 @@
}
//parseSearchSource(searchRequest.source(), request);
- searchRequest.extraSource(parseSearchSourceMCF(request));
+ searchRequest.source(parseSearchSourceMCF(request));
searchRequest.searchType(request.param("search_type"));
// Should this be done?
@@ -120,7 +128,7 @@
searchRequest.indicesOptions(IndicesOptions.fromRequest(request, searchRequest.indicesOptions()));
}
else {
- searchRequest = parseSearchRequest(request, parseFieldMatcher);
+ searchRequest = parseSearchRequest(request);//, parseFieldMatcher);
}
return searchRequest;
}
@@ -135,18 +143,18 @@
from.defaultField(request.param("df"));
from.analyzer(request.param("analyzer"));
from.analyzeWildcard(request.paramAsBoolean("analyze_wildcard", false));
- from.lowercaseExpandedTerms(request.paramAsBoolean("lowercase_expanded_terms", true));
+// from.lowercaseExpandedTerms(request.paramAsBoolean("lowercase_expanded_terms", true));
from.lenient(request.paramAsBoolean("lenient", (Boolean)null));
String size = request.param("default_operator");
if(size != null) {
if("OR".equals(size)) {
- from.defaultOperator(QueryStringQueryBuilder.Operator.OR);
+ from.defaultOperator(Operator.OR);
} else {
if(!"AND".equals(size)) {
throw new IllegalArgumentException("Unsupported defaultOperator [" + size + "], can either be [OR] or [AND]");
}
- from.defaultOperator(QueryStringQueryBuilder.Operator.AND);
+ from.defaultOperator(Operator.AND);
}
}
@@ -154,7 +162,9 @@
searchSourceBuilder = new SearchSourceBuilder();
}
- searchSourceBuilder.query(QueryBuilders.filteredQuery(from, authorizationFilter));
+ searchSourceBuilder.query(QueryBuilders.boolQuery()
+ .must(from)
+ .must(authorizationFilter));
}
else {
if(!(request.hasContent() || request.hasParam("source"))){
@@ -162,7 +172,8 @@
searchSourceBuilder = new SearchSourceBuilder();
}
QueryBuilder authorizationFilter = authorizer.buildAuthorizationFilter(request.param("u"));
- searchSourceBuilder.query(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),authorizationFilter));
+ searchSourceBuilder.query(QueryBuilders.boolQuery()
+ .must(authorizationFilter));
}
}
diff --git a/src/main/resources/plugin-descriptor.properties b/src/main/resources/plugin-descriptor.properties
index 7d26767..8b49136 100644
--- a/src/main/resources/plugin-descriptor.properties
+++ b/src/main/resources/plugin-descriptor.properties
@@ -19,7 +19,7 @@
description=ApacheManifoldCF Auth Plugin
#
# 'version': plugin's version
-version=2.1
+version=5.5
#
# 'name': the plugin name
name=ApacheManifoldCFAuthPlugin
@@ -40,14 +40,14 @@
# 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
+java.version=1.8
#
# '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.0.2
+elasticsearch.version=5.5.2
#
### deprecated elements for jvm plugins :
#