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 2021/04/29 13:21:11 UTC

[solr] branch jira/solr_15337 updated: refactored

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

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


The following commit(s) were added to refs/heads/jira/solr_15337 by this push:
     new 1ce5414  refactored
1ce5414 is described below

commit 1ce541429591cba4e615effded06345d12d3e4a1
Author: Noble Paul <no...@gmail.com>
AuthorDate: Thu Apr 29 23:20:54 2021 +1000

    refactored
---
 .../org/apache/solr/core/OverlaidConfigNode.java   | 92 ++++++++++++++++++++++
 .../src/java/org/apache/solr/core/SolrConfig.java  | 80 +------------------
 .../java/org/apache/solr/common/util/DOMUtil.java  |  4 +-
 3 files changed, 96 insertions(+), 80 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/OverlaidConfigNode.java b/solr/core/src/java/org/apache/solr/core/OverlaidConfigNode.java
new file mode 100644
index 0000000..7770789
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/core/OverlaidConfigNode.java
@@ -0,0 +1,92 @@
+package org.apache.solr.core;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+import org.apache.solr.cluster.api.SimpleMap;
+import org.apache.solr.common.ConfigNode;
+
+/**A config node impl which has an overlay
+ *
+ */
+class OverlaidConfigNode implements ConfigNode {
+
+  private final ConfigOverlay overlay;
+  private final String _name;
+  private final ConfigNode delegate;
+  private final OverlaidConfigNode parent;
+
+  OverlaidConfigNode(ConfigOverlay overlay, String name, OverlaidConfigNode parent, ConfigNode delegate) {
+    this.overlay = overlay;
+    this._name = name;
+    this.delegate = delegate;
+    this.parent = parent;
+  }
+
+  private List<String> path(List<String> path) {
+    if(path== null) path = new ArrayList<>(5);
+    try {
+      if (parent != null) return parent.path(path);
+    } finally {
+      path.add(_name);
+    }
+    return path;
+  }
+
+  @Override
+  public ConfigNode get(String name) {
+    return wrap(delegate.get(name), name);
+  }
+
+  private ConfigNode wrap(ConfigNode n, String name) {
+    return new OverlaidConfigNode(overlay, name,this, n);
+  }
+
+  @Override
+  public ConfigNode get(String name, Predicate<ConfigNode> test) {
+    return wrap(delegate.get(name, test), name);
+  }
+
+  @Override
+  public String txt() {
+    return overlayText(delegate.txt(), null);
+  }
+
+  @Override
+  public ConfigNode get(String name, int idx) {
+    return wrap(delegate.get(name, idx), name);
+  }
+
+  @Override
+  public String name() {
+    return delegate.name();
+  }
+  @Override
+  public SimpleMap<String> attributes() {
+    return delegate.attributes();
+  }
+
+  @Override
+  public boolean exists() {
+    return delegate.exists();
+  }
+
+  @Override
+  public String attr(String name) {
+    return overlayText(delegate.attr(name),name);
+  }
+
+  private String overlayText(String def, String appendToPath) {
+    List<String> path = path(null);
+    if(appendToPath !=null) path.add(appendToPath);
+    Object val = overlay.getXPathProperty(path);
+    return val ==null? def: val.toString();
+  }
+
+  @Override
+  public void forEachChild(Function<ConfigNode, Boolean> fun) {
+    delegate.forEachChild(fun);
+  }
+}
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index 9fafda4..9231286 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -54,7 +54,6 @@ import org.apache.lucene.util.Version;
 import org.apache.solr.client.solrj.io.stream.expr.Expressible;
 import org.apache.solr.cloud.RecoveryStrategy;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
-import org.apache.solr.cluster.api.SimpleMap;
 import org.apache.solr.common.ConfigNode;
 import org.apache.solr.common.MapSerializable;
 import org.apache.solr.common.SolrException;
@@ -1051,87 +1050,10 @@ public class SolrConfig implements MapSerializable {
       //there is no overlay
       return root.get(name);
     }
-    return new OverlaidConfigNode(name, null,root.get(name));
+    return new OverlaidConfigNode(overlay, name, null,root.get(name));
   }
 
   public ConfigNode get(String name, Predicate<ConfigNode> test) {
     return root.get(name, test);
   }
-  private class OverlaidConfigNode implements ConfigNode {
-
-    private final String _name;
-    private final ConfigNode delegate;
-    private final OverlaidConfigNode parent;
-
-    private OverlaidConfigNode(String name, OverlaidConfigNode parent, ConfigNode delegate) {
-      this._name = name;
-      this.delegate = delegate;
-      this.parent = parent;
-    }
-
-    private List<String> path(List<String> path) {
-      if(path== null) path = new ArrayList<>(5);
-      try {
-        if (parent != null) return parent.path(path);
-      } finally {
-        path.add(_name);
-      }
-      return path;
-    }
-
-    @Override
-    public ConfigNode get(String name) {
-      return wrap(delegate.get(name), name);
-    }
-
-    private ConfigNode wrap(ConfigNode n, String name) {
-      return new OverlaidConfigNode(name,this, n);
-    }
-
-    @Override
-    public ConfigNode get(String name, Predicate<ConfigNode> test) {
-      return wrap(delegate.get(name, test), name);
-    }
-
-    @Override
-    public String txt() {
-      return overlayText(delegate.txt(), null);
-    }
-
-    @Override
-    public ConfigNode get(String name, int idx) {
-      return wrap(delegate.get(name, idx), name);
-    }
-
-    @Override
-    public String name() {
-      return delegate.name();
-    }
-    @Override
-    public SimpleMap<String> attributes() {
-      return delegate.attributes();
-    }
-
-    @Override
-    public boolean exists() {
-      return delegate.exists();
-    }
-
-    @Override
-    public String attr(String name) {
-      return overlayText(delegate.attr(name),name);
-    }
-
-    private String overlayText(String def, String appendToPath) {
-      List<String> path = path(null);
-      if(appendToPath !=null) path.add(appendToPath);
-      Object val = overlay.getXPathProperty(path);
-      return val ==null? def: val.toString();
-    }
-
-    @Override
-    public void forEachChild(Function<ConfigNode, Boolean> fun) {
-      delegate.forEachChild(fun);
-    }
-  }
 }
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java b/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java
index dc1e22f..1fe7df2 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java
@@ -17,7 +17,9 @@
 package org.apache.solr.common.util;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -39,7 +41,7 @@ public class DOMUtil {
 
   public static final String XML_RESERVED_PREFIX = "xml";
 
-  public static final Set<String>  NL_TAGS = Set.of("str", "int","long","float","double","bool");
+  public static final Set<String>  NL_TAGS = new HashSet<>(Arrays.asList("str", "int", "long", "float", "double", "bool", "null"));
 
 
   public static Map<String,String> toMap(NamedNodeMap attrs) {