You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by is...@apache.org on 2020/12/05 04:37:31 UTC
[lucene-solr] 04/18: bug fix
This is an automated email from the ASF dual-hosted git repository.
ishan pushed a commit to branch jira/solr14827
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 70b5ad3af246afd5f59d040eebb3fa83ecb74b1d
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Sep 7 10:43:03 2020 +1000
bug fix
---
.../java/org/apache/solr/core/XmlConfigFile.java | 23 +++-------------------
.../java/org/apache/solr/schema/IndexSchema.java | 10 +++++++---
2 files changed, 10 insertions(+), 23 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
index 9df33b7..6cc6216 100644
--- a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
+++ b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
@@ -20,11 +20,6 @@ import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
@@ -145,7 +140,7 @@ public class XmlConfigFile { // formerly simply "Config"
db.setErrorHandler(xmllog);
try {
doc = db.parse(is);
- origDoc = copyDoc(doc);
+ origDoc = doc;
} finally {
// some XML parsers are broken and don't close the byte stream (but they should according to spec)
IOUtils.closeQuietly(is.getByteStream());
@@ -153,7 +148,7 @@ public class XmlConfigFile { // formerly simply "Config"
if (substituteProps != null) {
DOMUtil.substituteProperties(doc, getSubstituteProperties());
}
- } catch (ParserConfigurationException | SAXException | TransformerException e) {
+ } catch (ParserConfigurationException | SAXException e) {
SolrException.log(log, "Exception during parsing file: " + name, e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
}
@@ -179,15 +174,7 @@ public class XmlConfigFile { // formerly simply "Config"
return this.substituteProperties;
}
- private static Document copyDoc(Document doc) throws TransformerException {
- TransformerFactory tfactory = TransformerFactory.newInstance();
- Transformer tx = tfactory.newTransformer();
- DOMSource source = new DOMSource(doc);
- DOMResult result = new DOMResult();
- tx.transform(source, result);
- return (Document) result.getNode();
- }
-
+
/**
* @since solr 1.3
*/
@@ -237,10 +224,6 @@ public class XmlConfigFile { // formerly simply "Config"
return getNode(path, doc, errifMissing);
}
- public Node getUnsubstitutedNode(String path, boolean errIfMissing) {
- return getNode(path, origDoc, errIfMissing);
- }
-
public Node getNode(String path, Document doc, boolean errIfMissing) {
XPath xpath = xpathFactory.newXPath();
String xstr = normalize(path);
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 8344fc6..1aa1e66 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -756,9 +756,13 @@ public class IndexSchema {
// NodeList nodes = (NodeList)xpath.evaluate(expression, document, XPathConstants.NODESET);
List<ConfigNode> nodes = n.children(COPY_FIELD);
- for (int i=0; i<nodes.size(); i++) {
- ConfigNode node = nodes.get(i);
-// NamedNodeMap attrs = node.getAttributes();
+ ConfigNode f = n.child(FIELDS);
+ if (f != null) {
+ List<ConfigNode> c = f.children(COPY_FIELD);
+ if (nodes.isEmpty()) nodes = c;
+ else nodes.addAll(c);
+ }
+ for (ConfigNode node : nodes) {
String source = DOMUtil.getAttr(node, SOURCE, COPY_FIELD + " definition");
String dest = DOMUtil.getAttr(node, DESTINATION, COPY_FIELD + " definition");