From d8a5610d7bea98bb8437f638a7977cb3d83e5d34 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 3 Apr 2014 22:50:13 +0200 Subject: [PATCH] Use Locale.US when doing String operations on machine readable output. The default locale may not provide the wanted mapping. See also http://developer.android.com/reference/java/util/Locale.html#default_locale SMACK-467 --- .../java/org/jivesoftware/smack/BOSHConnection.java | 3 ++- .../main/java/org/jivesoftware/smack/Roster.java | 5 +++-- .../java/org/jivesoftware/smack/RosterGroup.java | 3 ++- .../jivesoftware/smack/filter/IQReplyFilter.java | 7 ++++--- .../main/java/org/jivesoftware/smack/packet/IQ.java | 4 +++- .../java/org/jivesoftware/smack/packet/Packet.java | 2 +- .../org/jivesoftware/smack/packet/RosterPacket.java | 2 +- .../org/jivesoftware/smack/packet/XMPPError.java | 3 ++- .../jivesoftware/smack/util/PacketParserUtils.java | 5 +++-- .../smack/util/PacketParserUtilsTest.java | 2 +- .../smackx/bytestreams/ibb/packet/Open.java | 4 +++- .../bytestreams/ibb/provider/OpenIQProvider.java | 4 +++- .../jivesoftware/smackx/caps/EntityCapsManager.java | 5 +++-- .../org/jivesoftware/smackx/muc/MultiUserChat.java | 3 ++- .../smackx/muc/RoomListenerMultiplexor.java | 13 +++++++------ .../jivesoftware/smackx/pubsub/FormNodeType.java | 4 +++- .../smackx/pubsub/PubSubElementType.java | 6 ++++-- .../smackx/pubsub/packet/PubSubNamespace.java | 4 +++- .../smackx/jingle/media/ContentInfo.java | 4 +++- .../smackx/jingle/nat/TransportCandidate.java | 5 +++-- .../smackx/jingle/packet/JingleError.java | 4 +++- .../smackx/workgroup/agent/AgentRoster.java | 9 +++++---- .../smackx/workgroup/agent/WorkgroupQueue.java | 2 +- .../java/org/jivesoftware/smack/TCPConnection.java | 3 ++- 24 files changed, 67 insertions(+), 39 deletions(-) diff --git a/bosh/src/main/java/org/jivesoftware/smack/BOSHConnection.java b/bosh/src/main/java/org/jivesoftware/smack/BOSHConnection.java index 4e9bf6288..43d2da863 100644 --- a/bosh/src/main/java/org/jivesoftware/smack/BOSHConnection.java +++ b/bosh/src/main/java/org/jivesoftware/smack/BOSHConnection.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.PipedReader; import java.io.PipedWriter; import java.io.Writer; +import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; @@ -247,7 +248,7 @@ public class BOSHConnection extends XMPPConnection { throw new AlreadyLoggedInException(); } // Do partial version of nameprep on the username. - username = username.toLowerCase().trim(); + username = username.toLowerCase(Locale.US).trim(); String response; if (saslAuthentication.hasNonAnonymousAuthentication()) { diff --git a/core/src/main/java/org/jivesoftware/smack/Roster.java b/core/src/main/java/org/jivesoftware/smack/Roster.java index 7f30774b3..34753ba9a 100644 --- a/core/src/main/java/org/jivesoftware/smack/Roster.java +++ b/core/src/main/java/org/jivesoftware/smack/Roster.java @@ -24,6 +24,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -422,7 +423,7 @@ public class Roster { if (user == null) { return null; } - return entries.get(user.toLowerCase()); + return entries.get(user.toLowerCase(Locale.US)); } /** @@ -633,7 +634,7 @@ public class Roster { if (!contains(user)) { key = StringUtils.parseBareAddress(user); } - return key.toLowerCase(); + return key.toLowerCase(Locale.US); } /** diff --git a/core/src/main/java/org/jivesoftware/smack/RosterGroup.java b/core/src/main/java/org/jivesoftware/smack/RosterGroup.java index d1a37e38a..a4a88e3a9 100644 --- a/core/src/main/java/org/jivesoftware/smack/RosterGroup.java +++ b/core/src/main/java/org/jivesoftware/smack/RosterGroup.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; +import java.util.Locale; import java.util.Set; import org.jivesoftware.smack.SmackException.NoResponseException; @@ -122,7 +123,7 @@ public class RosterGroup { // Roster entries never include a resource so remove the resource // if it's a part of the XMPP address. user = StringUtils.parseBareAddress(user); - String userLowerCase = user.toLowerCase(); + String userLowerCase = user.toLowerCase(Locale.US); synchronized (entries) { for (RosterEntry entry : entries) { if (entry.getUser().equals(userLowerCase)) { diff --git a/core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java b/core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java index d226d33fc..1be24a0b5 100644 --- a/core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java +++ b/core/src/main/java/org/jivesoftware/smack/filter/IQReplyFilter.java @@ -16,6 +16,7 @@ */ package org.jivesoftware.smack.filter; +import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; @@ -86,9 +87,9 @@ public class IQReplyFilter implements PacketFilter { // in an early stage, i.e. when performing the SASL auth. local = null; } else { - local = conn.getUser().toLowerCase(); + local = conn.getUser().toLowerCase(Locale.US); } - server = conn.getServiceName().toLowerCase(); + server = conn.getServiceName().toLowerCase(Locale.US); packetId = iqPacket.getPacketID(); PacketFilter iqFilter = new OrFilter(new IQTypeFilter(IQ.Type.ERROR), new IQTypeFilter(IQ.Type.RESULT)); @@ -101,7 +102,7 @@ public class IQReplyFilter implements PacketFilter { fromFilter.addFilter(FromMatchesFilter.createBare(local)); fromFilter.addFilter(FromMatchesFilter.createFull(server)); } - else if (local != null && to.toLowerCase().equals(StringUtils.parseBareAddress(local))) { + else if (local != null && to.toLowerCase(Locale.US).equals(StringUtils.parseBareAddress(local))) { fromFilter.addFilter(FromMatchesFilter.createFull(null)); } } diff --git a/core/src/main/java/org/jivesoftware/smack/packet/IQ.java b/core/src/main/java/org/jivesoftware/smack/packet/IQ.java index 5a62c851a..97d02323d 100644 --- a/core/src/main/java/org/jivesoftware/smack/packet/IQ.java +++ b/core/src/main/java/org/jivesoftware/smack/packet/IQ.java @@ -17,6 +17,8 @@ package org.jivesoftware.smack.packet; +import java.util.Locale; + import org.jivesoftware.smack.util.XmlStringBuilder; /** @@ -202,7 +204,7 @@ public abstract class IQ extends Packet { if (type == null) { return null; } - type = type.toLowerCase(); + type = type.toLowerCase(Locale.US); if (GET.toString().equals(type)) { return GET; } diff --git a/core/src/main/java/org/jivesoftware/smack/packet/Packet.java b/core/src/main/java/org/jivesoftware/smack/packet/Packet.java index 41024e2a8..94f496b03 100644 --- a/core/src/main/java/org/jivesoftware/smack/packet/Packet.java +++ b/core/src/main/java/org/jivesoftware/smack/packet/Packet.java @@ -44,7 +44,7 @@ public abstract class Packet { private static final Logger LOGGER = Logger.getLogger(Packet.class.getName()); protected static final String DEFAULT_LANGUAGE = - java.util.Locale.getDefault().getLanguage().toLowerCase(); + java.util.Locale.getDefault().getLanguage().toLowerCase(Locale.US); private static String DEFAULT_XML_NS = null; diff --git a/core/src/main/java/org/jivesoftware/smack/packet/RosterPacket.java b/core/src/main/java/org/jivesoftware/smack/packet/RosterPacket.java index e72d95098..4822d1ad0 100644 --- a/core/src/main/java/org/jivesoftware/smack/packet/RosterPacket.java +++ b/core/src/main/java/org/jivesoftware/smack/packet/RosterPacket.java @@ -109,7 +109,7 @@ public class RosterPacket extends IQ { * @param name the user's name. */ public Item(String user, String name) { - this.user = user.toLowerCase(); + this.user = user.toLowerCase(Locale.US); this.name = name; itemType = null; itemStatus = null; diff --git a/core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java b/core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java index 1560b139e..3ac70af49 100644 --- a/core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java +++ b/core/src/main/java/org/jivesoftware/smack/packet/XMPPError.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -157,7 +158,7 @@ public class XMPPError { buf.append(""); diff --git a/core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java b/core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java index 24e91f910..fbbf6f431 100644 --- a/core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java +++ b/core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -744,11 +745,11 @@ public class PacketParserUtils { XMPPError.Type errorType = XMPPError.Type.CANCEL; try { if (type != null) { - errorType = XMPPError.Type.valueOf(type.toUpperCase()); + errorType = XMPPError.Type.valueOf(type.toUpperCase(Locale.US)); } } catch (IllegalArgumentException iae) { - LOGGER.log(Level.SEVERE, "Could not find error type for " + type.toUpperCase(), iae); + LOGGER.log(Level.SEVERE, "Could not find error type for " + type.toUpperCase(Locale.US), iae); } return new XMPPError(errorType, condition, message, extensions); } diff --git a/core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java b/core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java index e8e351d65..354b4d050 100644 --- a/core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java +++ b/core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java @@ -802,7 +802,7 @@ public class PacketParserUtilsTest { Locale[] availableLocales = Locale.getAvailableLocales(); for (int i = 0; i < availableLocales.length; i++) { if (availableLocales[i] != Locale.getDefault()) { - otherLanguage = availableLocales[i].getLanguage().toLowerCase(); + otherLanguage = availableLocales[i].getLanguage().toLowerCase(Locale.US); break; } } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/packet/Open.java b/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/packet/Open.java index 9f755a824..276b9e5e8 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/packet/Open.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/packet/Open.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.bytestreams.ibb.packet; +import java.util.Locale; + import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager.StanzaType; @@ -120,7 +122,7 @@ public class Open extends IQ { buf.append(sessionID); buf.append("\" "); buf.append("stanza=\""); - buf.append(stanza.toString().toLowerCase()); + buf.append(stanza.toString().toLowerCase(Locale.US)); buf.append("\""); buf.append("/>"); return buf.toString(); diff --git a/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/provider/OpenIQProvider.java b/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/provider/OpenIQProvider.java index 53964ca9b..02a53bdd8 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/provider/OpenIQProvider.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/provider/OpenIQProvider.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.bytestreams.ibb.provider; +import java.util.Locale; + import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.provider.IQProvider; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager.StanzaType; @@ -39,7 +41,7 @@ public class OpenIQProvider implements IQProvider { stanza = StanzaType.IQ; } else { - stanza = StanzaType.valueOf(stanzaValue.toUpperCase()); + stanza = StanzaType.valueOf(stanzaValue.toUpperCase(Locale.US)); } return new Open(sessionID, blockSize, stanza); diff --git a/extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java b/extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java index fad11d8e5..5ef209440 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java @@ -54,6 +54,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Queue; import java.util.SortedSet; @@ -278,7 +279,7 @@ public class EntityCapsManager extends Manager { CapsExtension ext = (CapsExtension) packet.getExtension(EntityCapsManager.ELEMENT, EntityCapsManager.NAMESPACE); - String hash = ext.getHash().toLowerCase(); + String hash = ext.getHash().toLowerCase(Locale.US); if (!SUPPORTED_HASHES.containsKey(hash)) return; @@ -560,7 +561,7 @@ public class EntityCapsManager extends Manager { * supported */ protected static String generateVerificationString(DiscoverInfo discoverInfo, String hash) { - MessageDigest md = SUPPORTED_HASHES.get(hash.toLowerCase()); + MessageDigest md = SUPPORTED_HASHES.get(hash.toLowerCase(Locale.US)); if (md == null) return null; diff --git a/extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java b/extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java index 08fba6037..95d09daa2 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; @@ -169,7 +170,7 @@ public class MultiUserChat { */ public MultiUserChat(XMPPConnection connection, String room) { this.connection = connection; - this.room = room.toLowerCase(); + this.room = room.toLowerCase(Locale.US); init(); } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/muc/RoomListenerMultiplexor.java b/extensions/src/main/java/org/jivesoftware/smackx/muc/RoomListenerMultiplexor.java index 07ba839ed..9bbcf8594 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/muc/RoomListenerMultiplexor.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/muc/RoomListenerMultiplexor.java @@ -26,6 +26,7 @@ import org.jivesoftware.smack.packet.Packet; import org.jivesoftware.smack.util.StringUtils; import java.lang.ref.WeakReference; +import java.util.Locale; import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; @@ -150,21 +151,21 @@ class RoomListenerMultiplexor extends AbstractConnectionListener { if (from == null) { return false; } - return roomAddressTable.containsKey(StringUtils.parseBareAddress(from).toLowerCase()); + return roomAddressTable.containsKey(StringUtils.parseBareAddress(from).toLowerCase(Locale.US)); } public void addRoom(String address) { if (address == null) { return; } - roomAddressTable.put(address.toLowerCase(), address); + roomAddressTable.put(address.toLowerCase(Locale.US), address); } public void removeRoom(String address) { if (address == null) { return; } - roomAddressTable.remove(address.toLowerCase()); + roomAddressTable.remove(address.toLowerCase(Locale.US)); } } @@ -191,7 +192,7 @@ class RoomListenerMultiplexor extends AbstractConnectionListener { } PacketMultiplexListener listener = - roomListenersByAddress.get(StringUtils.parseBareAddress(from).toLowerCase()); + roomListenersByAddress.get(StringUtils.parseBareAddress(from).toLowerCase(Locale.US)); if (listener != null) { listener.processPacket(p); @@ -202,14 +203,14 @@ class RoomListenerMultiplexor extends AbstractConnectionListener { if (address == null) { return; } - roomListenersByAddress.put(address.toLowerCase(), listener); + roomListenersByAddress.put(address.toLowerCase(Locale.US), listener); } public void removeRoom(String address) { if (address == null) { return; } - roomListenersByAddress.remove(address.toLowerCase()); + roomListenersByAddress.remove(address.toLowerCase(Locale.US)); } } } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/FormNodeType.java b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/FormNodeType.java index c7c58a3f2..af8a642d1 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/FormNodeType.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/FormNodeType.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.pubsub; +import java.util.Locale; + import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; /** @@ -48,6 +50,6 @@ public enum FormNodeType { return CONFIGURE_OWNER; } - return valueOf(elem.toUpperCase()); + return valueOf(elem.toUpperCase(Locale.US)); } } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubElementType.java b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubElementType.java index 53c89565d..bb84c66b1 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubElementType.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubElementType.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.pubsub; +import java.util.Locale; + import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; /** @@ -75,9 +77,9 @@ public enum PubSubElementType if (fragment != null) { - return valueOf((elemName + '_' + fragment).toUpperCase()); + return valueOf((elemName + '_' + fragment).toUpperCase(Locale.US)); } - return valueOf(elemName.toUpperCase().replace('-', '_')); + return valueOf(elemName.toUpperCase(Locale.US).replace('-', '_')); } } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSubNamespace.java b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSubNamespace.java index 492676f48..d14a510f8 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSubNamespace.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSubNamespace.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.pubsub.packet; +import java.util.Locale; + /** * Defines all the valid namespaces that are used with the {@link PubSub} packet * as defined by the specification. @@ -58,7 +60,7 @@ public enum PubSubNamespace if (index != -1) { String suffix = ns.substring(ns.lastIndexOf('#')+1); - return valueOf(suffix.toUpperCase()); + return valueOf(suffix.toUpperCase(Locale.US)); } else return BASIC; diff --git a/jingle/src/main/java/org/jivesoftware/smackx/jingle/media/ContentInfo.java b/jingle/src/main/java/org/jivesoftware/smackx/jingle/media/ContentInfo.java index 1761977ed..1b6b4faa3 100644 --- a/jingle/src/main/java/org/jivesoftware/smackx/jingle/media/ContentInfo.java +++ b/jingle/src/main/java/org/jivesoftware/smackx/jingle/media/ContentInfo.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.jingle.media; +import java.util.Locale; + /** * Content info. Content info messages are complementary messages that can be * transmitted for informing of events like "busy", "ringtone", etc. @@ -55,7 +57,7 @@ public abstract class ContentInfo { * Returns the MediaInfo constant associated with the String value. */ public static ContentInfo fromString(String value) { - value = value.toLowerCase(); + value = value.toLowerCase(Locale.US); if (value.equals("busy")) { return BUSY; } else if (value.equals("hold")) { diff --git a/jingle/src/main/java/org/jivesoftware/smackx/jingle/nat/TransportCandidate.java b/jingle/src/main/java/org/jivesoftware/smackx/jingle/nat/TransportCandidate.java index 48e3bee14..278d7419f 100644 --- a/jingle/src/main/java/org/jivesoftware/smackx/jingle/nat/TransportCandidate.java +++ b/jingle/src/main/java/org/jivesoftware/smackx/jingle/nat/TransportCandidate.java @@ -26,6 +26,7 @@ import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.logging.Logger; import org.jivesoftware.smack.XMPPConnection; @@ -468,7 +469,7 @@ public abstract class TransportCandidate { if (value == null) { return UDP; } - value = value.toLowerCase(); + value = value.toLowerCase(Locale.US); if (value.equals("udp")) { return UDP; } else if (value.equals("tcp")) { @@ -552,7 +553,7 @@ public abstract class TransportCandidate { if (value == null) { return MYRTPVOICE; } - value = value.toLowerCase(); + value = value.toLowerCase(Locale.US); if (value.equals("myrtpvoice")) { return MYRTPVOICE; } else if (value.equals("tcp")) { diff --git a/jingle/src/main/java/org/jivesoftware/smackx/jingle/packet/JingleError.java b/jingle/src/main/java/org/jivesoftware/smackx/jingle/packet/JingleError.java index e4ccca107..4ddff788d 100644 --- a/jingle/src/main/java/org/jivesoftware/smackx/jingle/packet/JingleError.java +++ b/jingle/src/main/java/org/jivesoftware/smackx/jingle/packet/JingleError.java @@ -17,6 +17,8 @@ package org.jivesoftware.smackx.jingle.packet; +import java.util.Locale; + import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smack.provider.PacketExtensionProvider; import org.jivesoftware.smackx.jingle.media.ContentInfo; @@ -87,7 +89,7 @@ public class JingleError implements PacketExtension { */ public static JingleError fromString(String value) { if (value != null) { - value = value.toLowerCase(); + value = value.toLowerCase(Locale.US); if (value.equals("out-of-order")) { return OUT_OF_ORDER; } else if (value.equals("unknown-session")) { diff --git a/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java b/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java index aab65b5fd..d4e1c2234 100644 --- a/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java +++ b/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/AgentRoster.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.logging.Logger; @@ -180,7 +181,7 @@ public class AgentRoster { synchronized (entries) { for (Iterator i = entries.iterator(); i.hasNext();) { String entry = i.next(); - if (entry.toLowerCase().equals(jid.toLowerCase())) { + if (entry.toLowerCase(Locale.US).equals(jid.toLowerCase())) { return true; } } @@ -248,7 +249,7 @@ public class AgentRoster { private String getPresenceMapKey(String user) { String key = user; if (!contains(user)) { - key = StringUtils.parseBareAddress(user).toLowerCase(); + key = StringUtils.parseBareAddress(user).toLowerCase(Locale.US); } return key; } @@ -322,7 +323,7 @@ public class AgentRoster { synchronized (entries) { for (Iterator i = entries.iterator(); i.hasNext();) { String entry = i.next(); - if (entry.toLowerCase().equals(StringUtils.parseBareAddress(key).toLowerCase())) { + if (entry.toLowerCase(Locale.US).equals(StringUtils.parseBareAddress(key).toLowerCase())) { fireEvent(EVENT_PRESENCE_CHANGED, packet); } } @@ -343,7 +344,7 @@ public class AgentRoster { synchronized (entries) { for (Iterator i = entries.iterator(); i.hasNext();) { String entry = (String)i.next(); - if (entry.toLowerCase().equals(StringUtils.parseBareAddress(key).toLowerCase())) { + if (entry.toLowerCase(Locale.US).equals(StringUtils.parseBareAddress(key).toLowerCase())) { fireEvent(EVENT_PRESENCE_CHANGED, packet); } } diff --git a/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/WorkgroupQueue.java b/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/WorkgroupQueue.java index e3ef7d6e2..4429f6334 100644 --- a/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/WorkgroupQueue.java +++ b/legacy/src/main/java/org/jivesoftware/smackx/workgroup/agent/WorkgroupQueue.java @@ -194,7 +194,7 @@ public class WorkgroupQueue { if (type == null) { return null; } - type = type.toLowerCase(); + type = type.toLowerCase(Locale.US); if (OPEN.toString().equals(type)) { return OPEN; } diff --git a/tcp/src/main/java/org/jivesoftware/smack/TCPConnection.java b/tcp/src/main/java/org/jivesoftware/smack/TCPConnection.java index 633a5171c..b4d65d372 100644 --- a/tcp/src/main/java/org/jivesoftware/smack/TCPConnection.java +++ b/tcp/src/main/java/org/jivesoftware/smack/TCPConnection.java @@ -54,6 +54,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; /** * Creates a socket connection to a XMPP server. This is the default connection @@ -223,7 +224,7 @@ public class TCPConnection extends XMPPConnection { throw new AlreadyLoggedInException(); } // Do partial version of nameprep on the username. - username = username.toLowerCase().trim(); + username = username.toLowerCase(Locale.US).trim(); String response; if (saslAuthentication.hasNonAnonymousAuthentication()) {