Index: solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java
===================================================================
--- solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java (revision 945097)
+++ solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java (working copy)
@@ -22,6 +22,7 @@
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.IndexSchema;
@@ -135,7 +136,7 @@
String streamType = req.getParams().get(ExtractingParams.STREAM_TYPE, null);
if (streamType != null) {
//Cache? Parsers are lightweight to construct and thread-safe, so I'm told
- MediaType mt = MediaType.parse(streamType.trim().toLowerCase());
+ MediaType mt = MediaType.parse(streamType.trim().toLowerCase(StrUtils.ROOT_LOCALE));
parser = config.getParser(mt);
} else {
parser = autoDetectParser;
Index: solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestCachedSqlEntityProcessor.java
===================================================================
--- solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestCachedSqlEntityProcessor.java (revision 945097)
+++ solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestCachedSqlEntityProcessor.java (working copy)
@@ -16,6 +16,7 @@
*/
package org.apache.solr.handler.dataimport;
+import org.apache.solr.common.util.StrUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -111,7 +112,7 @@
if (r == null)
break;
rows.add(r);
- Assert.assertEquals(r.get("desc").toString().toUpperCase(), r.get("desc"));
+ Assert.assertEquals(r.get("desc").toString().toUpperCase(StrUtils.ROOT_LOCALE), r.get("desc"));
}
Assert.assertEquals(2, rows.size());
Assert.assertEquals(2, rows.get(0).size());
@@ -178,7 +179,7 @@
Object val = entry.getValue();
if (val instanceof String) {
String s = (String) val;
- entry.setValue(s.toUpperCase());
+ entry.setValue(s.toUpperCase(StrUtils.ROOT_LOCALE));
}
}
return row;
Index: solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/NumberFormatTransformer.java
===================================================================
--- solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/NumberFormatTransformer.java (revision 945097)
+++ solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/NumberFormatTransformer.java (working copy)
@@ -26,6 +26,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.solr.common.util.StrUtils;
+
/**
*
* A Transformer instance which can extract numbers out of strings. It uses
@@ -72,7 +74,7 @@
}
Object val = row.get(srcCol);
- String styleSmall = style.toLowerCase();
+ String styleSmall = style.toLowerCase(StrUtils.ROOT_LOCALE);
if (val instanceof List) {
List inputs = (List) val;
Index: solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
===================================================================
--- solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (revision 945097)
+++ solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (working copy)
@@ -22,6 +22,8 @@
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.StrUtils;
+
import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow;
import static org.apache.solr.handler.dataimport.DataImportHandlerException.SEVERE;
import org.slf4j.Logger;
@@ -98,7 +100,7 @@
loadDataConfig(dataConfig);
for (Map.Entry entry : schema.getFields().entrySet()) {
- config.lowerNameVsSchemaField.put(entry.getKey().toLowerCase(), entry.getValue());
+ config.lowerNameVsSchemaField.put(entry.getKey().toLowerCase(StrUtils.ROOT_LOCALE), entry.getValue());
}
for (DataConfig.Entity e : config.document.entities) {
@@ -125,7 +127,7 @@
DataConfig.Field fld = entry.getValue();
SchemaField field = schema.getFieldOrNull(fld.getName());
if (field == null) {
- field = config.lowerNameVsSchemaField.get(fld.getName().toLowerCase());
+ field = config.lowerNameVsSchemaField.get(fld.getName().toLowerCase(StrUtils.ROOT_LOCALE));
if (field == null) {
LOG.info("The field :" + fld.getName() + " present in DataConfig does not have a counterpart in Solr Schema");
}
@@ -215,7 +217,7 @@
}
SchemaField schemaField = schema.getFieldOrNull(f.getName());
if (schemaField == null) {
- schemaField = config.lowerNameVsSchemaField.get(f.getName().toLowerCase());
+ schemaField = config.lowerNameVsSchemaField.get(f.getName().toLowerCase(StrUtils.ROOT_LOCALE));
if (schemaField != null) f.name = schemaField.getName();
}
if (schemaField != null) {
Index: solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
===================================================================
--- solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java (revision 945097)
+++ solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java (working copy)
@@ -18,10 +18,10 @@
package org.apache.solr.handler.dataimport;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
import static org.apache.solr.handler.dataimport.SolrWriter.LAST_INDEX_KEY;
import static org.apache.solr.handler.dataimport.DataImportHandlerException.*;
-import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow;
import org.apache.solr.schema.SchemaField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -744,7 +744,7 @@
// This can be a dynamic field or a field which does not have an entry in data-config ( an implicit field)
SchemaField sf = dataImporter.getSchema().getFieldOrNull(key);
if (sf == null) {
- sf = dataImporter.getConfig().lowerNameVsSchemaField.get(key.toLowerCase());
+ sf = dataImporter.getConfig().lowerNameVsSchemaField.get(key.toLowerCase(StrUtils.ROOT_LOCALE));
}
if (sf != null) {
addFieldToDoc(entry.getValue(), sf.getName(), 1.0f, sf.multiValued(), doc);
Index: solr/contrib/dataimporthandler/src/extras/main/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
===================================================================
--- solr/contrib/dataimporthandler/src/extras/main/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java (revision 945097)
+++ solr/contrib/dataimporthandler/src/extras/main/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java (working copy)
@@ -17,6 +17,8 @@
package org.apache.solr.handler.dataimport;
import com.sun.mail.imap.IMAPMessage;
+
+import org.apache.solr.common.util.StrUtils;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.utils.ParseUtils;
import org.slf4j.Logger;
@@ -161,7 +163,7 @@
if (!processAttachment || (disp != null && disp.equalsIgnoreCase(Part.ATTACHMENT))) return;
InputStream is = part.getInputStream();
String fileName = part.getFileName();
- String content = ParseUtils.getStringContent(is, TikaConfig.getDefaultConfig(), ctype.getBaseType().toLowerCase());
+ String content = ParseUtils.getStringContent(is, TikaConfig.getDefaultConfig(), ctype.getBaseType().toLowerCase(StrUtils.ROOT_LOCALE));
if (disp != null && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
if (row.get(ATTACHMENT) == null)
row.put(ATTACHMENT, new ArrayList());
Index: solr/lib/commons-codec-1.3.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: solr/lib/commons-codec-1.4.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: solr\lib\commons-codec-1.4.jar
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: solr/src/test/org/apache/solr/core/TestConfig.java
===================================================================
--- solr/src/test/org/apache/solr/core/TestConfig.java (revision 945097)
+++ solr/src/test/org/apache/solr/core/TestConfig.java (working copy)
@@ -19,6 +19,7 @@
import org.apache.lucene.index.IndexWriter;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.handler.admin.ShowFileRequestHandler;
import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.search.SolrIndexSearcher;
@@ -112,7 +113,7 @@
//System.out.println( handler.getHiddenFiles() );
// should not contain: solrconfig.xml scheam.xml admin-extra.html
- assertFalse(handler.getHiddenFiles().contains("scheam.xml".toUpperCase()));
+ assertFalse(handler.getHiddenFiles().contains("scheam.xml".toUpperCase(StrUtils.ROOT_LOCALE)));
assertTrue(handler.getHiddenFiles().contains("PROTWORDS.TXT"));
}
Index: solr/src/test/org/apache/solr/request/TestBinaryResponseWriter.java
===================================================================
--- solr/src/test/org/apache/solr/request/TestBinaryResponseWriter.java (revision 945097)
+++ solr/src/test/org/apache/solr/request/TestBinaryResponseWriter.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.JavaBinCodec;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.response.BinaryQueryResponseWriter;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.util.AbstractSolrTestCase;
@@ -49,7 +50,7 @@
* Tests known types implementation by asserting correct encoding/decoding of UUIDField
*/
public void testUUID() throws Exception {
- String s = UUID.randomUUID().toString().toLowerCase();
+ String s = UUID.randomUUID().toString().toLowerCase(StrUtils.ROOT_LOCALE);
assertU(adoc("id", "101", "uuid", s));
assertU(commit());
LocalSolrQueryRequest req = lrf.makeRequest("q", "*:*");
Index: solr/src/java/org/apache/solr/schema/TrieField.java
===================================================================
--- solr/src/java/org/apache/solr/schema/TrieField.java (revision 945097)
+++ solr/src/java/org/apache/solr/schema/TrieField.java (working copy)
@@ -25,6 +25,7 @@
import org.apache.lucene.analysis.NumericTokenStream;
import org.apache.solr.analysis.*;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.response.XMLWriter;
import org.apache.solr.search.QParser;
@@ -77,7 +78,7 @@
if (t != null) {
try {
- type = TrieTypes.valueOf(t.toUpperCase());
+ type = TrieTypes.valueOf(t.toUpperCase(StrUtils.ROOT_LOCALE));
} catch (IllegalArgumentException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Invalid type specified in schema.xml for field: " + args.get("name"), e);
Index: solr/src/java/org/apache/solr/schema/UUIDField.java
===================================================================
--- solr/src/java/org/apache/solr/schema/UUIDField.java (revision 945097)
+++ solr/src/java/org/apache/solr/schema/UUIDField.java (working copy)
@@ -24,6 +24,7 @@
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.SortField;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.response.XMLWriter;
@@ -76,7 +77,7 @@
@Override
public String toInternal(String val) {
if (val == null || 0==val.length() || NEW.equals(val)) {
- return UUID.randomUUID().toString().toLowerCase();
+ return UUID.randomUUID().toString().toLowerCase(StrUtils.ROOT_LOCALE);
} else {
// we do some basic validation if 'val' looks like an UUID
if (val.length() != 36 || val.charAt(8) != DASH || val.charAt(13) != DASH
@@ -85,12 +86,12 @@
"Invalid UUID String: '" + val + "'");
}
- return val.toLowerCase();
+ return val.toLowerCase(StrUtils.ROOT_LOCALE);
}
}
public String toInternal(UUID uuid) {
- return uuid.toString().toLowerCase();
+ return uuid.toString().toLowerCase(StrUtils.ROOT_LOCALE);
}
@Override
Index: solr/src/java/org/apache/solr/update/SolrIndexWriter.java
===================================================================
--- solr/src/java/org/apache/solr/update/SolrIndexWriter.java (revision 945097)
+++ solr/src/java/org/apache/solr/update/SolrIndexWriter.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.lucene.store.*;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.DirectoryFactory;
import org.apache.solr.core.StandardDirectoryFactory;
import org.apache.solr.schema.IndexSchema;
@@ -121,7 +122,7 @@
log.warn("No lockType configured for " + path + " assuming 'simple'");
rawLockType = "simple";
}
- final String lockType = rawLockType.toLowerCase().trim();
+ final String lockType = rawLockType.toLowerCase(StrUtils.ROOT_LOCALE).trim();
if ("simple".equals(lockType)) {
// multiple SimpleFSLockFactory instances should be OK
Index: solr/src/java/org/apache/solr/analysis/PhoneticFilterFactory.java
===================================================================
--- solr/src/java/org/apache/solr/analysis/PhoneticFilterFactory.java (revision 945097)
+++ solr/src/java/org/apache/solr/analysis/PhoneticFilterFactory.java (working copy)
@@ -28,6 +28,7 @@
import org.apache.commons.codec.language.Soundex;
import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.StrUtils;
/**
* Create tokens based on phonetic encoders
@@ -50,10 +51,10 @@
private static final Map> registry;
static {
registry = new HashMap>();
- registry.put( "DoubleMetaphone".toUpperCase(), DoubleMetaphone.class );
- registry.put( "Metaphone".toUpperCase(), Metaphone.class );
- registry.put( "Soundex".toUpperCase(), Soundex.class );
- registry.put( "RefinedSoundex".toUpperCase(), RefinedSoundex.class );
+ registry.put( "DoubleMetaphone".toUpperCase(StrUtils.ROOT_LOCALE), DoubleMetaphone.class );
+ registry.put( "Metaphone".toUpperCase(StrUtils.ROOT_LOCALE), Metaphone.class );
+ registry.put( "Soundex".toUpperCase(StrUtils.ROOT_LOCALE), Soundex.class );
+ registry.put( "RefinedSoundex".toUpperCase(StrUtils.ROOT_LOCALE), RefinedSoundex.class );
}
protected boolean inject = true;
@@ -71,7 +72,7 @@
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "Missing required parameter: "+ENCODER
+" ["+registry.keySet()+"]" );
}
- Class extends Encoder> clazz = registry.get(name.toUpperCase());
+ Class extends Encoder> clazz = registry.get(name.toUpperCase(StrUtils.ROOT_LOCALE));
if( clazz == null ) {
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "Unknown encoder: "+name +" ["+registry.keySet()+"]" );
}
Index: solr/src/java/org/apache/solr/core/SolrConfig.java
===================================================================
--- solr/src/java/org/apache/solr/core/SolrConfig.java (revision 945097)
+++ solr/src/java/org/apache/solr/core/SolrConfig.java (working copy)
@@ -20,6 +20,7 @@
import org.apache.solr.common.util.DOMUtil;
import org.apache.solr.common.util.RegexFileFilter;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.handler.PingRequestHandler;
import org.apache.solr.handler.component.SearchComponent;
import org.apache.solr.request.LocalSolrQueryRequest;
@@ -367,7 +368,7 @@
/** Input must not be null */
public static LastModFrom parse(final String s) {
try {
- return valueOf(s.toUpperCase());
+ return valueOf(s.toUpperCase(StrUtils.ROOT_LOCALE));
} catch (Exception e) {
log.warn( "Unrecognized value for lastModFrom: " + s, e);
return BOGUS;
Index: solr/src/java/org/apache/solr/core/Config.java
===================================================================
--- solr/src/java/org/apache/solr/core/Config.java (revision 945097)
+++ solr/src/java/org/apache/solr/core/Config.java (working copy)
@@ -22,6 +22,8 @@
import org.xml.sax.SAXException;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.DOMUtil;
+import org.apache.solr.common.util.StrUtils;
+
import javax.xml.parsers.*;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
@@ -285,7 +287,7 @@
private static final AtomicBoolean versionWarningAlreadyLogged = new AtomicBoolean(false);
public static final Version parseLuceneVersionString(final String matchVersion) {
- String parsedMatchVersion = matchVersion.toUpperCase();
+ String parsedMatchVersion = matchVersion.toUpperCase(StrUtils.ROOT_LOCALE);
// be lenient with the supplied version parameter
parsedMatchVersion = parsedMatchVersion.replaceFirst("^(\\d)\\.(\\d)$", "LUCENE_$1$2");
Index: solr/src/java/org/apache/solr/core/JmxMonitoredMap.java
===================================================================
--- solr/src/java/org/apache/solr/core/JmxMonitoredMap.java (revision 945097)
+++ solr/src/java/org/apache/solr/core/JmxMonitoredMap.java (working copy)
@@ -18,6 +18,7 @@
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrConfig.JmxConfiguration;
import javax.management.*;
@@ -243,7 +244,7 @@
if (staticStats.contains(attribute) && attribute != null
&& attribute.length() > 0) {
try {
- String getter = "get" + attribute.substring(0, 1).toUpperCase()
+ String getter = "get" + attribute.substring(0, 1).toUpperCase(StrUtils.ROOT_LOCALE)
+ attribute.substring(1);
Method meth = infoBean.getClass().getMethod(getter);
val = meth.invoke(infoBean);
Index: solr/src/java/org/apache/solr/core/SolrCore.java
===================================================================
--- solr/src/java/org/apache/solr/core/SolrCore.java (revision 945097)
+++ solr/src/java/org/apache/solr/core/SolrCore.java (working copy)
@@ -28,6 +28,7 @@
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.handler.admin.ShowFileRequestHandler;
import org.apache.solr.handler.component.*;
import org.apache.solr.highlight.DefaultSolrHighlighter;
@@ -1554,14 +1555,14 @@
File configdir = new File( solrConfig.getResourceLoader().getConfigDir() );
if( configdir.exists() && configdir.isDirectory() ) {
for( String file : configdir.list() ) {
- hide.add( file.toUpperCase() );
+ hide.add( file.toUpperCase(StrUtils.ROOT_LOCALE) );
}
}
// except the "gettable" list
StringTokenizer st = new StringTokenizer( gettable );
while( st.hasMoreTokens() ) {
- hide.remove( st.nextToken().toUpperCase() );
+ hide.remove( st.nextToken().toUpperCase(StrUtils.ROOT_LOCALE) );
}
for( String s : hide ) {
invariants.add( ShowFileRequestHandler.HIDDEN, s );
Index: solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
===================================================================
--- solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (revision 945097)
+++ solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (working copy)
@@ -32,6 +32,7 @@
import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.handler.RequestHandlerBase;
@@ -105,7 +106,7 @@
String[] hidden = invariants.getParams( HIDDEN );
if( hidden != null ) {
for( String s : hidden ) {
- hiddenFiles.add( s.toUpperCase() );
+ hiddenFiles.add( s.toUpperCase(StrUtils.ROOT_LOCALE) );
}
}
}
@@ -129,7 +130,7 @@
}
else {
fname = fname.replace( '\\', '/' ); // normalize slashes
- if( hiddenFiles.contains( fname.toUpperCase() ) ) {
+ if( hiddenFiles.contains( fname.toUpperCase(StrUtils.ROOT_LOCALE) ) ) {
throw new SolrException( ErrorCode.FORBIDDEN, "Can not access: "+fname );
}
if( fname.indexOf( ".." ) >= 0 ) {
@@ -156,7 +157,7 @@
for( File f : adminFile.listFiles() ) {
String path = f.getAbsolutePath().substring( basePath );
path = path.replace( '\\', '/' ); // normalize slashes
- if( hiddenFiles.contains( path.toUpperCase() ) ) {
+ if( hiddenFiles.contains( path.toUpperCase(StrUtils.ROOT_LOCALE) ) ) {
continue; // don't show 'hidden' files
}
if( f.isHidden() || f.getName().startsWith( "." ) ) {
Index: solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
===================================================================
--- solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (revision 945097)
+++ solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (working copy)
@@ -33,6 +33,7 @@
import org.apache.lucene.LucenePackage;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.XML;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.RequestHandlerBase;
@@ -122,7 +123,7 @@
addGetterIfAvaliable( os, "processCpuTime", info );
try {
- if( !os.getName().toLowerCase().startsWith( "windows" ) ) {
+ if( !os.getName().toLowerCase(StrUtils.ROOT_LOCALE).startsWith( "windows" ) ) {
// Try some command line things
info.add( "uname", execute( "uname -a" ) );
info.add( "ulimit", execute( "ulimit -n" ) );
Index: solr/src/java/org/apache/solr/handler/component/TermsComponent.java
===================================================================
--- solr/src/java/org/apache/solr/handler/component/TermsComponent.java (revision 945097)
+++ solr/src/java/org/apache/solr/handler/component/TermsComponent.java (working copy)
@@ -186,7 +186,7 @@
int flags = 0;
for (String flagParam : flagParams) {
try {
- flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase()).getValue();
+ flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase(StrUtils.ROOT_LOCALE)).getValue();
} catch (IllegalArgumentException iae) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown terms regex flag '" + flagParam + "'");
}
Index: solr/src/common/org/apache/solr/common/params/MoreLikeThisParams.java
===================================================================
--- solr/src/common/org/apache/solr/common/params/MoreLikeThisParams.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/params/MoreLikeThisParams.java (working copy)
@@ -17,6 +17,8 @@
package org.apache.solr.common.params;
+import org.apache.solr.common.util.StrUtils;
+
/**
* @since solr 1.3
*/
@@ -57,7 +59,7 @@
public static TermStyle get( String p )
{
if( p != null ) {
- p = p.toUpperCase();
+ p = p.toUpperCase(StrUtils.ROOT_LOCALE);
if( p.equals( "DETAILS" ) ) {
return DETAILS;
}
Index: solr/src/common/org/apache/solr/common/params/CoreAdminParams.java
===================================================================
--- solr/src/common/org/apache/solr/common/params/CoreAdminParams.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/params/CoreAdminParams.java (working copy)
@@ -18,6 +18,8 @@
package org.apache.solr.common.params;
+import org.apache.solr.common.util.StrUtils;
+
/**
* @since solr 1.3
*/
@@ -74,7 +76,7 @@
{
if( p != null ) {
try {
- return CoreAdminAction.valueOf( p.toUpperCase() );
+ return CoreAdminAction.valueOf( p.toUpperCase(StrUtils.ROOT_LOCALE) );
}
catch( Exception ex ) {}
}
Index: solr/src/common/org/apache/solr/common/params/FacetParams.java
===================================================================
--- solr/src/common/org/apache/solr/common/params/FacetParams.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/params/FacetParams.java (working copy)
@@ -18,6 +18,7 @@
package org.apache.solr.common.params;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.StrUtils;
import java.util.EnumSet;
@@ -170,10 +171,10 @@
*/
public enum FacetDateOther {
BEFORE, AFTER, BETWEEN, ALL, NONE;
- public String toString() { return super.toString().toLowerCase(); }
+ public String toString() { return super.toString().toLowerCase(StrUtils.ROOT_LOCALE); }
public static FacetDateOther get(String label) {
try {
- return valueOf(label.toUpperCase());
+ return valueOf(label.toUpperCase(StrUtils.ROOT_LOCALE));
} catch (IllegalArgumentException e) {
throw new SolrException
(SolrException.ErrorCode.BAD_REQUEST,
@@ -217,10 +218,10 @@
*/
public enum FacetDateInclude {
ALL, LOWER, UPPER, EDGE, OUTER;
- public String toString() { return super.toString().toLowerCase(); }
+ public String toString() { return super.toString().toLowerCase(StrUtils.ROOT_LOCALE); }
public static FacetDateInclude get(String label) {
try {
- return valueOf(label.toUpperCase());
+ return valueOf(label.toUpperCase(StrUtils.ROOT_LOCALE));
} catch (IllegalArgumentException e) {
throw new SolrException
(SolrException.ErrorCode.BAD_REQUEST,
Index: solr/src/common/org/apache/solr/common/params/CommonParams.java
===================================================================
--- solr/src/common/org/apache/solr/common/params/CommonParams.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/params/CommonParams.java (working copy)
@@ -17,7 +17,9 @@
package org.apache.solr.common.params;
+import org.apache.solr.common.util.StrUtils;
+
/**
* Parameters used across many handlers
*/
@@ -101,7 +103,7 @@
public static EchoParamStyle get( String v ) {
if( v != null ) {
- v = v.toUpperCase();
+ v = v.toUpperCase(StrUtils.ROOT_LOCALE);
if( v.equals( "EXPLICIT" ) ) {
return EXPLICIT;
}
Index: solr/src/common/org/apache/solr/common/util/ContentStreamBase.java
===================================================================
--- solr/src/common/org/apache/solr/common/util/ContentStreamBase.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/util/ContentStreamBase.java (working copy)
@@ -51,7 +51,7 @@
public static String getCharsetFromContentType( String contentType )
{
if( contentType != null ) {
- int idx = contentType.toLowerCase().indexOf( "charset=" );
+ int idx = contentType.toLowerCase(StrUtils.ROOT_LOCALE).indexOf( "charset=" );
if( idx > 0 ) {
return contentType.substring( idx + "charset=".length() ).trim();
}
Index: solr/src/common/org/apache/solr/common/util/StrUtils.java
===================================================================
--- solr/src/common/org/apache/solr/common/util/StrUtils.java (revision 945097)
+++ solr/src/common/org/apache/solr/common/util/StrUtils.java (working copy)
@@ -20,6 +20,7 @@
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Locale;
import java.io.IOException;
import org.apache.solr.common.SolrException;
@@ -28,6 +29,7 @@
* @version $Id$
*/
public class StrUtils {
+ public static final Locale ROOT_LOCALE = new Locale("");
public static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
@@ -207,7 +209,7 @@
public static List toLower(List strings) {
ArrayList ret = new ArrayList(strings.size());
for (String str : strings) {
- ret.add(str.toLowerCase());
+ ret.add(str.toLowerCase(ROOT_LOCALE));
}
return ret;
}
Index: solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java
===================================================================
--- solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java (revision 945097)
+++ solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java (working copy)
@@ -37,6 +37,7 @@
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
/**
*
@@ -187,7 +188,7 @@
{
if( v != null ) {
try {
- return KnownType.valueOf( v.toUpperCase() );
+ return KnownType.valueOf( v.toUpperCase(StrUtils.ROOT_LOCALE) );
}
catch( Exception ex ) {}
}
@@ -267,7 +268,7 @@
if( XMLStreamConstants.START_ELEMENT != parser.getEventType() ) {
throw new RuntimeException( "must be start element, not: "+parser.getEventType() );
}
- if( !"arr".equals( parser.getLocalName().toLowerCase() ) ) {
+ if( !"arr".equals( parser.getLocalName().toLowerCase(StrUtils.ROOT_LOCALE) ) ) {
throw new RuntimeException( "must be 'arr', not: "+parser.getLocalName() );
}
@@ -370,7 +371,7 @@
if( XMLStreamConstants.START_ELEMENT != parser.getEventType() ) {
throw new RuntimeException( "must be start element, not: "+parser.getEventType() );
}
- if( !"doc".equals( parser.getLocalName().toLowerCase() ) ) {
+ if( !"doc".equals( parser.getLocalName().toLowerCase(StrUtils.ROOT_LOCALE) ) ) {
throw new RuntimeException( "must be 'lst', not: "+parser.getLocalName() );
}
Index: solr/src/solrj/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java
===================================================================
--- solr/src/solrj/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java (revision 945097)
+++ solr/src/solrj/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java (working copy)
@@ -19,6 +19,8 @@
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.util.StrUtils;
+
import java.lang.reflect.*;
import java.util.*;
import java.util.regex.Pattern;
@@ -178,7 +180,7 @@
} else {
String setterName = setter.getName();
if (setterName.startsWith("set") && setterName.length() > 3) {
- name = setterName.substring(3, 4).toLowerCase() + setterName.substring(4);
+ name = setterName.substring(3, 4).toLowerCase(StrUtils.ROOT_LOCALE) + setterName.substring(4);
} else {
name = setter.getName();
}
Index: solr/src/webapp/src/org/apache/solr/servlet/cache/Method.java
===================================================================
--- solr/src/webapp/src/org/apache/solr/servlet/cache/Method.java (revision 945097)
+++ solr/src/webapp/src/org/apache/solr/servlet/cache/Method.java (working copy)
@@ -17,12 +17,14 @@
package org.apache.solr.servlet.cache;
+import org.apache.solr.common.util.StrUtils;
+
public enum Method {
GET, POST, HEAD, OTHER;
public static Method getMethod(String method) {
try {
- return Method.valueOf(method.toUpperCase());
+ return Method.valueOf(method.toUpperCase(StrUtils.ROOT_LOCALE));
} catch (Exception e) {
return OTHER;
}
Index: solr/src/webapp/src/org/apache/solr/servlet/SolrRequestParsers.java
===================================================================
--- solr/src/webapp/src/org/apache/solr/servlet/SolrRequestParsers.java (revision 945097)
+++ solr/src/webapp/src/org/apache/solr/servlet/SolrRequestParsers.java (working copy)
@@ -43,6 +43,7 @@
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.ContentStreamBase;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.Config;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.ServletSolrParams;
@@ -378,7 +379,7 @@
public SolrParams parseParamsAndFillStreams(
final HttpServletRequest req, ArrayList streams ) throws Exception
{
- String method = req.getMethod().toUpperCase();
+ String method = req.getMethod().toUpperCase(StrUtils.ROOT_LOCALE);
if( "GET".equals( method ) || "HEAD".equals( method )) {
return new ServletSolrParams(req);
}
@@ -389,7 +390,7 @@
if( idx > 0 ) { // remove the charset definition "; charset=utf-8"
contentType = contentType.substring( 0, idx );
}
- if( "application/x-www-form-urlencoded".equals( contentType.toLowerCase() ) ) {
+ if( "application/x-www-form-urlencoded".equals( contentType.toLowerCase(StrUtils.ROOT_LOCALE) ) ) {
return new ServletSolrParams(req); // just get the params from parameterMap
}
if( ServletFileUpload.isMultipartContent(req) ) {
Index: solr/src/webapp/web/admin/analysis.jsp
===================================================================
--- solr/src/webapp/web/admin/analysis.jsp (revision 945097)
+++ solr/src/webapp/web/admin/analysis.jsp (working copy)
@@ -26,6 +26,7 @@
org.apache.solr.analysis.TokenFilterFactory,
org.apache.solr.analysis.TokenizerChain,
org.apache.solr.analysis.TokenizerFactory,
+ org.apache.solr.common.util.StrUtils,
org.apache.solr.schema.FieldType,
org.apache.solr.schema.SchemaField,
org.apache.solr.common.util.XML,
@@ -46,7 +47,7 @@
// is name a field name or a type name?
String nt = request.getParameter("nt");
if (nt==null || nt.length()==0) nt="name"; // assume field name
- nt = nt.toLowerCase().trim();
+ nt = nt.toLowerCase(StrUtils.ROOT_LOCALE).trim();
String name = request.getParameter("name");
if (name==null || name.length()==0) name="";
String val = request.getParameter("val");
Index: lucene/src/test/org/apache/lucene/analysis/TestCharArrayMap.java
===================================================================
--- lucene/src/test/org/apache/lucene/analysis/TestCharArrayMap.java (revision 945097)
+++ lucene/src/test/org/apache/lucene/analysis/TestCharArrayMap.java (working copy)
@@ -28,6 +28,9 @@
CharArrayMap map = new CharArrayMap(TEST_VERSION_CURRENT, 1, ignoreCase);
HashMap hmap = new HashMap();
+ // use the root locale for consistent behavior
+ final Locale rootLocale = new Locale("");
+
char[] key;
for (int i=0; i