This is an automated email from the ASF dual-hosted git repository.

noble pushed a commit to branch jira/solr16547
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/jira/solr16547 by this push:
     new 5b441d9ec3a refactor QueryResponseWriters
5b441d9ec3a is described below

commit 5b441d9ec3a7769921a6c7db734070419797c0be
Author: Noble Paul <[email protected]>
AuthorDate: Wed Nov 16 14:38:28 2022 +1100

    refactor QueryResponseWriters
---
 .../src/java/org/apache/solr/api/V2HttpCall.java   |   5 +-
 .../java/org/apache/solr/core/CoreContainer.java   |   5 +-
 .../src/java/org/apache/solr/core/PluginBag.java   |  13 +-
 .../org/apache/solr/core/RequestHandlerBag.java    | 192 +++++++++++----------
 .../java/org/apache/solr/core/RequestHandlers.java |   2 +-
 .../java/org/apache/solr/core/ResponseWriters.java | 171 +++++++++---------
 .../src/java/org/apache/solr/core/SolrCore.java    |  32 ++--
 .../java/org/apache/solr/handler/BlobHandler.java  |   5 +-
 .../java/org/apache/solr/handler/ClusterAPI.java   |   5 +-
 .../apache/solr/handler/ReplicationHandler.java    |   8 +-
 .../apache/solr/handler/export/ExportWriter.java   |   1 -
 .../org/apache/solr/jersey/JerseyApplications.java |   4 +-
 .../org/apache/solr/jersey/MetricBeanFactory.java  |   4 +-
 .../apache/solr/jersey/RequestMetricHandling.java  |   1 -
 .../apache/solr/response/QueryResponseWriter.java  |  10 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |   3 +-
 .../test/org/apache/solr/core/PluginBagTest.java   |  17 +-
 .../solr/handler/admin/TestApiFramework.java       |  14 +-
 18 files changed, 242 insertions(+), 250 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java 
b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
index 18b3c68a271..78567bdb934 100644
--- a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
@@ -51,13 +51,12 @@ import org.apache.solr.common.util.PathTrie;
 import org.apache.solr.common.util.SuppressForbidden;
 import org.apache.solr.common.util.ValidatingJsonMap;
 import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.PluginBag;
+import org.apache.solr.core.RequestHandlerBag;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerUtils;
 import org.apache.solr.jersey.RequestContextKeys;
 import org.apache.solr.jersey.container.ContainerRequestUtils;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.security.AuthorizationContext;
@@ -263,7 +262,7 @@ public class V2HttpCall extends HttpSolrCall {
   }
 
   public static Api getApiInfo(
-      PluginBag<SolrRequestHandler> requestHandlers,
+      RequestHandlerBag requestHandlers,
       String path,
       String method,
       String fullPath,
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java 
b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index e47475103b0..9ae4e77618f 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -187,8 +187,7 @@ public class CoreContainer {
     }
   }
 
-  private volatile RequestHandlerBag containerHandlers =
-      new RequestHandlerBag( null);
+  private volatile RequestHandlerBag containerHandlers = new 
RequestHandlerBag(null);
 
   private volatile ApplicationHandler jerseyAppHandler;
 
@@ -338,7 +337,7 @@ public class CoreContainer {
     return RequestHandlerBase.getRequestHandler(path, containerHandlers);
   }
 
-  public PluginBag<SolrRequestHandler> getRequestHandlers() {
+  public RequestHandlerBag getRequestHandlers() {
     return this.containerHandlers;
   }
 
diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java 
b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 2cbc1a13a3f..693558edd28 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -29,7 +29,6 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
-
 import org.apache.lucene.util.ResourceLoader;
 import org.apache.lucene.util.ResourceLoaderAware;
 import org.apache.solr.common.SolrException;
@@ -72,8 +71,12 @@ public class PluginBag<T> implements AutoCloseable {
     }
   }
 
-  public PluginBag(Class<T> klass, SolrCore core, boolean needThreadSafety, 
Map<String,
-          PluginHolder<T>> defaults,SolrConfig.SolrPluginInfo pluginMetaData) {
+  public PluginBag(
+      Class<T> klass,
+      SolrCore core,
+      boolean needThreadSafety,
+      Map<String, PluginHolder<T>> defaults,
+      SolrConfig.SolrPluginInfo pluginMetaData) {
     this.core = core;
     this.klass = klass;
     this.registry = needThreadSafety ? new ConcurrentHashMap<>(0) : new 
HashMap<>(0);
@@ -157,7 +160,7 @@ public class PluginBag<T> implements AutoCloseable {
   /** Get a plugin by name. If the plugin is not already instantiated, it is 
done here */
   public T get(String name) {
     PluginHolder<T> result = registry.get(name);
-    if(result == null && defaults != null) result = defaults.get(name);
+    if (result == null && defaults != null) result = defaults.get(name);
     return result == null ? null : result.get();
   }
 
@@ -255,7 +258,7 @@ public class PluginBag<T> implements AutoCloseable {
             infos.stream().map(i -> i.name).collect(Collectors.toList()));
       }
     }
-    if(defaults != null) {
+    if (defaults != null) {
       for (Map.Entry<String, T> e : defaults.entrySet()) {
         if (!contains(e.getKey())) {
           put(e.getKey(), new PluginHolder<>(null, e.getValue()));
diff --git a/solr/core/src/java/org/apache/solr/core/RequestHandlerBag.java 
b/solr/core/src/java/org/apache/solr/core/RequestHandlerBag.java
index cfddb08e4a7..2085354e04a 100644
--- a/solr/core/src/java/org/apache/solr/core/RequestHandlerBag.java
+++ b/solr/core/src/java/org/apache/solr/core/RequestHandlerBag.java
@@ -1,6 +1,13 @@
 package org.apache.solr.core;
 
+import static java.util.Collections.singletonMap;
+import static org.apache.solr.api.ApiBag.HANDLER_NAME;
 
+import java.lang.invoke.MethodHandles;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.solr.api.Api;
 import org.apache.solr.api.ApiBag;
@@ -9,117 +16,112 @@ import org.apache.solr.api.JerseyResource;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.handler.RequestHandlerBase;
+import org.apache.solr.jersey.JerseyApplications;
 import org.apache.solr.request.SolrRequestHandler;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.lang.invoke.MethodHandles;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static java.util.Collections.singletonMap;
-import static org.apache.solr.api.ApiBag.HANDLER_NAME;
-
 public class RequestHandlerBag extends PluginBag<SolrRequestHandler> {
-    private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-    private  ApiBag apiBag;
-    private  ResourceConfig jerseyResources;
-    private  JerseyMetricsLookupRegistry infoBeanByResource;
-
-    public RequestHandlerBag(SolrCore core) {
-        super(SolrRequestHandler.class, core, true);
-        this.apiBag = new ApiBag(core != null);
+  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  private ApiBag apiBag;
+  private ResourceConfig jerseyResources;
+  private JerseyMetricsLookupRegistry infoBeanByResource;
+
+  public RequestHandlerBag(SolrCore core) {
+    super(SolrRequestHandler.class, core, true);
+    this.apiBag = new ApiBag(core != null);
+    this.infoBeanByResource = new JerseyMetricsLookupRegistry();
+    this.jerseyResources =
+        (core == null)
+            ? new JerseyApplications.CoreContainerApp(infoBeanByResource)
+            : new JerseyApplications.SolrCoreApp(core, infoBeanByResource);
+  }
+
+  @Override
+  public PluginHolder<SolrRequestHandler> put(
+      String name, PluginHolder<SolrRequestHandler> plugin) {
+    Boolean registerApi = null;
+    Boolean disableHandler = null;
+    if (plugin.pluginInfo != null) {
+      String registerAt = plugin.pluginInfo.attributes.get("registerPath");
+      if (registerAt != null) {
+        List<String> strs = StrUtils.splitSmart(registerAt, ',');
+        disableHandler = !strs.contains("/solr");
+        registerApi = strs.contains("/v2");
+      }
     }
 
-    @Override
-    public PluginHolder<SolrRequestHandler> put(String name, 
PluginHolder<SolrRequestHandler> plugin) {
-        Boolean registerApi = null;
-        Boolean disableHandler = null;
-        if (plugin.pluginInfo != null) {
-            String registerAt = 
plugin.pluginInfo.attributes.get("registerPath");
-            if (registerAt != null) {
-                List<String> strs = StrUtils.splitSmart(registerAt, ',');
-                disableHandler = !strs.contains("/solr");
-                registerApi = strs.contains("/v2");
+    if (apiBag != null) {
+      if (plugin.isLoaded()) {
+        SolrRequestHandler inst = plugin.get();
+        if (inst instanceof ApiSupport) {
+          ApiSupport apiSupport = (ApiSupport) inst;
+          if (registerApi == null) registerApi = apiSupport.registerV2();
+          if (disableHandler == null) disableHandler = 
!apiSupport.registerV1();
+
+          if (registerApi) {
+            Collection<Api> apis = apiSupport.getApis();
+            if (apis != null) {
+              Map<String, String> nameSubstitutes = singletonMap(HANDLER_NAME, 
name);
+              for (Api api : apis) {
+                apiBag.register(api, nameSubstitutes);
+              }
             }
-        }
 
-        if (apiBag != null) {
-            if (plugin.isLoaded()) {
-                SolrRequestHandler inst = plugin.get();
-                if (inst instanceof ApiSupport) {
-                    ApiSupport apiSupport = (ApiSupport) inst;
-                    if (registerApi == null) registerApi = 
apiSupport.registerV2();
-                    if (disableHandler == null) disableHandler = 
!apiSupport.registerV1();
-
-                    if (registerApi) {
-                        Collection<Api> apis = apiSupport.getApis();
-                        if (apis != null) {
-                            Map<String, String> nameSubstitutes = 
singletonMap(HANDLER_NAME, name);
-                            for (Api api : apis) {
-                                apiBag.register(api, nameSubstitutes);
-                            }
-                        }
-
-                        // TODO Should we use <requestHandler name="/blah"> to 
override the path that each
-                        //  resource registers under?
-                        Collection<Class<? extends JerseyResource>> jerseyApis 
=
-                                apiSupport.getJerseyResources();
-                        if (!CollectionUtils.isEmpty(jerseyApis)) {
-                            for (Class<? extends JerseyResource> jerseyClazz : 
jerseyApis) {
-                                if (log.isDebugEnabled()) {
-                                    log.debug("Registering jersey resource 
class: {}", jerseyClazz.getName());
-                                }
-                                jerseyResources.register(jerseyClazz);
-                                // See MetricsBeanFactory javadocs for a 
better understanding of this resource->RH
-                                // mapping
-                                if (inst instanceof RequestHandlerBase) {
-                                    infoBeanByResource.put(jerseyClazz, 
(RequestHandlerBase) inst);
-                                }
-                            }
-                        }
-                    }
+            // TODO Should we use <requestHandler name="/blah"> to override 
the path that each
+            //  resource registers under?
+            Collection<Class<? extends JerseyResource>> jerseyApis =
+                apiSupport.getJerseyResources();
+            if (!CollectionUtils.isEmpty(jerseyApis)) {
+              for (Class<? extends JerseyResource> jerseyClazz : jerseyApis) {
+                if (log.isDebugEnabled()) {
+                  log.debug("Registering jersey resource class: {}", 
jerseyClazz.getName());
                 }
-            } else {
-                if (registerApi != null && registerApi)
-                    apiBag.registerLazy((PluginHolder<SolrRequestHandler>) 
plugin, plugin.pluginInfo);
+                jerseyResources.register(jerseyClazz);
+                // See MetricsBeanFactory javadocs for a better understanding 
of this resource->RH
+                // mapping
+                if (inst instanceof RequestHandlerBase) {
+                  infoBeanByResource.put(jerseyClazz, (RequestHandlerBase) 
inst);
+                }
+              }
             }
+          }
         }
-        PluginHolder<SolrRequestHandler> old = null;
-        if (disableHandler == null) disableHandler = Boolean.FALSE;
-        if (!disableHandler) old = registry.put(name, plugin);
-        if (plugin.pluginInfo != null && plugin.pluginInfo.isDefault()) 
setDefault(name);
-        if (plugin.isLoaded()) registerMBean(plugin.get(), core, name);
-        // old instance has been replaced - close it to prevent mem leaks
-        if (old != null && old != plugin) {
-            closeQuietly(old);
-        }
-        return old;
+      } else {
+        if (registerApi != null && registerApi) apiBag.registerLazy(plugin, 
plugin.pluginInfo);
+      }
     }
-
-    public Api v2lookup(String path, String method, Map<String, String> parts) 
{
-        if (apiBag == null) {
-            throw new SolrException(
-                    SolrException.ErrorCode.SERVER_ERROR,
-                    "this should not happen, looking up for v2 API at the 
wrong place");
-        }
-        return apiBag.lookup(path, method, parts);
+    PluginHolder<SolrRequestHandler> old = null;
+    if (disableHandler == null) disableHandler = Boolean.FALSE;
+    if (!disableHandler) old = registry.put(name, plugin);
+    if (plugin.pluginInfo != null && plugin.pluginInfo.isDefault()) 
setDefault(name);
+    if (plugin.isLoaded()) registerMBean(plugin.get(), core, name);
+    // old instance has been replaced - close it to prevent mem leaks
+    if (old != null && old != plugin) {
+      closeQuietly(old);
     }
-
-
-
-    public ApiBag getApiBag() {
-        return apiBag;
+    return old;
+  }
+
+  public Api v2lookup(String path, String method, Map<String, String> parts) {
+    if (apiBag == null) {
+      throw new SolrException(
+          SolrException.ErrorCode.SERVER_ERROR,
+          "this should not happen, looking up for v2 API at the wrong place");
     }
+    return apiBag.lookup(path, method, parts);
+  }
 
-    public ResourceConfig getJerseyEndpoints() {
-        return jerseyResources;
-    }
+  public ApiBag getApiBag() {
+    return apiBag;
+  }
+
+  public ResourceConfig getJerseyEndpoints() {
+    return jerseyResources;
+  }
 
-    public static class JerseyMetricsLookupRegistry
-        extends HashMap<Class<? extends JerseyResource>, RequestHandlerBase> {}
+  public static class JerseyMetricsLookupRegistry
+      extends HashMap<Class<? extends JerseyResource>, RequestHandlerBase> {}
 }
diff --git a/solr/core/src/java/org/apache/solr/core/RequestHandlers.java 
b/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
index 4c2e7d15041..4e905ad8d68 100644
--- a/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
+++ b/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
@@ -51,7 +51,7 @@ public final class RequestHandlers {
     this.core = core;
     // we need a thread safe registry since methods like register are 
currently documented to be
     // thread safe.
-    handlers = new RequestHandlerBag( core);
+    handlers = new RequestHandlerBag(core);
   }
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/core/ResponseWriters.java 
b/solr/core/src/java/org/apache/solr/core/ResponseWriters.java
index 8a11bb3390f..48fdfd7558b 100644
--- a/solr/core/src/java/org/apache/solr/core/ResponseWriters.java
+++ b/solr/core/src/java/org/apache/solr/core/ResponseWriters.java
@@ -17,101 +17,114 @@
 package org.apache.solr.core;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.solr.client.solrj.impl.BinaryResponseParser;
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.handler.ReplicationHandler;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.*;
-
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.solr.client.solrj.impl.BinaryResponseParser;
+import org.apache.solr.common.params.CommonParams;
+import org.apache.solr.handler.ReplicationHandler;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.BinaryResponseWriter;
+import org.apache.solr.response.CSVResponseWriter;
+import org.apache.solr.response.GeoJSONResponseWriter;
+import org.apache.solr.response.GraphMLResponseWriter;
+import org.apache.solr.response.JSONResponseWriter;
+import org.apache.solr.response.PHPResponseWriter;
+import org.apache.solr.response.PHPSerializedResponseWriter;
+import org.apache.solr.response.PythonResponseWriter;
+import org.apache.solr.response.QueryResponseWriter;
+import org.apache.solr.response.RawResponseWriter;
+import org.apache.solr.response.RubyResponseWriter;
+import org.apache.solr.response.SchemaXmlResponseWriter;
+import org.apache.solr.response.SmileResponseWriter;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.response.XMLResponseWriter;
 
 public class ResponseWriters {
-    public static final SolrConfig.SolrPluginInfo info =  
SolrConfig.classVsSolrPluginInfo.get(QueryResponseWriter.class.getName());
-    private static QueryResponseWriter standard;
+  public static final SolrConfig.SolrPluginInfo info =
+      
SolrConfig.classVsSolrPluginInfo.get(QueryResponseWriter.class.getName());
+  private static QueryResponseWriter standard;
 
-    public static QueryResponseWriter get(String name) {
-        return DEFAULT_RESPONSE_WRITERS.get(name);
-    }
-    public static QueryResponseWriter getOrDefault(String name){
-        QueryResponseWriter result = DEFAULT_RESPONSE_WRITERS.get(name);
-        return result==null? standard: result;
+  public static QueryResponseWriter get(String name) {
+    return DEFAULT_RESPONSE_WRITERS.get(name);
+  }
 
-    }
-
-    public static final Map<String, QueryResponseWriter> 
DEFAULT_RESPONSE_WRITERS;
-    public static final Map<String, 
PluginBag.PluginHolder<QueryResponseWriter>> DEFAULT_RESPONSE_WRITER_HOLDERS ;
+  public static QueryResponseWriter getOrDefault(String name) {
+    QueryResponseWriter result = DEFAULT_RESPONSE_WRITERS.get(name);
+    return result == null ? standard : result;
+  }
 
+  public static final Map<String, QueryResponseWriter> 
DEFAULT_RESPONSE_WRITERS;
+  public static final Map<String, PluginBag.PluginHolder<QueryResponseWriter>>
+      DEFAULT_RESPONSE_WRITER_HOLDERS;
 
-    static {
-        HashMap<String, QueryResponseWriter> m = new HashMap<>(15, 1);
-        m.put("xml", new XMLResponseWriter());
-        m.put(CommonParams.JSON, new JSONResponseWriter());
-        m.put("standard", m.get(CommonParams.JSON));
-        m.put("geojson", new GeoJSONResponseWriter());
-        m.put("graphml", new GraphMLResponseWriter());
-        m.put("python", new PythonResponseWriter());
-        m.put("php", new PHPResponseWriter());
-        m.put("phps", new PHPSerializedResponseWriter());
-        m.put("ruby", new RubyResponseWriter());
-        m.put("raw", new RawResponseWriter());
-        m.put(CommonParams.JAVABIN, new BinaryResponseWriter());
-        m.put("csv", new CSVResponseWriter());
-        m.put("schema.xml", new SchemaXmlResponseWriter());
-        m.put("smile", new SmileResponseWriter());
-        standard = m.get("standard");
-        m.put(ReplicationHandler.FILE_STREAM, getFileStreamWriter());
-        DEFAULT_RESPONSE_WRITERS = Collections.unmodifiableMap(m);
-        try {
-            m.put(
-                    "xlsx",
-                    (QueryResponseWriter)
-                            
Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter")
-                                    .getConstructor()
-                                    .newInstance());
-        } catch (Exception e) {
-            // don't worry; extraction module not in class path
-        }
-        ImmutableMap.Builder<String, 
PluginBag.PluginHolder<QueryResponseWriter>> b = ImmutableMap.builder();
-        DEFAULT_RESPONSE_WRITERS.forEach((k, v) -> b.put(k, new 
PluginBag.PluginHolder<>(v, info)));
-        DEFAULT_RESPONSE_WRITER_HOLDERS = b.build();
+  static {
+    HashMap<String, QueryResponseWriter> m = new HashMap<>(15, 1);
+    m.put("xml", new XMLResponseWriter());
+    m.put(CommonParams.JSON, new JSONResponseWriter());
+    m.put("standard", m.get(CommonParams.JSON));
+    m.put("geojson", new GeoJSONResponseWriter());
+    m.put("graphml", new GraphMLResponseWriter());
+    m.put("python", new PythonResponseWriter());
+    m.put("php", new PHPResponseWriter());
+    m.put("phps", new PHPSerializedResponseWriter());
+    m.put("ruby", new RubyResponseWriter());
+    m.put("raw", new RawResponseWriter());
+    m.put(CommonParams.JAVABIN, new BinaryResponseWriter());
+    m.put("csv", new CSVResponseWriter());
+    m.put("schema.xml", new SchemaXmlResponseWriter());
+    m.put("smile", new SmileResponseWriter());
+    standard = m.get("standard");
+    m.put(ReplicationHandler.FILE_STREAM, getFileStreamWriter());
+    DEFAULT_RESPONSE_WRITERS = Collections.unmodifiableMap(m);
+    try {
+      m.put(
+          "xlsx",
+          (QueryResponseWriter)
+              
Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter")
+                  .getConstructor()
+                  .newInstance());
+    } catch (Exception e) {
+      // don't worry; extraction module not in class path
     }
+    ImmutableMap.Builder<String, PluginBag.PluginHolder<QueryResponseWriter>> 
b =
+        ImmutableMap.builder();
+    DEFAULT_RESPONSE_WRITERS.forEach((k, v) -> b.put(k, new 
PluginBag.PluginHolder<>(v, info)));
+    DEFAULT_RESPONSE_WRITER_HOLDERS = b.build();
+  }
 
-    private static BinaryResponseWriter getFileStreamWriter() {
-        return new BinaryResponseWriter() {
-            @Override
-            public void write(OutputStream out, SolrQueryRequest req, 
SolrQueryResponse response)
-                    throws IOException {
-                RawWriter rawWriter = (RawWriter) 
response.getValues().get(ReplicationHandler.FILE_STREAM);
-                if (rawWriter != null) {
-                    rawWriter.write(out);
-                    if (rawWriter instanceof Closeable) ((Closeable) 
rawWriter).close();
-                }
-            }
-
-            @Override
-            public String getContentType(SolrQueryRequest request, 
SolrQueryResponse response) {
-                RawWriter rawWriter = (RawWriter) 
response.getValues().get(ReplicationHandler.FILE_STREAM);
-                if (rawWriter != null) {
-                    return rawWriter.getContentType();
-                } else {
-                    return BinaryResponseParser.BINARY_CONTENT_TYPE;
-                }
-            }
-        };
-    }
-
-
+  private static BinaryResponseWriter getFileStreamWriter() {
+    return new BinaryResponseWriter() {
+      @Override
+      public void write(OutputStream out, SolrQueryRequest req, 
SolrQueryResponse response)
+          throws IOException {
+        RawWriter rawWriter = (RawWriter) 
response.getValues().get(ReplicationHandler.FILE_STREAM);
+        if (rawWriter != null) {
+          rawWriter.write(out);
+          if (rawWriter instanceof Closeable) ((Closeable) rawWriter).close();
+        }
+      }
 
-    public interface RawWriter {
-        default String getContentType() {
-            return BinaryResponseParser.BINARY_CONTENT_TYPE;
+      @Override
+      public String getContentType(SolrQueryRequest request, SolrQueryResponse 
response) {
+        RawWriter rawWriter = (RawWriter) 
response.getValues().get(ReplicationHandler.FILE_STREAM);
+        if (rawWriter != null) {
+          return rawWriter.getContentType();
+        } else {
+          return BinaryResponseParser.BINARY_CONTENT_TYPE;
         }
+      }
+    };
+  }
 
-        void write(OutputStream os) throws IOException;
+  public interface RawWriter {
+    default String getContentType() {
+      return BinaryResponseParser.BINARY_CONTENT_TYPE;
     }
+
+    void write(OutputStream os) throws IOException;
+  }
 }
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java 
b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 8ff9255d221..fa98ffca100 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -17,7 +17,6 @@
 package org.apache.solr.core;
 
 import static org.apache.solr.common.params.CommonParams.PATH;
-import static org.apache.solr.core.ResponseWriters.DEFAULT_RESPONSE_WRITERS;
 
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Timer;
@@ -29,7 +28,6 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.invoke.MethodHandles;
@@ -78,7 +76,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.util.ResourceLoader;
-import org.apache.solr.client.solrj.impl.BinaryResponseParser;
 import org.apache.solr.cloud.CloudDescriptor;
 import org.apache.solr.cloud.RecoveryStrategy;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
@@ -105,7 +102,6 @@ import org.apache.solr.core.snapshots.SolrSnapshotManager;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
 import 
org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager.SnapshotMetaData;
 import org.apache.solr.handler.IndexFetcher;
-import org.apache.solr.handler.ReplicationHandler;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.handler.SolrConfigHandler;
 import org.apache.solr.handler.component.HighlightComponent;
@@ -120,21 +116,8 @@ import org.apache.solr.pkg.SolrPackageLoader;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.request.SolrRequestInfo;
-import org.apache.solr.response.BinaryResponseWriter;
-import org.apache.solr.response.CSVResponseWriter;
-import org.apache.solr.response.GeoJSONResponseWriter;
-import org.apache.solr.response.GraphMLResponseWriter;
-import org.apache.solr.response.JSONResponseWriter;
-import org.apache.solr.response.PHPResponseWriter;
-import org.apache.solr.response.PHPSerializedResponseWriter;
-import org.apache.solr.response.PythonResponseWriter;
 import org.apache.solr.response.QueryResponseWriter;
-import org.apache.solr.response.RawResponseWriter;
-import org.apache.solr.response.RubyResponseWriter;
-import org.apache.solr.response.SchemaXmlResponseWriter;
-import org.apache.solr.response.SmileResponseWriter;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.response.XMLResponseWriter;
 import org.apache.solr.response.transform.TransformerFactory;
 import org.apache.solr.rest.ManagedResourceStorage;
 import org.apache.solr.rest.ManagedResourceStorage.StorageIO;
@@ -1954,7 +1937,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
   }
 
   /** Returns an unmodifiable Map containing the registered handlers */
-  public PluginBag<SolrRequestHandler> getRequestHandlers() {
+  public RequestHandlerBag getRequestHandlers() {
     return reqHandlers.handlers;
   }
 
@@ -1997,8 +1980,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
       if (searchComponents.isLoaded(name)
           && searchComponents.get(name) instanceof HighlightComponent) {
         if (!HighlightComponent.COMPONENT_NAME.equals(name)) {
-          searchComponents.put(
-              HighlightComponent.COMPONENT_NAME, 
searchComponents.getHolder(name));
+          searchComponents.put(HighlightComponent.COMPONENT_NAME, 
searchComponents.getHolder(name));
         }
         break;
       }
@@ -2992,9 +2974,15 @@ public class SolrCore implements SolrInfoBean, Closeable 
{
   public PluginBag<QueryResponseWriter> getResponseWriters() {
     return responseWriters;
   }
+
   private final PluginBag<QueryResponseWriter> responseWriters =
-          new PluginBag<>(QueryResponseWriter.class, this, false,
-                  ResponseWriters.DEFAULT_RESPONSE_WRITER_HOLDERS, 
ResponseWriters.info);
+      new PluginBag<>(
+          QueryResponseWriter.class,
+          this,
+          false,
+          ResponseWriters.DEFAULT_RESPONSE_WRITER_HOLDERS,
+          ResponseWriters.info);
+
   public void fetchLatestSchema() {
     IndexSchema schema = configSet.getIndexSchema(true);
     setLatestSchema(schema);
diff --git a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java 
b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
index 789be7117be..b77eaa1ad4d 100644
--- a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
@@ -25,7 +25,6 @@ import static 
org.apache.solr.common.params.CommonParams.VERSION;
 import com.google.common.collect.Lists;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.lang.invoke.MethodHandles;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
@@ -54,7 +53,6 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.ResponseWriters;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.admin.api.GetBlobInfoAPI;
 import org.apache.solr.handler.admin.api.UploadBlobAPI;
 import org.apache.solr.request.LocalSolrQueryRequest;
@@ -211,7 +209,8 @@ public class BlobHandler extends RequestHandlerBase
           if (docs.totalHits.value > 0) {
             rsp.add(
                 ReplicationHandler.FILE_STREAM,
-                    (ResponseWriters.RawWriter) os -> {
+                (ResponseWriters.RawWriter)
+                    os -> {
                       Document doc = 
req.getSearcher().doc(docs.scoreDocs[0].doc);
                       IndexableField sf = doc.getField("blob");
                       FieldType fieldType = 
req.getSchema().getField("blob").getType();
diff --git a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java 
b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
index 236159bbe0a..164e6c25bd7 100644
--- a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
+++ b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
@@ -80,13 +80,12 @@ public class ClusterAPI {
   @EndPoint(method = GET, path = "/node/heap", permission = COLL_READ_PERM)
   public void heap(SolrQueryRequest req, SolrQueryResponse rsp) throws 
Exception {
     Runtime rt = Runtime.getRuntime();
-    if(req.getParams().getBool("gc", false)) {
+    if (req.getParams().getBool("gc", false)) {
       rt.gc();
     }
-    rsp.add("heap",  rt.totalMemory() - rt.freeMemory());
+    rsp.add("heap", rt.totalMemory() - rt.freeMemory());
   }
 
-
   @EndPoint(method = GET, path = "/cluster/node-roles", permission = 
COLL_READ_PERM)
   public void roles(SolrQueryRequest req, SolrQueryResponse rsp) throws 
Exception {
     rsp.add(
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java 
b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index 29b0e47aaa7..b28b3918f4d 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -83,8 +83,14 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.SuppressForbidden;
-import org.apache.solr.core.*;
+import org.apache.solr.core.CloseHook;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.DirectoryFactory.DirContext;
+import org.apache.solr.core.IndexDeletionPolicyWrapper;
+import org.apache.solr.core.ResponseWriters;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrDeletionPolicy;
+import org.apache.solr.core.SolrEventListener;
 import org.apache.solr.core.backup.repository.BackupRepository;
 import org.apache.solr.core.backup.repository.LocalFileSystemRepository;
 import org.apache.solr.handler.IndexFetcher.IndexFetchResult;
diff --git 
a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java 
b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
index d3764c1088b..5edb3b03e9c 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
@@ -56,7 +56,6 @@ import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.params.StreamParams;
 import org.apache.solr.common.util.JavaBinCodec;
 import org.apache.solr.core.ResponseWriters;
-import org.apache.solr.core.SolrCore;
 import org.apache.solr.metrics.SolrMetricsContext;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
diff --git a/solr/core/src/java/org/apache/solr/jersey/JerseyApplications.java 
b/solr/core/src/java/org/apache/solr/jersey/JerseyApplications.java
index dc613dbe958..0b964df5fa2 100644
--- a/solr/core/src/java/org/apache/solr/jersey/JerseyApplications.java
+++ b/solr/core/src/java/org/apache/solr/jersey/JerseyApplications.java
@@ -21,7 +21,6 @@ import io.swagger.v3.oas.annotations.OpenAPIDefinition;
 import io.swagger.v3.oas.annotations.info.Info;
 import io.swagger.v3.oas.annotations.info.License;
 import javax.inject.Singleton;
-
 import org.apache.solr.core.RequestHandlerBag;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
@@ -103,7 +102,8 @@ public class JerseyApplications {
 
   public static class SolrCoreApp extends CoreContainerApp {
 
-    public SolrCoreApp(SolrCore solrCore, 
RequestHandlerBag.JerseyMetricsLookupRegistry beanRegistry) {
+    public SolrCoreApp(
+        SolrCore solrCore, RequestHandlerBag.JerseyMetricsLookupRegistry 
beanRegistry) {
       super(beanRegistry);
 
       // Dependency Injection for Jersey resources
diff --git a/solr/core/src/java/org/apache/solr/jersey/MetricBeanFactory.java 
b/solr/core/src/java/org/apache/solr/jersey/MetricBeanFactory.java
index 9821cd51f87..b9dbab54f73 100644
--- a/solr/core/src/java/org/apache/solr/jersey/MetricBeanFactory.java
+++ b/solr/core/src/java/org/apache/solr/jersey/MetricBeanFactory.java
@@ -26,8 +26,8 @@ import org.glassfish.hk2.api.Factory;
  * <p>Currently, Jersey resources that have a corresponding v1 API produce the 
same metrics as their
  * v1 equivalent and rely on the v1 requestHandler instance to do so. Solr 
facilitates this by
  * building a map of the Jersey resource to requestHandler mapping (a {@link
- * RequestHandlerBag.JerseyMetricsLookupRegistry}), and injecting it into the 
pre- and
- * post- Jersey filters that handle metrics.
+ * RequestHandlerBag.JerseyMetricsLookupRegistry}), and injecting it into the 
pre- and post- Jersey
+ * filters that handle metrics.
  *
  * <p>This isn't ideal, as requestHandler's don't really "fit" conceptually 
here. But it's
  * unavoidable while we want our v2 APIs to exactly match the metrics produced 
by v1 calls.
diff --git 
a/solr/core/src/java/org/apache/solr/jersey/RequestMetricHandling.java 
b/solr/core/src/java/org/apache/solr/jersey/RequestMetricHandling.java
index b4543a2084b..44f2cbee3ea 100644
--- a/solr/core/src/java/org/apache/solr/jersey/RequestMetricHandling.java
+++ b/solr/core/src/java/org/apache/solr/jersey/RequestMetricHandling.java
@@ -31,7 +31,6 @@ import javax.ws.rs.container.ContainerResponseContext;
 import javax.ws.rs.container.ContainerResponseFilter;
 import javax.ws.rs.container.ResourceInfo;
 import javax.ws.rs.core.Context;
-
 import org.apache.solr.core.RequestHandlerBag;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.request.SolrQueryRequest;
diff --git 
a/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java 
b/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java
index 932df711bd2..bbcd7a50b68 100644
--- a/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java
@@ -40,9 +40,9 @@ import org.apache.solr.util.plugin.NamedListInitializedPlugin;
  * and is reused for all relevant queries.
  */
 public interface QueryResponseWriter extends NamedListInitializedPlugin {
-  public static String CONTENT_TYPE_XML_UTF8 = "application/xml; 
charset=UTF-8";
-  public static String CONTENT_TYPE_TEXT_UTF8 = "text/plain; charset=UTF-8";
-  public static String CONTENT_TYPE_TEXT_ASCII = "text/plain; 
charset=US-ASCII";
+  String CONTENT_TYPE_XML_UTF8 = "application/xml; charset=UTF-8";
+  String CONTENT_TYPE_TEXT_UTF8 = "text/plain; charset=UTF-8";
+  String CONTENT_TYPE_TEXT_ASCII = "text/plain; charset=US-ASCII";
 
   /**
    * Write a SolrQueryResponse, this method must be thread save.
@@ -53,7 +53,7 @@ public interface QueryResponseWriter extends 
NamedListInitializedPlugin {
    * <p>There are no mandatory actions that write must perform. An empty write 
implementation would
    * fulfill all interface obligations.
    */
-  public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse 
response)
+  void write(Writer writer, SolrQueryRequest request, SolrQueryResponse 
response)
       throws IOException;
 
   /**
@@ -64,5 +64,5 @@ public interface QueryResponseWriter extends 
NamedListInitializedPlugin {
    *
    * @return a Content-Type string, which may not be null.
    */
-  public String getContentType(SolrQueryRequest request, SolrQueryResponse 
response);
+  String getContentType(SolrQueryRequest request, SolrQueryResponse response);
 }
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java 
b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 692dde2f8d6..1e18cbd0c78 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -876,8 +876,7 @@ public class HttpSolrCall {
             solrResp.getToLogAsString("[admin]"));
       }
     }
-    QueryResponseWriter respWriter =
-        ResponseWriters.get(solrReq.getParams().get(CommonParams.WT));
+    QueryResponseWriter respWriter = 
ResponseWriters.get(solrReq.getParams().get(CommonParams.WT));
     if (respWriter == null) respWriter = getResponseWriter();
     writeResponse(solrResp, respWriter, Method.getMethod(req.getMethod()));
     if (shouldAudit()) {
diff --git a/solr/core/src/test/org/apache/solr/core/PluginBagTest.java 
b/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
index c0a011bc67d..42f22ae240c 100644
--- a/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
+++ b/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
@@ -21,10 +21,8 @@ import static org.mockito.Mockito.mock;
 
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.handler.admin.ConfigSetsHandler;
-import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.configsets.ListConfigSetsAPI;
 import org.apache.solr.jersey.JerseyApplications;
-import org.apache.solr.request.SolrRequestHandler;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -49,14 +47,12 @@ public class PluginBagTest extends SolrTestCaseJ4 {
 
   @Test
   public void testOnlyInitsJerseyIfHoldingRequestHandlers() {
-    final RequestHandlerBag nonRequestHandlerBag =
-        new RequestHandlerBag(null);
+    final RequestHandlerBag nonRequestHandlerBag = new RequestHandlerBag(null);
     assertNull(
         "Jersey app should not be created for plugin bags that aren't managing 
RequestHandler's",
         nonRequestHandlerBag.getJerseyEndpoints());
 
-    final RequestHandlerBag handlerPluginBag =
-        new RequestHandlerBag(null);
+    final RequestHandlerBag handlerPluginBag = new RequestHandlerBag(null);
     assertNotNull(
         "Jersey app should be created for plugin bags that manage 
RequestHandlers",
         handlerPluginBag.getJerseyEndpoints());
@@ -64,16 +60,14 @@ public class PluginBagTest extends SolrTestCaseJ4 {
 
   @Test
   public void testCreatesCoreSpecificJerseyAppIfCoreProvided() {
-    final RequestHandlerBag handlerPluginBag =
-        new RequestHandlerBag(solrCore);
+    final RequestHandlerBag handlerPluginBag = new RequestHandlerBag(solrCore);
     assertEquals(
         JerseyApplications.SolrCoreApp.class, 
handlerPluginBag.getJerseyEndpoints().getClass());
   }
 
   @Test
   public void testCreatesContainerSpecificJerseyAppIfNoCoreProvided() {
-    final RequestHandlerBag handlerPluginBag =
-        new RequestHandlerBag(null);
+    final RequestHandlerBag handlerPluginBag = new RequestHandlerBag(null);
     assertEquals(
         JerseyApplications.CoreContainerApp.class,
         handlerPluginBag.getJerseyEndpoints().getClass());
@@ -81,8 +75,7 @@ public class PluginBagTest extends SolrTestCaseJ4 {
 
   @Test
   public void testRegistersJerseyResourcesAssociatedWithRequestHandlers() {
-    final RequestHandlerBag handlerPluginBag =
-        new RequestHandlerBag(null);
+    final RequestHandlerBag handlerPluginBag = new RequestHandlerBag(null);
     
assertFalse(handlerPluginBag.getJerseyEndpoints().isRegistered(ListConfigSetsAPI.class));
 
     handlerPluginBag.put("/foo", new ConfigSetsHandler(coreContainer));
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java 
b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
index 999e9142f73..87650273921 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
@@ -56,7 +56,7 @@ import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.common.util.ValidatingJsonMap;
 import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.PluginBag;
+import org.apache.solr.core.RequestHandlerBag;
 import org.apache.solr.handler.CollectionsAPI;
 import org.apache.solr.handler.PingRequestHandler;
 import org.apache.solr.handler.SchemaHandler;
@@ -64,7 +64,6 @@ import org.apache.solr.handler.SolrConfigHandler;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequestBase;
-import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.security.PermissionNameProvider;
 
@@ -74,8 +73,7 @@ public class TestApiFramework extends SolrTestCaseJ4 {
     Map<String, Object[]> calls = new HashMap<>();
     Map<String, Object> out = new HashMap<>();
     CoreContainer mockCC = TestCoreAdminApis.getCoreContainerMock(calls, out);
-    PluginBag<SolrRequestHandler> containerHandlers =
-        new PluginBag<>(SolrRequestHandler.class, null, false);
+    RequestHandlerBag containerHandlers = new RequestHandlerBag(null);
     TestCollectionAPIs.MockCollectionsHandler collectionsHandler =
         new TestCollectionAPIs.MockCollectionsHandler();
     containerHandlers.put(COLLECTIONS_HANDLER_PATH, collectionsHandler);
@@ -87,8 +85,7 @@ public class TestApiFramework extends SolrTestCaseJ4 {
     containerHandlers.put(CONFIGSETS_HANDLER_PATH, new 
ConfigSetsHandler(mockCC));
     out.put("getRequestHandlers", containerHandlers);
 
-    PluginBag<SolrRequestHandler> coreHandlers =
-        new PluginBag<>(SolrRequestHandler.class, null, false);
+    RequestHandlerBag coreHandlers = new RequestHandlerBag(null);
     coreHandlers.put("/schema", new SchemaHandler());
     coreHandlers.put("/config", new SolrConfigHandler());
     coreHandlers.put("/admin/ping", new PingRequestHandler());
@@ -338,10 +335,7 @@ public class TestApiFramework extends SolrTestCaseJ4 {
   }
 
   private SolrQueryResponse invoke(
-      PluginBag<SolrRequestHandler> reqHandlers,
-      String path,
-      String fullPath,
-      CoreContainer mockCC) {
+      RequestHandlerBag reqHandlers, String path, String fullPath, 
CoreContainer mockCC) {
     HashMap<String, String> parts = new HashMap<>();
     boolean containerHandlerLookup = mockCC.getRequestHandlers() == 
reqHandlers;
     path = path == null ? fullPath : path;


Reply via email to