Skip to content

Commit c377765

Browse files
committed
Fix toLowerCase producing locale-dependent results.
We're using Locale.ROOT for all internal case conversions now.
1 parent a8daa81 commit c377765

6 files changed

Lines changed: 22 additions & 12 deletions

File tree

src/main/java/com/github/theholywaffle/teamspeak3/TS3Api.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.ArrayList;
3737
import java.util.Collections;
3838
import java.util.List;
39+
import java.util.Locale;
3940
import java.util.Map;
4041
import java.util.regex.Pattern;
4142

@@ -1312,12 +1313,12 @@ public List<Binding> getBindings() {
13121313
* @see #getChannelsByName(String)
13131314
*/
13141315
public Channel getChannelByNameExact(String name, final boolean ignoreCase) {
1315-
final String caseName = ignoreCase ? name.toLowerCase() : name;
1316+
final String caseName = ignoreCase ? name.toLowerCase(Locale.ROOT) : name;
13161317
final List<Channel> allChannels = getChannels();
13171318
if (allChannels == null) return null;
13181319

13191320
for (final Channel channel : allChannels) {
1320-
final String channelName = ignoreCase ? channel.getName().toLowerCase() : channel.getName();
1321+
final String channelName = ignoreCase ? channel.getName().toLowerCase(Locale.ROOT) : channel.getName();
13211322
if (caseName.equals(channelName)) {
13221323
return channel;
13231324
}
@@ -1603,12 +1604,12 @@ public List<Channel> getChannels() {
16031604
* @see #getClientsByName(String)
16041605
*/
16051606
public Client getClientByNameExact(String name, final boolean ignoreCase) {
1606-
final String caseName = ignoreCase ? name.toLowerCase() : name;
1607+
final String caseName = ignoreCase ? name.toLowerCase(Locale.ROOT) : name;
16071608
final List<Client> allClients = getClients();
16081609
if (allClients == null) return null;
16091610

16101611
for (final Client client : allClients) {
1611-
final String clientName = ignoreCase ? client.getNickname().toLowerCase() : client.getNickname();
1612+
final String clientName = ignoreCase ? client.getNickname().toLowerCase(Locale.ROOT) : client.getNickname();
16121613
if (caseName.equals(clientName)) {
16131614
return client;
16141615
}

src/main/java/com/github/theholywaffle/teamspeak3/TS3ApiAsync.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Collection;
3838
import java.util.Collections;
3939
import java.util.List;
40+
import java.util.Locale;
4041
import java.util.Map;
4142
import java.util.concurrent.TimeUnit;
4243
import java.util.regex.Pattern;
@@ -1331,13 +1332,13 @@ public void handle() {
13311332
*/
13321333
public CommandFuture<Channel> getChannelByNameExact(String name, final boolean ignoreCase) {
13331334
final CommandFuture<Channel> future = new CommandFuture<>();
1334-
final String caseName = ignoreCase ? name.toLowerCase() : name;
1335+
final String caseName = ignoreCase ? name.toLowerCase(Locale.ROOT) : name;
13351336

13361337
getChannels().onSuccess(new CommandFuture.SuccessListener<List<Channel>>() {
13371338
@Override
13381339
public void handleSuccess(final List<Channel> allChannels) {
13391340
for (final Channel c : allChannels) {
1340-
final String channelName = ignoreCase ? c.getName().toLowerCase() : c.getName();
1341+
final String channelName = ignoreCase ? c.getName().toLowerCase(Locale.ROOT) : c.getName();
13411342
if (caseName.equals(channelName)) {
13421343
future.set(c);
13431344
return;
@@ -1686,13 +1687,13 @@ public void handle() {
16861687
*/
16871688
public CommandFuture<Client> getClientByNameExact(String name, final boolean ignoreCase) {
16881689
final CommandFuture<Client> future = new CommandFuture<>();
1689-
final String caseName = ignoreCase ? name.toLowerCase() : name;
1690+
final String caseName = ignoreCase ? name.toLowerCase(Locale.ROOT) : name;
16901691

16911692
getClients().onSuccess(new CommandFuture.SuccessListener<List<Client>>() {
16921693
@Override
16931694
public void handleSuccess(final List<Client> allClients) {
16941695
for (final Client c : allClients) {
1695-
final String clientName = ignoreCase ? c.getNickname().toLowerCase() : c.getNickname();
1696+
final String clientName = ignoreCase ? c.getNickname().toLowerCase(Locale.ROOT) : c.getNickname();
16961697
if (caseName.equals(clientName)) {
16971698
future.set(c);
16981699
return;

src/main/java/com/github/theholywaffle/teamspeak3/api/ChannelProperty.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
* #L%
2727
*/
2828

29+
import java.util.Locale;
30+
2931
public enum ChannelProperty implements Property {
3032

3133
CHANNEL_CODEC(true),
@@ -66,7 +68,7 @@ public enum ChannelProperty implements Property {
6668
}
6769

6870
public String getName() {
69-
return name().toLowerCase();
71+
return name().toLowerCase(Locale.ROOT);
7072
}
7173

7274
public boolean isChangeable() {

src/main/java/com/github/theholywaffle/teamspeak3/api/ClientProperty.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
* #L%
2727
*/
2828

29+
import java.util.Locale;
30+
2931
public enum ClientProperty implements Property {
3032

3133
CID(false),
@@ -92,7 +94,7 @@ public enum ClientProperty implements Property {
9294
}
9395

9496
public String getName() {
95-
return name().toLowerCase();
97+
return name().toLowerCase(Locale.ROOT);
9698
}
9799

98100
public boolean isChangeable() {

src/main/java/com/github/theholywaffle/teamspeak3/api/ServerInstanceProperty.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
* #L%
2727
*/
2828

29+
import java.util.Locale;
30+
2931
public enum ServerInstanceProperty implements Property {
3032

3133
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_TOTAL(false),
@@ -68,7 +70,7 @@ public enum ServerInstanceProperty implements Property {
6870

6971
@Override
7072
public String getName() {
71-
return name().toLowerCase();
73+
return name().toLowerCase(Locale.ROOT);
7274
}
7375

7476
public boolean isChangeable() {

src/main/java/com/github/theholywaffle/teamspeak3/api/VirtualServerProperty.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
* #L%
2727
*/
2828

29+
import java.util.Locale;
30+
2931
public enum VirtualServerProperty implements Property {
3032

3133
CONNECTION_BANDWIDTH_RECEIVED_LAST_MINUTE_TOTAL(false),
@@ -130,7 +132,7 @@ public enum VirtualServerProperty implements Property {
130132

131133
@Override
132134
public String getName() {
133-
return name().toLowerCase();
135+
return name().toLowerCase(Locale.ROOT);
134136
}
135137

136138
public boolean isChangeable() {

0 commit comments

Comments
 (0)