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) @@ -48,6 +48,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; +import java.util.Locale; /** @@ -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(Locale.ENGLISH)); 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) @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -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(Locale.ENGLISH), 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(Locale.ENGLISH)); } } 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) @@ -72,7 +72,7 @@ } Object val = row.get(srcCol); - String styleSmall = style.toLowerCase(); + String styleSmall = style.toLowerCase(Locale.ENGLISH); 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,7 @@ import org.apache.solr.schema.IndexSchema; import org.apache.solr.schema.SchemaField; import org.apache.solr.common.util.ContentStream; + import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow; import static org.apache.solr.handler.dataimport.DataImportHandlerException.SEVERE; import org.slf4j.Logger; @@ -98,7 +99,7 @@ loadDataConfig(dataConfig); for (Map.Entry entry : schema.getFields().entrySet()) { - config.lowerNameVsSchemaField.put(entry.getKey().toLowerCase(), entry.getValue()); + config.lowerNameVsSchemaField.put(entry.getKey().toLowerCase(Locale.ENGLISH), entry.getValue()); } for (DataConfig.Entity e : config.document.entities) { @@ -125,7 +126,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(Locale.ENGLISH)); if (field == null) { LOG.info("The field :" + fld.getName() + " present in DataConfig does not have a counterpart in Solr Schema"); } @@ -215,7 +216,7 @@ } SchemaField schemaField = schema.getFieldOrNull(f.getName()); if (schemaField == null) { - schemaField = config.lowerNameVsSchemaField.get(f.getName().toLowerCase()); + schemaField = config.lowerNameVsSchemaField.get(f.getName().toLowerCase(Locale.ENGLISH)); 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) @@ -21,7 +21,6 @@ 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 +743,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(Locale.ENGLISH)); } 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,7 @@ package org.apache.solr.handler.dataimport; import com.sun.mail.imap.IMAPMessage; + import org.apache.tika.config.TikaConfig; import org.apache.tika.utils.ParseUtils; import org.slf4j.Logger; @@ -161,7 +162,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(Locale.ENGLISH)); 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/CHANGES.txt =================================================================== --- solr/CHANGES.txt (revision 945097) +++ solr/CHANGES.txt (working copy) @@ -378,6 +378,8 @@ * SOLR-1891: Make lucene-jars-to-solr fail if copying any of the jars fails, and update clean to remove the jars in that directory (Mark Miller) +* LUCENE-2466: Commons-Codec was upgraded from 1.3 to 1.4. (rmuir) + Documentation ---------------------- 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) @@ -35,6 +35,7 @@ import javax.xml.xpath.XPathConstants; import java.io.IOException; import java.io.InputStream; +import java.util.Locale; public class TestConfig extends SolrTestCaseJ4 { @@ -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(Locale.ENGLISH))); 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) @@ -27,6 +27,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.util.Locale; import java.util.UUID; /** @@ -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(Locale.ENGLISH); 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) @@ -31,6 +31,7 @@ import org.apache.solr.search.function.*; import java.io.IOException; +import java.util.Locale; import java.util.Map; import java.util.Date; @@ -77,7 +78,7 @@ if (t != null) { try { - type = TrieTypes.valueOf(t.toUpperCase()); + type = TrieTypes.valueOf(t.toUpperCase(Locale.ENGLISH)); } 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) @@ -18,6 +18,7 @@ */ import java.io.IOException; +import java.util.Locale; import java.util.Map; import java.util.UUID; @@ -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(Locale.ENGLISH); } 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(Locale.ENGLISH); } } public String toInternal(UUID uuid) { - return uuid.toString().toLowerCase(); + return uuid.toString().toLowerCase(Locale.ENGLISH); } @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) @@ -36,6 +36,7 @@ import java.io.PrintStream; import java.text.DateFormat; import java.util.Date; +import java.util.Locale; /** * An IndexWriter that is configured via Solr config mechanisms. @@ -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(Locale.ENGLISH).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) @@ -19,6 +19,7 @@ import java.lang.reflect.Method; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import org.apache.commons.codec.Encoder; @@ -28,6 +29,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 +52,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(Locale.ENGLISH), DoubleMetaphone.class ); + registry.put( "Metaphone".toUpperCase(Locale.ENGLISH), Metaphone.class ); + registry.put( "Soundex".toUpperCase(Locale.ENGLISH), Soundex.class ); + registry.put( "RefinedSoundex".toUpperCase(Locale.ENGLISH), RefinedSoundex.class ); } protected boolean inject = true; @@ -71,7 +73,7 @@ throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "Missing required parameter: "+ENCODER +" ["+registry.keySet()+"]" ); } - Class clazz = registry.get(name.toUpperCase()); + Class clazz = registry.get(name.toUpperCase(Locale.ENGLISH)); 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) @@ -367,7 +367,7 @@ /** Input must not be null */ public static LastModFrom parse(final String s) { try { - return valueOf(s.toUpperCase()); + return valueOf(s.toUpperCase(Locale.ENGLISH)); } 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,7 @@ import org.xml.sax.SAXException; import org.apache.solr.common.SolrException; import org.apache.solr.common.util.DOMUtil; + import javax.xml.parsers.*; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathFactory; @@ -31,6 +32,7 @@ import java.io.*; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.LinkedHashMap; import java.util.Collections; @@ -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(Locale.ENGLISH); // 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) @@ -243,7 +243,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(Locale.ENGLISH) + 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) @@ -1554,14 +1554,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(Locale.ENGLISH) ); } } // except the "gettable" list StringTokenizer st = new StringTokenizer( gettable ); while( st.hasMoreTokens() ) { - hide.remove( st.nextToken().toUpperCase() ); + hide.remove( st.nextToken().toUpperCase(Locale.ENGLISH) ); } 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) @@ -22,6 +22,7 @@ import java.io.InputStream; import java.util.Date; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import org.apache.commons.io.IOUtils; @@ -105,7 +106,7 @@ String[] hidden = invariants.getParams( HIDDEN ); if( hidden != null ) { for( String s : hidden ) { - hiddenFiles.add( s.toUpperCase() ); + hiddenFiles.add( s.toUpperCase(Locale.ENGLISH) ); } } } @@ -129,7 +130,7 @@ } else { fname = fname.replace( '\\', '/' ); // normalize slashes - if( hiddenFiles.contains( fname.toUpperCase() ) ) { + if( hiddenFiles.contains( fname.toUpperCase(Locale.ENGLISH) ) ) { 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(Locale.ENGLISH) ) ) { 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) @@ -28,6 +28,7 @@ import java.net.InetAddress; import java.text.DecimalFormat; import java.util.Date; +import java.util.Locale; import org.apache.commons.io.IOUtils; import org.apache.lucene.LucenePackage; @@ -122,7 +123,7 @@ addGetterIfAvaliable( os, "processCpuTime", info ); try { - if( !os.getName().toLowerCase().startsWith( "windows" ) ) { + if( !os.getName().toLowerCase(Locale.ENGLISH).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) @@ -36,6 +36,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.regex.Pattern; /** @@ -186,7 +187,7 @@ int flags = 0; for (String flagParam : flagParams) { try { - flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase()).getValue(); + flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase(Locale.ENGLISH)).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 java.util.Locale; + /** * @since solr 1.3 */ @@ -57,7 +59,7 @@ public static TermStyle get( String p ) { if( p != null ) { - p = p.toUpperCase(); + p = p.toUpperCase(Locale.ENGLISH); 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 java.util.Locale; + /** * @since solr 1.3 */ @@ -74,7 +76,7 @@ { if( p != null ) { try { - return CoreAdminAction.valueOf( p.toUpperCase() ); + return CoreAdminAction.valueOf( p.toUpperCase(Locale.ENGLISH) ); } 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) @@ -20,6 +20,7 @@ import org.apache.solr.common.SolrException; import java.util.EnumSet; +import java.util.Locale; /** * Facet parameters @@ -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(Locale.ENGLISH); } public static FacetDateOther get(String label) { try { - return valueOf(label.toUpperCase()); + return valueOf(label.toUpperCase(Locale.ENGLISH)); } 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(Locale.ENGLISH); } public static FacetDateInclude get(String label) { try { - return valueOf(label.toUpperCase()); + return valueOf(label.toUpperCase(Locale.ENGLISH)); } 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 java.util.Locale; + /** * Parameters used across many handlers */ @@ -101,7 +103,7 @@ public static EchoParamStyle get( String v ) { if( v != null ) { - v = v.toUpperCase(); + v = v.toUpperCase(Locale.ENGLISH); 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) @@ -28,6 +28,7 @@ import java.io.StringReader; import java.net.URL; import java.net.URLConnection; +import java.util.Locale; /** @@ -51,7 +52,7 @@ public static String getCharsetFromContentType( String contentType ) { if( contentType != null ) { - int idx = contentType.toLowerCase().indexOf( "charset=" ); + int idx = contentType.toLowerCase(Locale.ENGLISH).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; @@ -207,7 +208,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(Locale.ENGLISH)); } 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) @@ -22,6 +22,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Locale; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -187,7 +189,7 @@ { if( v != null ) { try { - return KnownType.valueOf( v.toUpperCase() ); + return KnownType.valueOf( v.toUpperCase(Locale.ENGLISH) ); } catch( Exception ex ) {} } @@ -267,7 +269,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(Locale.ENGLISH) ) ) { throw new RuntimeException( "must be 'arr', not: "+parser.getLocalName() ); } @@ -370,7 +372,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(Locale.ENGLISH) ) ) { 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,7 @@ import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; + import java.lang.reflect.*; import java.util.*; import java.util.regex.Pattern; @@ -178,7 +179,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(Locale.ENGLISH) + 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 java.util.Locale; + public enum Method { GET, POST, HEAD, OTHER; public static Method getMethod(String method) { try { - return Method.valueOf(method.toUpperCase()); + return Method.valueOf(method.toUpperCase(Locale.ENGLISH)); } 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) @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -378,7 +379,7 @@ public SolrParams parseParamsAndFillStreams( final HttpServletRequest req, ArrayList streams ) throws Exception { - String method = req.getMethod().toUpperCase(); + String method = req.getMethod().toUpperCase(Locale.ENGLISH); 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(Locale.ENGLISH) ) ) { 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) @@ -46,7 +46,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(Locale.ENGLISH).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) @@ -36,7 +36,7 @@ key[j] = (char)r.nextInt(127); } String keyStr = new String(key); - String hmapKey = ignoreCase ? keyStr.toLowerCase() : keyStr; + String hmapKey = ignoreCase ? keyStr.toLowerCase(Locale.ENGLISH) : keyStr; int val = r.nextInt(); Index: lucene/src/test/org/apache/lucene/analysis/TestKeywordMarkerFilter.java =================================================================== --- lucene/src/test/org/apache/lucene/analysis/TestKeywordMarkerFilter.java (revision 945097) +++ lucene/src/test/org/apache/lucene/analysis/TestKeywordMarkerFilter.java (working copy) @@ -3,6 +3,7 @@ import java.io.IOException; import java.io.StringReader; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import org.apache.lucene.analysis.tokenattributes.KeywordAttribute; @@ -64,7 +65,7 @@ public boolean incrementToken() throws IOException { if (input.incrementToken()) { if (!keywordAttr.isKeyword()) { - final String term = termAtt.toString().toLowerCase(); + final String term = termAtt.toString().toLowerCase(Locale.ENGLISH); termAtt.setEmpty().append(term); } return true;