Index: src/main/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImpl.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImpl.java (revision 897830)
+++ src/main/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImpl.java (working copy)
@@ -16,52 +16,53 @@
*/
package org.apache.jackrabbit.core.query.lucene;
-import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
-import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
-import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
-import org.apache.jackrabbit.spi.commons.conversion.ParsingNameResolver;
-import org.apache.jackrabbit.core.state.ItemStateManager;
-import org.apache.jackrabbit.core.state.NodeState;
-import org.apache.jackrabbit.core.state.ItemStateException;
-import org.apache.jackrabbit.core.state.PropertyState;
-import org.apache.jackrabbit.core.state.ChildNodeEntry;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Properties;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.HierarchyManagerImpl;
import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.HierarchyManagerImpl;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.nodetype.xml.AdditionalNamespaceResolver;
-import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.query.QueryHandlerContext;
+import org.apache.jackrabbit.core.state.ChildNodeEntry;
+import org.apache.jackrabbit.core.state.ItemStateException;
+import org.apache.jackrabbit.core.state.ItemStateManager;
+import org.apache.jackrabbit.core.state.NodeState;
+import org.apache.jackrabbit.core.state.PropertyState;
import org.apache.jackrabbit.core.value.InternalValue;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.PathFactory;
+import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
+import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
+import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
+import org.apache.jackrabbit.spi.commons.conversion.ParsingNameResolver;
import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
+import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
import org.apache.jackrabbit.spi.commons.name.Pattern;
-import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.PathFactory;
-import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
import org.apache.jackrabbit.util.ISO9075;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.w3c.dom.Attr;
import org.w3c.dom.CharacterData;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import javax.jcr.RepositoryException;
-import javax.jcr.NamespaceException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.Collections;
-import java.util.NoSuchElementException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Properties;
-
/**
* IndexingConfigurationImpl implements a concrete indexing
* configuration.
@@ -565,8 +566,15 @@
String localPattern = pattern;
int idx = pattern.indexOf(':');
if (idx != -1) {
- // use a dummy local name to get namespace uri
- uri = resolver.getQName(pattern.substring(0, idx) + ":a").getNamespaceURI();
+ String prefix = pattern.substring(0, idx);
+ if (prefix.equals(".*")) {
+ // match all namespaces
+ uri = prefix;
+ } else {
+ // match only single namespace
+ // use a dummy local name to get namespace uri
+ uri = resolver.getQName(prefix + ":a").getNamespaceURI();
+ }
localPattern = pattern.substring(idx + 1);
}
this.pattern = Pattern.name(uri, localPattern);
Index: src/test/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImplTest.java
===================================================================
--- src/test/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImplTest.java (revision 0)
+++ src/test/java/org/apache/jackrabbit/core/query/lucene/IndexingConfigurationImplTest.java (revision 0)
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+package org.apache.jackrabbit.core.query.lucene;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.jcr.Node;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.jackrabbit.core.id.NodeId;
+import org.apache.jackrabbit.core.query.AbstractQueryTest;
+import org.apache.jackrabbit.core.state.NodeState;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * IndexingConfigurationImplTest...
+ */
+public class IndexingConfigurationImplTest extends AbstractQueryTest {
+
+ private static final Name FOO = NameFactoryImpl.getInstance().create("", "foo");
+
+ private NodeState nState;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ Node n = testRootNode.addNode(nodeName1, ntUnstructured);
+ n.addMixin(mixReferenceable);
+ superuser.save();
+ nState = (NodeState) getSearchIndex().getContext().getItemStateManager().getItemState(
+ new NodeId(n.getIdentifier()));
+ }
+
+ public void testMatchAllNoPrefix() throws Exception {
+ IndexingConfiguration config = createConfig("config1");
+ assertFalse(config.isIndexed(nState, NameConstants.JCR_DATA));
+ assertTrue(config.isIndexed(nState, FOO));
+ }
+
+ public void testRegexpInPrefix() throws Exception {
+ IndexingConfiguration config = createConfig("config2");
+ assertTrue(config.isIndexed(nState, NameConstants.JCR_DATA));
+ assertTrue(config.isIndexed(nState, FOO));
+ }
+
+ public void testMatchAllJCRPrefix() throws Exception {
+ IndexingConfiguration config = createConfig("config2");
+ assertTrue(config.isIndexed(nState, NameConstants.JCR_DATA));
+ assertFalse(config.isIndexed(nState, FOO));
+ }
+
+
+ //----------------------------< internal >----------------------------------
+
+ protected IndexingConfiguration createConfig(String name) throws Exception {
+ IndexingConfiguration config = new IndexingConfigurationImpl();
+ config.init(loadConfig(name), getSearchIndex().getContext(),
+ getSearchIndex().getNamespaceMappings());
+ return config;
+ }
+
+ protected Element loadConfig(String name)
+ throws ParserConfigurationException, IOException, SAXException {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ builder.setEntityResolver(new IndexingConfigurationEntityResolver());
+ InputStream in = getClass().getResourceAsStream("indexing_" + name + ".xml");
+ return builder.parse(in).getDocumentElement();
+ }
+}
Property changes on: src\test\java\org\apache\jackrabbit\core\query\lucene\IndexingConfigurationImplTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Index: src/test/java/org/apache/jackrabbit/core/query/lucene/TestAll.java
===================================================================
--- src/test/java/org/apache/jackrabbit/core/query/lucene/TestAll.java (revision 897830)
+++ src/test/java/org/apache/jackrabbit/core/query/lucene/TestAll.java (working copy)
@@ -41,6 +41,7 @@
suite.addTestSuite(IndexingAggregateTest.class);
suite.addTestSuite(IndexMigrationTest.class);
suite.addTestSuite(ChainedTermEnumTest.class);
+ suite.addTestSuite(IndexingConfigurationImplTest.class);
return suite;
}
Index: src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config1.xml
===================================================================
--- src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config1.xml (revision 0)
+++ src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config1.xml (revision 0)
@@ -0,0 +1,10 @@
+
+
+
+
+
+ .*
+
+
+
\ No newline at end of file
Property changes on: src\test\resources\org\apache\jackrabbit\core\query\lucene\indexing_config1.xml
___________________________________________________________________
Added: svn:eol-style
+ native
Index: src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config2.xml
===================================================================
--- src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config2.xml (revision 0)
+++ src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config2.xml (revision 0)
@@ -0,0 +1,10 @@
+
+
+
+
+
+ .*:.*
+
+
+
\ No newline at end of file
Property changes on: src\test\resources\org\apache\jackrabbit\core\query\lucene\indexing_config2.xml
___________________________________________________________________
Added: svn:eol-style
+ native
Index: src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config3.xml
===================================================================
--- src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config3.xml (revision 0)
+++ src/test/resources/org/apache/jackrabbit/core/query/lucene/indexing_config3.xml (revision 0)
@@ -0,0 +1,10 @@
+
+
+
+
+
+ jcr:.*
+
+
+
\ No newline at end of file
Property changes on: src\test\resources\org\apache\jackrabbit\core\query\lucene\indexing_config3.xml
___________________________________________________________________
Added: svn:eol-style
+ native