mirror of https://github.com/apache/lucene.git
SOLR-14977: improved plugin configuration (#2099)
This commit is contained in:
parent
ecf152279b
commit
94c69f4385
|
@ -34,6 +34,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.MapperFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.solr.client.solrj.SolrRequest;
|
||||
import org.apache.solr.common.SolrException;
|
||||
|
@ -64,7 +65,8 @@ import org.slf4j.LoggerFactory;
|
|||
public class AnnotatedApi extends Api implements PermissionNameProvider , Closeable {
|
||||
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
private static final ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||
.disable(MapperFeature.AUTO_DETECT_FIELDS);
|
||||
|
||||
public static final String ERR = "Error executing commands :";
|
||||
private EndPoint endPoint;
|
||||
|
|
|
@ -24,16 +24,12 @@ import java.lang.reflect.Constructor;
|
|||
import java.lang.reflect.Modifier;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.MapperFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.lucene.util.ResourceLoaderAware;
|
||||
import org.apache.solr.client.solrj.SolrRequest;
|
||||
|
@ -73,7 +69,8 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
|
|||
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
private static final ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||
.disable(MapperFeature.AUTO_DETECT_FIELDS);
|
||||
|
||||
private final List<PluginRegistryListener> listeners = new CopyOnWriteArrayList<>();
|
||||
|
||||
|
@ -390,9 +387,11 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
|
|||
}
|
||||
if (instance instanceof ConfigurablePlugin) {
|
||||
Class<? extends MapWriter> c = getConfigClass((ConfigurablePlugin<? extends MapWriter>) instance);
|
||||
if (c != null && holder.meta.config != null) {
|
||||
MapWriter initVal = mapper.readValue(Utils.toJSON(holder.meta.config), c);
|
||||
((ConfigurablePlugin) instance).configure(initVal);
|
||||
if (c != null) {
|
||||
Map<String, Object> original = (Map<String, Object>) holder.original.getOrDefault("config", Collections.emptyMap());
|
||||
holder.meta.config = mapper.readValue(Utils.toJSON(original), c);
|
||||
((ConfigurablePlugin) instance).configure(holder.meta.config);
|
||||
|
||||
}
|
||||
}
|
||||
if (instance instanceof ResourceLoaderAware) {
|
||||
|
@ -437,10 +436,6 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
|
|||
public ApiInfo createInfo(Map<String,Object> info, List<String> errs) throws IOException {
|
||||
return new ApiInfo(new PluginMetaHolder(info), errs);
|
||||
|
||||
}
|
||||
public ApiInfo createInfo(PluginMetaHolder info, List<String> errs) {
|
||||
return new ApiInfo(info, errs);
|
||||
|
||||
}
|
||||
|
||||
public enum Diff {
|
||||
|
|
|
@ -17,8 +17,10 @@
|
|||
|
||||
package org.apache.solr.client.solrj.request.beans;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.apache.solr.common.MapWriter;
|
||||
import org.apache.solr.common.annotation.JsonProperty;
|
||||
import org.apache.solr.common.util.ReflectMapWriter;
|
||||
|
||||
|
@ -43,8 +45,8 @@ public class PluginMeta implements ReflectMapWriter {
|
|||
public String pathPrefix;
|
||||
|
||||
/** Plugin configuration object, optional. */
|
||||
@JsonProperty
|
||||
public Object config;
|
||||
public MapWriter config;
|
||||
|
||||
|
||||
|
||||
public PluginMeta copy() {
|
||||
|
@ -56,6 +58,12 @@ public class PluginMeta implements ReflectMapWriter {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeMap(EntryWriter ew) throws IOException {
|
||||
ReflectMapWriter.super.writeMap(ew);
|
||||
ew.putIfNotNull("config", config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof PluginMeta) {
|
||||
|
@ -63,6 +71,7 @@ public class PluginMeta implements ReflectMapWriter {
|
|||
return Objects.equals(this.name, that.name) &&
|
||||
Objects.equals(this.klass, that.klass) &&
|
||||
Objects.equals(this.version, that.version) &&
|
||||
|
||||
Objects.equals(this.config, that.config);
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue