You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/09/19 23:34:11 UTC
svn commit: r1387778 - in /lucene/dev/trunk/solr: ./
core/src/java/org/apache/solr/util/
core/src/test-files/solr/collection1/conf/
core/src/test/org/apache/solr/core/
Author: hossman
Date: Wed Sep 19 21:34:10 2012
New Revision: 1387778
URL: http://svn.apache.org/viewvc?rev=1387778&view=rev
Log:
SOLR-3087: Fixed DOMUtil so that code doing attribute validation will automaticly ignore nodes in the resserved "xml" prefix
Added:
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-field.xml (with props)
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-type.xml (with props)
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-xinclude.xml (with props)
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-snippet-processor.xml (with props)
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/DOMUtil.java
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-xinclude.xml
lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1387778&r1=1387777&r2=1387778&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Sep 19 21:34:10 2012
@@ -251,6 +251,11 @@ Bug Fixes
* SOLR-3850: DataImportHandler "cacheKey" parameter was incorrectly renamed "cachePk"
(James Dyer)
+* SOLR-3087: Fixed DOMUtil so that code doing attribute validation will
+ automaticly ignore nodes in the resserved "xml" prefix - in particular this
+ fixes some bugs related to xinclude and fieldTypes.
+ (Amit Nithian, hossman)
+
Other Changes
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/DOMUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/DOMUtil.java?rev=1387778&r1=1387777&r2=1387778&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/DOMUtil.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/DOMUtil.java Wed Sep 19 21:34:10 2012
@@ -31,6 +31,8 @@ import org.w3c.dom.NodeList;
*/
public class DOMUtil {
+ public static final String XML_RESERVED_PREFIX = "xml";
+
public static Map<String,String> toMap(NamedNodeMap attrs) {
return toMapExcept(attrs);
}
@@ -39,6 +41,10 @@ public class DOMUtil {
Map<String,String> args = new HashMap<String,String>();
outer: for (int j=0; j<attrs.getLength(); j++) {
Node attr = attrs.item(j);
+
+ // automaticly exclude things in the xml namespace, ie: xml:base
+ if (XML_RESERVED_PREFIX.equals(attr.getPrefix())) continue outer;
+
String attrName = attr.getNodeName();
for (String ex : exclusions)
if (ex.equals(attrName)) continue outer;
Added: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-field.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-field.xml?rev=1387778&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-field.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-field.xml Wed Sep 19 21:34:10 2012
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- example of a snippet of xml for use with xml includes -->
+<field name="field-included" type="ft-included" />
Added: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-type.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-type.xml?rev=1387778&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-type.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-snippet-type.xml Wed Sep 19 21:34:10 2012
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- example of a snippet of xml for use with xml includes -->
+<fieldType name="ft-included" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
Added: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-xinclude.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-xinclude.xml?rev=1387778&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-xinclude.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-xinclude.xml Wed Sep 19 21:34:10 2012
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<schema name="xinclude" version="1.5" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <types>
+ <fieldType name="string" class="solr.StrField"/>
+ <xi:include href="schema-snippet-type.xml" />
+ </types>
+ <fields>
+ <xi:include href="schema-snippet-field.xml" />
+ </fields>
+</schema>
Added: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-snippet-processor.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-snippet-processor.xml?rev=1387778&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-snippet-processor.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-snippet-processor.xml Wed Sep 19 21:34:10 2012
@@ -0,0 +1,6 @@
+<!-- snippet file used via xml xinclude -->
+<processor class="solr.RegexReplaceProcessorFactory">
+ <str name="fieldName">field-included</str>
+ <str name="pattern">x</str>
+ <str name="replacement">x_x</str>
+</processor>
Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-xinclude.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-xinclude.xml?rev=1387778&r1=1387777&r2=1387778&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-xinclude.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-xinclude.xml Wed Sep 19 21:34:10 2012
@@ -25,4 +25,9 @@
<xi:include href="solrconfig-reqHandler.incl" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</xi:fallback>
</xi:include>
+
+ <updateRequestProcessorChain name="special-include" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="solrconfig-snippet-processor.xml" />
+ </updateRequestProcessorChain>
+
</config>
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java?rev=1387778&r1=1387777&r2=1387778&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java Wed Sep 19 21:34:10 2012
@@ -17,22 +17,20 @@ package org.apache.solr.core;
* limitations under the License.
*/
-import org.apache.solr.request.SolrRequestHandler;
+import org.apache.solr.update.processor.UpdateRequestProcessorChain;
+import org.apache.solr.update.processor.RegexReplaceProcessorFactory;
+
import org.apache.solr.util.AbstractSolrTestCase;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.junit.Assume;
-/**
- *
- *
- **/
public class TestXIncludeConfig extends AbstractSolrTestCase {
- protected boolean supports;
@Override
public String getSchemaFile() {
- return "schema.xml";
+ return "schema-xinclude.xml";
}
//public String getSolrConfigFile() { return "solrconfig.xml"; }
@@ -43,28 +41,35 @@ public class TestXIncludeConfig extends
@Override
public void setUp() throws Exception {
- supports = true;
javax.xml.parsers.DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//see whether it even makes sense to run this test
dbf.setXIncludeAware(true);
dbf.setNamespaceAware(true);
} catch (UnsupportedOperationException e) {
- supports = false;
+ Assume.assumeTrue(false);
}
super.setUp();
}
public void testXInclude() throws Exception {
- //Figure out whether this JVM supports XInclude anyway, if it doesn't then don't run this test????
- // TODO: figure out a better way to handle this.
- if (supports == true){
- SolrCore core = h.getCore();
- SolrRequestHandler solrRequestHandler = core.getRequestHandler("includedHandler");
- assertNotNull("Solr Req Handler is null", solrRequestHandler);
- } else {
- log.info("Didn't run testXInclude, because this XML DocumentBuilderFactory doesn't support it");
- }
+ SolrCore core = h.getCore();
+
+ assertNotNull("includedHandler is null",
+ core.getRequestHandler("includedHandler"));
+ UpdateRequestProcessorChain chain
+ = core.getUpdateProcessingChain("special-include");
+ assertNotNull("chain is missing included processor", chain);
+ assertEquals("chain with inclued processor is wrong size",
+ 1, chain.getFactories().length);
+ assertEquals("chain has wrong included processor",
+ RegexReplaceProcessorFactory.class,
+ chain.getFactories()[0].getClass());
+
+ assertNotNull("ft-included is null",
+ core.getSchema().getFieldTypeByName("ft-included"));
+ assertNotNull("field-included is null",
+ core.getSchema().getFieldOrNull("field-included"));
}
}