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