You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by no...@apache.org on 2022/11/17 04:07:44 UTC

[solr] branch jira/solr16547 updated (5b441d9ec3a -> 7ac214bcedc)

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

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


    from 5b441d9ec3a refactor QueryResponseWriters
     new a4982244318 tidy
     new de2e8ab1c0e removed unnecessary tests
     new 7ac214bcedc removed unnecessary Map

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/java/org/apache/solr/core/PluginBag.java   | 15 +++--
 .../java/org/apache/solr/core/ResponseWriters.java | 77 ++++++++++++----------
 .../src/java/org/apache/solr/core/SolrCore.java    |  8 +--
 .../test/org/apache/solr/core/PluginBagTest.java   |  5 --
 4 files changed, 52 insertions(+), 53 deletions(-)


[solr] 03/03: removed unnecessary Map

Posted by no...@apache.org.
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

commit 7ac214bcedc9f1e15487a7b120bc7b5e248a3559
Author: Noble Paul <no...@gmail.com>
AuthorDate: Thu Nov 17 15:07:25 2022 +1100

    removed unnecessary Map
---
 .../java/org/apache/solr/core/ResponseWriters.java | 77 ++++++++++++----------
 .../src/java/org/apache/solr/core/SolrCore.java    |  8 +--
 .../test/org/apache/solr/core/PluginBagTest.java   |  1 -
 3 files changed, 44 insertions(+), 42 deletions(-)

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 48fdfd7558b..2579625334b 100644
--- a/solr/core/src/java/org/apache/solr/core/ResponseWriters.java
+++ b/solr/core/src/java/org/apache/solr/core/ResponseWriters.java
@@ -20,8 +20,6 @@ import com.google.common.collect.ImmutableMap;
 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;
@@ -44,56 +42,58 @@ import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.response.XMLResponseWriter;
 
 public class ResponseWriters {
-  public static final SolrConfig.SolrPluginInfo info =
+  private static final SolrConfig.SolrPluginInfo info =
       SolrConfig.classVsSolrPluginInfo.get(QueryResponseWriter.class.getName());
-  private static QueryResponseWriter standard;
+  private static final QueryResponseWriter standard = new JSONResponseWriter();
 
   public static QueryResponseWriter get(String name) {
-    return DEFAULT_RESPONSE_WRITERS.get(name);
+    PluginBag.PluginHolder<QueryResponseWriter> result = DEFAULT_RESPONSE_WRITER_HOLDERS.get(name);
+    return result == null ? null : result.get();
   }
 
   public static QueryResponseWriter getOrDefault(String name) {
-    QueryResponseWriter result = DEFAULT_RESPONSE_WRITERS.get(name);
-    return result == null ? standard : result;
+    PluginBag.PluginHolder<QueryResponseWriter> result = DEFAULT_RESPONSE_WRITER_HOLDERS.get(name);
+    return result == null ? standard : result.get();
   }
 
-  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);
+    PluginBag.PluginHolder<QueryResponseWriter> json = wrap(standard);
+    ImmutableMap.Builder<String, PluginBag.PluginHolder<QueryResponseWriter>> m =
+        ImmutableMap.builder();
+    m.put("xml", wrap(new XMLResponseWriter()));
+    m.put(CommonParams.JSON, json);
+    m.put("standard", json);
+    m.put("geojson", wrap(new GeoJSONResponseWriter()));
+    m.put("graphml", wrap(new GraphMLResponseWriter()));
+    m.put("python", wrap(new PythonResponseWriter()));
+    m.put("php", wrap(new PHPResponseWriter()));
+    m.put("phps", wrap(new PHPSerializedResponseWriter()));
+    m.put("ruby", wrap(new RubyResponseWriter()));
+    m.put("raw", wrap(new RawResponseWriter()));
+    m.put(CommonParams.JAVABIN, wrap(new BinaryResponseWriter()));
+    m.put("csv", wrap(new CSVResponseWriter()));
+    m.put("schema.xml", wrap(new SchemaXmlResponseWriter()));
+    m.put("smile", wrap(new SmileResponseWriter()));
+    m.put(ReplicationHandler.FILE_STREAM, wrap(getFileStreamWriter()));
     try {
       m.put(
           "xlsx",
-          (QueryResponseWriter)
-              Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter")
-                  .getConstructor()
-                  .newInstance());
+          wrap(
+              (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();
+    DEFAULT_RESPONSE_WRITER_HOLDERS = m.build();
+  }
+
+  private static PluginBag.PluginHolder<QueryResponseWriter> wrap(QueryResponseWriter v) {
+    return new PluginBag.PluginHolder<>(v, info);
   }
 
   private static BinaryResponseWriter getFileStreamWriter() {
@@ -127,4 +127,13 @@ public class ResponseWriters {
 
     void write(OutputStream os) throws IOException;
   }
+
+  public static PluginBag<QueryResponseWriter> constructBag(SolrCore core) {
+    return new PluginBag<>(
+        QueryResponseWriter.class,
+        core,
+        false,
+        ResponseWriters.DEFAULT_RESPONSE_WRITER_HOLDERS,
+        ResponseWriters.info);
+  }
 }
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 fa98ffca100..d88143e06d9 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -2975,13 +2975,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
     return responseWriters;
   }
 
-  private final PluginBag<QueryResponseWriter> responseWriters =
-      new PluginBag<>(
-          QueryResponseWriter.class,
-          this,
-          false,
-          ResponseWriters.DEFAULT_RESPONSE_WRITER_HOLDERS,
-          ResponseWriters.info);
+  private final PluginBag<QueryResponseWriter> responseWriters = ResponseWriters.constructBag(this);
 
   public void fetchLatestSchema() {
     IndexSchema schema = configSet.getIndexSchema(true);
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 2065346cf58..6aaebbadf3b 100644
--- a/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
+++ b/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
@@ -21,7 +21,6 @@ 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.glassfish.jersey.server.ResourceConfig;


[solr] 02/03: removed unnecessary tests

Posted by no...@apache.org.
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

commit de2e8ab1c0e0e7f568d389eac8daafe17106cdcc
Author: Noble Paul <no...@gmail.com>
AuthorDate: Wed Nov 16 18:09:54 2022 +1100

    removed unnecessary tests
---
 solr/core/src/test/org/apache/solr/core/PluginBagTest.java | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

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 42f22ae240c..2065346cf58 100644
--- a/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
+++ b/solr/core/src/test/org/apache/solr/core/PluginBagTest.java
@@ -21,6 +21,7 @@ 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.glassfish.jersey.server.ResourceConfig;
@@ -47,11 +48,6 @@ public class PluginBagTest extends SolrTestCaseJ4 {
 
   @Test
   public void testOnlyInitsJerseyIfHoldingRequestHandlers() {
-    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);
     assertNotNull(
         "Jersey app should be created for plugin bags that manage RequestHandlers",


[solr] 01/03: tidy

Posted by no...@apache.org.
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

commit a498224431866bc80f247bef5db3b65458e2b8db
Author: Noble Paul <no...@gmail.com>
AuthorDate: Wed Nov 16 15:48:05 2022 +1100

    tidy
---
 solr/core/src/java/org/apache/solr/core/PluginBag.java | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

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 693558edd28..26b1ecf53dc 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -149,9 +149,9 @@ public class PluginBag<T> implements AutoCloseable {
    */
   boolean alias(String src, String target) {
     if (src == null) return false;
-    PluginHolder<T> a = registry.get(src);
+    PluginHolder<T> a = getHolder(src);
     if (a == null) return false;
-    PluginHolder<T> b = registry.get(target);
+    PluginHolder<T> b = getHolder(target);
     if (b != null) return false;
     registry.put(target, a);
     return true;
@@ -159,13 +159,14 @@ 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);
+    PluginHolder<T> result = getHolder(name);
     return result == null ? null : result.get();
   }
 
   public PluginHolder<T> getHolder(String name) {
-    return registry.get(name);
+    PluginHolder<T> result = registry.get(name);
+    if (result == null && defaults != null) result = defaults.get(name);
+    return result;
   }
 
   /**
@@ -207,7 +208,7 @@ public class PluginBag<T> implements AutoCloseable {
   }
 
   void setDefault(String def) {
-    if (!registry.containsKey(def)) return;
+    if (getHolder(def) == null) return;
     if (this.def != null) {
       log.warn("Multiple defaults for : {}", meta.getCleanTag());
     }
@@ -215,7 +216,7 @@ public class PluginBag<T> implements AutoCloseable {
   }
 
   public boolean contains(String name) {
-    return registry.containsKey(name);
+    return getHolder(name) != null;
   }
 
   String getDefault() {