Index: solr/core/src/java/org/apache/solr/analysis/CJKWidthFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/CJKWidthFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/CJKWidthFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKWidthFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -42,7 +44,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/PersianNormalizationFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/PersianNormalizationFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/PersianNormalizationFilterFactory.java (working copy) @@ -21,6 +21,8 @@ import org.apache.lucene.analysis.fa.PersianNormalizationFilter; import org.apache.lucene.analysis.TokenStream; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -41,7 +43,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/CollationKeyFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/CollationKeyFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/CollationKeyFilterFactory.java (working copy) @@ -26,11 +26,8 @@ import org.apache.commons.io.IOUtils; import org.apache.lucene.analysis.TokenStream; -import org.apache.lucene.analysis.util.InitializationException; -import org.apache.lucene.analysis.util.TokenFilterFactory; +import org.apache.lucene.analysis.util.*; import org.apache.lucene.collation.CollationKeyFilter; -import org.apache.lucene.analysis.util.ResourceLoader; -import org.apache.lucene.analysis.util.ResourceLoaderAware; /** * Factory for {@link CollationKeyFilter}. @@ -172,7 +169,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/HindiNormalizationFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/HindiNormalizationFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/HindiNormalizationFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.hi.HindiNormalizationFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -38,7 +40,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/GreekLowerCaseFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/GreekLowerCaseFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/GreekLowerCaseFilterFactory.java (working copy) @@ -22,7 +22,9 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.el.GreekLowerCaseFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; import org.apache.lucene.analysis.util.InitializationException; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -52,7 +54,7 @@ return new GreekLowerCaseFilter(luceneMatchVersion, in); } - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/LowerCaseTokenizerFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/LowerCaseTokenizerFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/LowerCaseTokenizerFactory.java (working copy) @@ -17,8 +17,9 @@ package org.apache.solr.analysis; -import org.apache.lucene.analysis.core.LowerCaseFilter; import org.apache.lucene.analysis.core.LowerCaseTokenizer; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenizerFactory; import java.io.Reader; @@ -46,7 +47,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { LowerCaseFilterFactory filt = new LowerCaseFilterFactory(); filt.setLuceneMatchVersion(luceneMatchVersion); filt.init(args); Index: solr/core/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java (working copy) @@ -27,11 +27,8 @@ import org.apache.lucene.analysis.CharStream; import org.apache.lucene.analysis.charfilter.MappingCharFilter; import org.apache.lucene.analysis.charfilter.NormalizeCharMap; -import org.apache.lucene.analysis.util.CharFilterFactory; -import org.apache.lucene.analysis.util.InitializationException; -import org.apache.lucene.analysis.util.ResourceLoader; +import org.apache.lucene.analysis.util.*; import org.apache.solr.common.util.StrUtils; -import org.apache.lucene.analysis.util.ResourceLoaderAware; /** * Factory for {@link MappingCharFilter}. @@ -131,7 +128,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/ASCIIFoldingFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/ASCIIFoldingFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/ASCIIFoldingFilterFactory.java (working copy) @@ -19,6 +19,8 @@ package org.apache.solr.analysis; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; import org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilter; import org.apache.lucene.analysis.TokenStream; @@ -40,7 +42,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/IndicNormalizationFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/IndicNormalizationFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/IndicNormalizationFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.in.IndicNormalizationFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -38,7 +40,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/IrishLowerCaseFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/IrishLowerCaseFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/IrishLowerCaseFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.ga.IrishLowerCaseFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -41,7 +43,7 @@ // this will 'mostly work', except for special cases, just like most other filters @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/LowerCaseFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/LowerCaseFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/LowerCaseFilterFactory.java (working copy) @@ -21,6 +21,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.core.LowerCaseFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -46,7 +48,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/TurkishLowerCaseFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/TurkishLowerCaseFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/TurkishLowerCaseFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tr.TurkishLowerCaseFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -38,7 +40,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/GermanNormalizationFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/GermanNormalizationFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/GermanNormalizationFilterFactory.java (working copy) @@ -19,6 +19,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.de.GermanNormalizationFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -39,7 +41,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/MultiTermAwareComponent.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/MultiTermAwareComponent.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/MultiTermAwareComponent.java (working copy) @@ -1,31 +0,0 @@ -package org.apache.solr.analysis; - -/** - * 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. - */ - -/** Add to any analysis factory component to allow returning an - * analysis component factory for use with partial terms in prefix queries, - * wildcard queries, range query endpoints, regex queries, etc. - * - * @lucene.experimental - */ -public interface MultiTermAwareComponent { - /** Returns an analysis component to handle analysis if multi-term queries. - * The returned component must be a TokenizerFactory, TokenFilterFactory or CharFilterFactory. - */ - public Object getMultiTermComponent(); -} Index: solr/core/src/java/org/apache/solr/analysis/ArabicNormalizationFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/ArabicNormalizationFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/ArabicNormalizationFilterFactory.java (working copy) @@ -18,6 +18,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.ar.ArabicNormalizationFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; @@ -39,7 +41,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/analysis/PersianCharFilterFactory.java =================================================================== --- solr/core/src/java/org/apache/solr/analysis/PersianCharFilterFactory.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/analysis/PersianCharFilterFactory.java (working copy) @@ -19,7 +19,9 @@ import org.apache.lucene.analysis.CharStream; import org.apache.lucene.analysis.fa.PersianCharFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; import org.apache.lucene.analysis.util.CharFilterFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; /** * Factory for {@link PersianCharFilter}. @@ -40,7 +42,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java =================================================================== --- solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java (revision 1335331) +++ solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java (working copy) @@ -19,13 +19,9 @@ import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.core.KeywordAnalyzer; -import org.apache.lucene.analysis.util.CharFilterFactory; -import org.apache.lucene.analysis.util.TokenFilterFactory; -import org.apache.lucene.analysis.util.TokenizerFactory; +import org.apache.lucene.analysis.util.*; import org.apache.lucene.util.Version; -import org.apache.lucene.analysis.util.ResourceLoader; import org.apache.solr.analysis.KeywordTokenizerFactory; -import org.apache.solr.analysis.MultiTermAwareComponent; import org.apache.solr.analysis.TokenizerChain; import org.apache.solr.common.SolrException; import org.apache.solr.util.DOMUtil; @@ -185,7 +181,7 @@ public void add(Object current) { if (!(current instanceof MultiTermAwareComponent)) return; - Object newComponent = ((MultiTermAwareComponent)current).getMultiTermComponent(); + AbstractAnalysisFactory newComponent = ((MultiTermAwareComponent)current).getMultiTermComponent(); if (newComponent instanceof TokenFilterFactory) { if (filters == null) { filters = new ArrayList(2); Index: solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUFoldingFilterFactory.java =================================================================== --- solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUFoldingFilterFactory.java (revision 1335331) +++ solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUFoldingFilterFactory.java (working copy) @@ -2,6 +2,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.icu.ICUFoldingFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.lucene.analysis.util.TokenFilterFactory; /** @@ -29,7 +31,7 @@ return new ICUFoldingFilter(input); } - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUNormalizer2FilterFactory.java =================================================================== --- solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUNormalizer2FilterFactory.java (revision 1335331) +++ solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUNormalizer2FilterFactory.java (working copy) @@ -21,6 +21,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.icu.ICUNormalizer2Filter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.lucene.analysis.util.TokenFilterFactory; @@ -80,7 +82,7 @@ return new ICUNormalizer2Filter(input, normalizer); } - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUTransformFilterFactory.java =================================================================== --- solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUTransformFilterFactory.java (revision 1335331) +++ solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUTransformFilterFactory.java (working copy) @@ -21,6 +21,8 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.icu.ICUTransformFilter; +import org.apache.lucene.analysis.util.AbstractAnalysisFactory; +import org.apache.lucene.analysis.util.MultiTermAwareComponent; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.lucene.analysis.util.TokenFilterFactory; @@ -66,7 +68,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUCollationKeyFilterFactory.java =================================================================== --- solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUCollationKeyFilterFactory.java (revision 1335331) +++ solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/ICUCollationKeyFilterFactory.java (working copy) @@ -21,12 +21,10 @@ import org.apache.commons.io.IOUtils; import org.apache.lucene.analysis.TokenStream; -import org.apache.lucene.analysis.util.TokenFilterFactory; +import org.apache.lucene.analysis.util.*; import org.apache.lucene.collation.ICUCollationKeyFilter; -import org.apache.lucene.analysis.util.ResourceLoader; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; -import org.apache.lucene.analysis.util.ResourceLoaderAware; import com.ibm.icu.text.Collator; import com.ibm.icu.text.RuleBasedCollator; @@ -190,7 +188,7 @@ } @Override - public Object getMultiTermComponent() { + public AbstractAnalysisFactory getMultiTermComponent() { return this; } } Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java =================================================================== --- lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java (revision 1335331) +++ lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java (working copy) @@ -32,7 +32,7 @@ import java.util.List; import java.util.Map; -abstract class AbstractAnalysisFactory { +public abstract class AbstractAnalysisFactory { /** The init args */ protected Map args; Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java =================================================================== --- lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java (revision 0) +++ lucene/analysis/common/src/java/org/apache/lucene/analysis/util/MultiTermAwareComponent.java (revision 0) @@ -0,0 +1,31 @@ +package org.apache.lucene.analysis.util; + +/* + * 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. + */ + +/** Add to any analysis factory component to allow returning an + * analysis component factory for use with partial terms in prefix queries, + * wildcard queries, range query endpoints, regex queries, etc. + * + * @lucene.experimental + */ +public interface MultiTermAwareComponent { + /** Returns an analysis component to handle analysis if multi-term queries. + * The returned component must be a TokenizerFactory, TokenFilterFactory or CharFilterFactory. + */ + public AbstractAnalysisFactory getMultiTermComponent(); +}