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/12 01:20:51 UTC
svn commit: r1383653 - in /lucene/dev/branches/branch_4x: ./ dev-tools/
lucene/ lucene/analysis/
lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/
lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/demo/ lucene/facet/
lucene...
Author: hossman
Date: Tue Sep 11 23:20:48 2012
New Revision: 1383653
URL: http://svn.apache.org/viewvc?rev=1383653&view=rev
Log:
SOLR-3087: CurrencyField now generates an appropriate error on schema init if it is configured as multiValued (merge r1383648)
Added:
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-dynamic-multivalued.xml
- copied unchanged from r1383648, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-dynamic-multivalued.xml
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-ft-multivalued.xml
- copied unchanged from r1383648, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-ft-multivalued.xml
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-multivalued.xml
- copied unchanged from r1383648, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/bad-schema-currency-multivalued.xml
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/dev-tools/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/BUILD.txt (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (props changed)
lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt (props changed)
lucene/dev/branches/branch_4x/lucene/LICENSE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/MIGRATE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/README.txt (props changed)
lucene/dev/branches/branch_4x/lucene/analysis/ (props changed)
lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java (props changed)
lucene/dev/branches/branch_4x/lucene/backwards/ (props changed)
lucene/dev/branches/branch_4x/lucene/benchmark/ (props changed)
lucene/dev/branches/branch_4x/lucene/build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/codecs/ (props changed)
lucene/dev/branches/branch_4x/lucene/common-build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/demo/ (props changed)
lucene/dev/branches/branch_4x/lucene/facet/ (props changed)
lucene/dev/branches/branch_4x/lucene/grouping/ (props changed)
lucene/dev/branches/branch_4x/lucene/highlighter/ (props changed)
lucene/dev/branches/branch_4x/lucene/ivy-settings.xml (props changed)
lucene/dev/branches/branch_4x/lucene/join/ (props changed)
lucene/dev/branches/branch_4x/lucene/licenses/ (props changed)
lucene/dev/branches/branch_4x/lucene/memory/ (props changed)
lucene/dev/branches/branch_4x/lucene/misc/ (props changed)
lucene/dev/branches/branch_4x/lucene/module-build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/queries/ (props changed)
lucene/dev/branches/branch_4x/lucene/queryparser/ (props changed)
lucene/dev/branches/branch_4x/lucene/sandbox/ (props changed)
lucene/dev/branches/branch_4x/lucene/site/ (props changed)
lucene/dev/branches/branch_4x/lucene/spatial/ (props changed)
lucene/dev/branches/branch_4x/lucene/suggest/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/tools/ (props changed)
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/solr/LICENSE.txt (props changed)
lucene/dev/branches/branch_4x/solr/NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/README.txt (props changed)
lucene/dev/branches/branch_4x/solr/build.xml (props changed)
lucene/dev/branches/branch_4x/solr/cloud-dev/ (props changed)
lucene/dev/branches/branch_4x/solr/common-build.xml (props changed)
lucene/dev/branches/branch_4x/solr/contrib/ (props changed)
lucene/dev/branches/branch_4x/solr/core/ (props changed)
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema.xml
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
lucene/dev/branches/branch_4x/solr/dev-tools/ (props changed)
lucene/dev/branches/branch_4x/solr/example/ (props changed)
lucene/dev/branches/branch_4x/solr/lib/ (props changed)
lucene/dev/branches/branch_4x/solr/licenses/ (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/scripts/ (props changed)
lucene/dev/branches/branch_4x/solr/solrj/ (props changed)
lucene/dev/branches/branch_4x/solr/test-framework/ (props changed)
lucene/dev/branches/branch_4x/solr/testlogging.properties (props changed)
lucene/dev/branches/branch_4x/solr/webapp/ (props changed)
Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Tue Sep 11 23:20:48 2012
@@ -141,6 +141,11 @@ Bug Fixes
from Collections passed to addValue/addField
(Tom Switzer via hossman)
+* SOLR-3087: CurrencyField now generates an appropriate error on schema init
+ if it is configured as multiValued - this has never been properly supported,
+ but previously failed silently in odd ways. (hossman)
+
+
Other Changes
----------------------
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java Tue Sep 11 23:20:48 2012
@@ -79,6 +79,11 @@ public class CurrencyField extends Field
@Override
protected void init(IndexSchema schema, Map<String, String> args) {
super.init(schema, args);
+ if (this.isMultiValued()) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+ "CurrencyField types can not be multiValued: " +
+ this.typeName);
+ }
this.schema = schema;
this.exchangeRateProviderClass = args.get(PARAM_RATE_PROVIDER_CLASS);
this.defaultCurrency = args.get(PARAM_DEFAULT_CURRENCY);
@@ -131,6 +136,16 @@ public class CurrencyField extends Field
}
@Override
+ public void checkSchemaField(final SchemaField field) throws SolrException {
+ super.checkSchemaField(field);
+ if (field.multiValued()) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+ "CurrencyFields can not be multiValued: " +
+ field.getName());
+ }
+ }
+
+ @Override
public IndexableField[] createFields(SchemaField field, Object externalVal, float boost) {
CurrencyValue value = CurrencyValue.parse(externalVal.toString(), defaultCurrency);
@@ -765,4 +780,4 @@ class CurrencyValue {
public String toString() {
return String.valueOf(amount) + "," + currencyCode;
}
-}
\ No newline at end of file
+}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java Tue Sep 11 23:20:48 2012
@@ -597,4 +597,20 @@ public abstract class FieldType extends
readableToIndexed(externalVal, br);
return new TermQuery(new Term(field.getName(), br));
}
+
+ /**
+ * Check's {@link org.apache.solr.schema.SchemaField} instances constructed
+ * using this field type to ensure that they are valid.
+ *
+ * <p>
+ * This method is called by the <code>SchemaField</code> constructor to
+ * check that it's initialization does not violate any fundemental
+ * requirements of the <code>FieldType</code>. The default implementation
+ * does nothing, but subclasses may chose to throw a {@link SolrException}
+ * if invariants are violated by the <code>SchemaField.
+ * </p>
+ */
+ public void checkSchemaField(final SchemaField field) throws SolrException {
+ // :NOOP:
+ }
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java Tue Sep 11 23:20:48 2012
@@ -68,6 +68,8 @@ public final class SchemaField extends F
// initalize with the required property flag
required = (properties & REQUIRED) !=0;
+
+ type.checkSchemaField(this);
}
public String getName() { return name; }
Modified: lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema.xml?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema.xml (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema.xml Tue Sep 11 23:20:48 2012
@@ -399,9 +399,11 @@
<fieldType name="latLon" class="solr.LatLonType" subFieldType="double"/>
<!-- Currency type -->
- <fieldType name="currency" class="solr.CurrencyField" currencyConfig="currency.xml"/>
- <fieldType name="mock_currency" class="solr.CurrencyField" providerClass="solr.MockExchangeRateProvider" foo="bar" />
- <fieldType name="openexchangeratesorg_currency" class="solr.CurrencyField"
+ <fieldType name="currency" class="solr.CurrencyField" currencyConfig="currency.xml" multiValued="false" />
+ <fieldType name="mock_currency" class="solr.CurrencyField" providerClass="solr.MockExchangeRateProvider" foo="bar" multiValued="false" />
+ <fieldType name="openexchangeratesorg_currency"
+ class="solr.CurrencyField"
+ multiValued="false"
providerClass="solr.OpenExchangeRatesOrgProvider"
ratesFileLocation="open-exchange-rates.json" />
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java?rev=1383653&r1=1383652&r2=1383653&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java Tue Sep 11 23:20:48 2012
@@ -66,6 +66,15 @@ public class BadIndexSchemaTest extends
"can not be configured to be multivalued");
}
+ public void testMultivaluedCurrency() throws Exception {
+ doTest("bad-schema-currency-ft-multivalued.xml",
+ "types can not be multiValued: currency");
+ doTest("bad-schema-currency-multivalued.xml",
+ "Fields can not be multiValued: money");
+ doTest("bad-schema-currency-dynamic-multivalued.xml",
+ "Fields can not be multiValued: *_c");
+ }
+
public void testPerFieldtypeSimButNoSchemaSimFactory() throws Exception {
doTest("bad-schema-sim-global-vs-ft-mismatch.xml", "global similarity does not support it");
}