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"));
   }
 }