Use locale insensitive case changes to ensure user code doesn't break⦠(#4268)
* Use locale insensitive case changes to ensure user code doesn't break in other locales (i.e. Turkey)
Signed-off-by: Michael Jameson <mjameson.se@gmail.com>
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
index 668ed58..b47d508 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
@@ -22,6 +22,7 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
+import java.util.Locale;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -98,7 +99,7 @@
if (parts.length != 2) {
return null;
}
- if (!parts[0].toLowerCase().equals("digest")) {
+ if (!parts[0].toLowerCase(Locale.ROOT).equals("digest")) {
return null;
}
@@ -326,7 +327,7 @@
return Algorithm.UNSPECIFIED;
}
val = val.trim();
- if (val.contains(MD5_SESS.md) || val.contains(MD5_SESS.md.toLowerCase())) {
+ if (val.contains(MD5_SESS.md) || val.contains(MD5_SESS.md.toLowerCase(Locale.ROOT))) {
return MD5_SESS;
}
return MD5;
diff --git a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttp2ResponseWriter.java b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttp2ResponseWriter.java
index c08d065..059b18e 100644
--- a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttp2ResponseWriter.java
+++ b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttp2ResponseWriter.java
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
@@ -74,7 +75,7 @@
response.status(Integer.toString(responseContext.getStatus()));
for (final Map.Entry<String, List<String>> e : responseContext.getStringHeaders().entrySet()) {
- response.add(e.getKey().toLowerCase(), e.getValue());
+ response.add(e.getKey().toLowerCase(Locale.ROOT), e.getValue());
}
response.set(HttpHeaderNames.CONTENT_LENGTH, Long.toString(contentLength));
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
index d27c619..d887a44 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
@@ -125,7 +125,7 @@
final String method = request.getMethod();
- final EntityPresence entityPresence = METHODS.get(method.toUpperCase());
+ final EntityPresence entityPresence = METHODS.get(method.toUpperCase(Locale.ROOT));
if (entityPresence == EntityPresence.MUST_BE_NULL && request.hasEntity()) {
if (suppressExceptions) {
LOGGER.warning(LocalizationMessages.ERROR_HTTP_METHOD_ENTITY_NOT_NULL(method));
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java b/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java
index bf6ac86..4382144 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java
@@ -17,6 +17,7 @@
package org.glassfish.jersey.client.authentication;
import java.util.Base64;
+import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -96,7 +97,7 @@
*/
public boolean filterResponseAndAuthenticate(ClientRequestContext request, ClientResponseContext response) {
final String authenticate = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE);
- if (authenticate != null && authenticate.trim().toUpperCase().startsWith("BASIC")) {
+ if (authenticate != null && authenticate.trim().toUpperCase(Locale.ROOT).startsWith("BASIC")) {
HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter
.getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC);
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/authentication/DigestAuthenticator.java b/core-client/src/main/java/org/glassfish/jersey/client/authentication/DigestAuthenticator.java
index fd04a1d..639d64c 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/authentication/DigestAuthenticator.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/authentication/DigestAuthenticator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -24,6 +24,7 @@
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -166,7 +167,7 @@
if (parts.length != 2) {
continue;
}
- if (!"digest".equals(parts[0].toLowerCase())) {
+ if (!"digest".equals(parts[0].toLowerCase(Locale.ROOT))) {
continue;
}
@@ -400,7 +401,7 @@
return Algorithm.UNSPECIFIED;
}
val = val.trim();
- if (val.contains(MD5_SESS.md) || val.contains(MD5_SESS.md.toLowerCase())) {
+ if (val.contains(MD5_SESS.md) || val.contains(MD5_SESS.md.toLowerCase(Locale.ROOT))) {
return MD5_SESS;
}
return MD5;
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFilter.java b/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFilter.java
index 09185c4..077cb39 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFilter.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -23,6 +23,7 @@
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.annotation.Priority;
@@ -202,7 +203,7 @@
List<String> authStrings = response.getHeaders().get(HttpHeaders.WWW_AUTHENTICATE);
if (authStrings != null) {
for (String authString : authStrings) {
- final String upperCaseAuth = authString.trim().toUpperCase();
+ final String upperCaseAuth = authString.trim().toUpperCase(Locale.ROOT);
if (result == null && upperCaseAuth.startsWith("BASIC")) {
result = Type.BASIC;
} else if (upperCaseAuth.startsWith("DIGEST")) {
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
index 0b018d6..b84c5b3 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
@@ -29,6 +29,7 @@
import java.security.PrivilegedExceptionAction;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -90,7 +91,7 @@
static {
for (String headerName : restrictedHeaders) {
- restrictedHeaderSet.add(headerName.toLowerCase());
+ restrictedHeaderSet.add(headerName.toLowerCase(Locale.ROOT));
}
}
@@ -424,7 +425,7 @@
}
private boolean isHeaderRestricted(String name, String value) {
- name = name.toLowerCase();
+ name = name.toLowerCase(Locale.ROOT);
return name.startsWith("sec-")
|| restrictedHeaderSet.contains(name)
&& !("connection".equalsIgnoreCase(name) && "close".equalsIgnoreCase(value));
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
index f14743b..ee292cf 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/PropertiesHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -20,6 +20,7 @@
import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
@@ -217,7 +218,7 @@
String runtimeAwareKey = getPropertyNameForRuntime(key, runtimeType);
if (key.equals(runtimeAwareKey)) {
// legacy behaviour
- runtimeAwareKey = key + "." + runtimeType.name().toLowerCase();
+ runtimeAwareKey = key + "." + runtimeType.name().toLowerCase(Locale.ROOT);
}
value = properties.get(runtimeAwareKey);
}
@@ -251,11 +252,11 @@
if (runtimeType != null && key.startsWith("jersey.config")) {
RuntimeType[] types = RuntimeType.values();
for (RuntimeType type : types) {
- if (key.startsWith("jersey.config." + type.name().toLowerCase())) {
+ if (key.startsWith("jersey.config." + type.name().toLowerCase(Locale.ROOT))) {
return key;
}
}
- return key.replace("jersey.config", "jersey.config." + runtimeType.name().toLowerCase());
+ return key.replace("jersey.config", "jersey.config." + runtimeType.name().toLowerCase(Locale.ROOT));
}
return key;
}
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/CacheControlProvider.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/CacheControlProvider.java
index 8cf122c..eb31e57 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/CacheControlProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/CacheControlProvider.java
@@ -19,6 +19,7 @@
import java.text.ParseException;
import java.util.Arrays;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -113,7 +114,7 @@
private void readDirective(CacheControl cacheControl,
HttpHeaderReader reader) throws ParseException {
- final String directiveName = reader.nextToken().toString().toLowerCase();
+ final String directiveName = reader.nextToken().toString().toLowerCase(Locale.ROOT);
if ("private".equals(directiveName)) {
cacheControl.setPrivate(true);
readFieldNames(cacheControl.getPrivateFields(), reader);
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/CookiesParser.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/CookiesParser.java
index 74ce034..5ac1b42 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/CookiesParser.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/CookiesParser.java
@@ -19,6 +19,7 @@
import java.text.ParseException;
import java.util.Date;
import java.util.LinkedHashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -133,7 +134,7 @@
if (cookie == null) {
cookie = new MutableNewCookie(name, value);
} else {
- final String param = name.toLowerCase();
+ final String param = name.toLowerCase(Locale.ROOT);
if (param.startsWith("comment")) {
cookie.comment = value;
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/HttpHeaderReader.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/HttpHeaderReader.java
index 25f6962..dacd743 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/HttpHeaderReader.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/HttpHeaderReader.java
@@ -24,6 +24,7 @@
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -291,7 +292,7 @@
}
// Get the parameter name
- String name = reader.nextToken().toString().toLowerCase();
+ String name = reader.nextToken().toString().toLowerCase(Locale.ROOT);
reader.nextSeparator('=');
// Get the parameter value
String value;
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/InboundMessageContext.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/InboundMessageContext.java
index 026fd69..a8ba51c 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/InboundMessageContext.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/InboundMessageContext.java
@@ -539,7 +539,7 @@
return Collections.emptySet();
}
try {
- return new HashSet<String>(HttpHeaderReader.readStringList(allowed.toUpperCase()));
+ return new HashSet<String>(HttpHeaderReader.readStringList(allowed.toUpperCase(Locale.ROOT)));
} catch (java.text.ParseException e) {
throw exception(HttpHeaders.ALLOW, allowed, e);
}
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/MessageBodyFactory.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/MessageBodyFactory.java
index 73551ca..f8d31a2 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/MessageBodyFactory.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/MessageBodyFactory.java
@@ -34,6 +34,7 @@
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -131,7 +132,7 @@
@Override
public int hash(final MediaType mt) {
// treat compatible types as equal
- return mt.getType().toLowerCase().hashCode() + mt.getSubtype().toLowerCase().hashCode();
+ return mt.getType().toLowerCase(Locale.ROOT).hashCode() + mt.getSubtype().toLowerCase(Locale.ROOT).hashCode();
}
};
/**
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/TracingUtils.java b/core-server/src/main/java/org/glassfish/jersey/server/TracingUtils.java
index 471a733..44635a9 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/TracingUtils.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/TracingUtils.java
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.HttpHeaders;
@@ -36,12 +37,12 @@
private static final List<String> SUMMARY_HEADERS = new ArrayList<>();
static {
- SUMMARY_HEADERS.add(HttpHeaders.ACCEPT.toLowerCase());
- SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_ENCODING.toLowerCase());
- SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_CHARSET.toLowerCase());
- SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_LANGUAGE.toLowerCase());
- SUMMARY_HEADERS.add(HttpHeaders.CONTENT_TYPE.toLowerCase());
- SUMMARY_HEADERS.add(HttpHeaders.CONTENT_LENGTH.toLowerCase());
+ SUMMARY_HEADERS.add(HttpHeaders.ACCEPT.toLowerCase(Locale.ROOT));
+ SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_ENCODING.toLowerCase(Locale.ROOT));
+ SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_CHARSET.toLowerCase(Locale.ROOT));
+ SUMMARY_HEADERS.add(HttpHeaders.ACCEPT_LANGUAGE.toLowerCase(Locale.ROOT));
+ SUMMARY_HEADERS.add(HttpHeaders.CONTENT_TYPE.toLowerCase(Locale.ROOT));
+ SUMMARY_HEADERS.add(HttpHeaders.CONTENT_LENGTH.toLowerCase(Locale.ROOT));
}
private static final TracingConfig DEFAULT_CONFIGURATION_TYPE = TracingConfig.OFF;
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/filter/HttpMethodOverrideFilter.java b/core-server/src/main/java/org/glassfish/jersey/server/filter/HttpMethodOverrideFilter.java
index b4fc462..6a583ce 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/filter/HttpMethodOverrideFilter.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/filter/HttpMethodOverrideFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -17,6 +17,7 @@
package org.glassfish.jersey.server.filter;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -228,7 +229,7 @@
return null;
}
value = value.trim();
- return value.length() == 0 ? null : value.toUpperCase();
+ return value.length() == 0 ? null : value.toUpperCase(Locale.ROOT);
}
@Override
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/internal/scanning/PackageNamesScanner.java b/core-server/src/main/java/org/glassfish/jersey/server/internal/scanning/PackageNamesScanner.java
index 825c0c6..edabd3d 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/internal/scanning/PackageNamesScanner.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/internal/scanning/PackageNamesScanner.java
@@ -25,6 +25,7 @@
import java.security.AccessController;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import org.glassfish.jersey.internal.OsgiRegistry;
@@ -133,7 +134,7 @@
private void add(final UriSchemeResourceFinderFactory uriSchemeResourceFinderFactory) {
for (final String scheme : uriSchemeResourceFinderFactory.getSchemes()) {
- finderFactories.put(scheme.toLowerCase(), uriSchemeResourceFinderFactory);
+ finderFactories.put(scheme.toLowerCase(Locale.ROOT), uriSchemeResourceFinderFactory);
}
}
@@ -254,7 +255,7 @@
}
private void addResourceFinder(final URI u) {
- final UriSchemeResourceFinderFactory finderFactory = finderFactories.get(u.getScheme().toLowerCase());
+ final UriSchemeResourceFinderFactory finderFactory = finderFactories.get(u.getScheme().toLowerCase(Locale.ROOT));
if (finderFactory != null) {
compositeResourceFinder.push(finderFactory.create(u, recursive));
} else {
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/model/ResourceMethod.java b/core-server/src/main/java/org/glassfish/jersey/server/model/ResourceMethod.java
index a57fd26..d76a280 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/model/ResourceMethod.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/model/ResourceMethod.java
@@ -26,6 +26,7 @@
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
@@ -578,7 +579,7 @@
this.managedAsync = managedAsync;
this.type = JaxrsType.classify(httpMethod);
- this.httpMethod = (httpMethod == null) ? httpMethod : httpMethod.toUpperCase();
+ this.httpMethod = (httpMethod == null) ? httpMethod : httpMethod.toUpperCase(Locale.ROOT);
this.consumedTypes = Collections.unmodifiableList(new ArrayList<>(consumedTypes));
this.producedTypes = Collections.unmodifiableList(new ArrayList<>(producedTypes));
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/config/WadlGeneratorLoader.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/config/WadlGeneratorLoader.java
index f61bc40..ae7ea97 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/config/WadlGeneratorLoader.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/config/WadlGeneratorLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Locale;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.logging.Level;
@@ -147,7 +148,7 @@
final Class<?> osgiConfigClass) throws Exception {
Callback result = null;
- final String methodName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
+ final String methodName = "set" + propertyName.substring(0, 1).toUpperCase(Locale.ROOT) + propertyName.substring(1);
final Method method = getMethodByName(methodName, generator.getClass());
if (method.getParameterTypes().length != 1) {
throw new RuntimeException(
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlUtils.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlUtils.java
index d96a885..144644d 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlUtils.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -18,6 +18,7 @@
import java.io.InputStream;
import java.util.List;
+import java.util.Locale;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.core.UriInfo;
@@ -96,7 +97,7 @@
}
final String value = simple.get(0).trim();
- return value.isEmpty() || value.toUpperCase().equals("TRUE");
+ return value.isEmpty() || value.toUpperCase(Locale.ROOT).equals("TRUE");
}
return false;
}
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
index 55d67c2..339415e 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -28,6 +28,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -96,7 +97,7 @@
this.supportedExtensions =
Arrays.stream(supportedExtensions)
.map(input -> {
- input = input.toLowerCase();
+ input = input.toLowerCase(Locale.ROOT);
return input.startsWith(".") ? input : "." + input;
})
.collect(Collectors.toSet());
@@ -221,7 +222,7 @@
* @return collection of possible template paths.
*/
private Collection<String> getTemplatePaths(final String name) {
- final String lowerName = name.toLowerCase();
+ final String lowerName = name.toLowerCase(Locale.ROOT);
final String templatePath = basePath.endsWith("/") ? basePath + name.substring(1) : basePath + name;
// Check whether the given name ends with supported suffix.
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/NounInflector.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/NounInflector.java
index 8a23ec9..21fab06 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/NounInflector.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/NounInflector.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -764,7 +765,7 @@
*/
public void addUncountable(final String word) {
- uncountables.add(0, word.toLowerCase());
+ uncountables.add(0, word.toLowerCase(Locale.ROOT));
}
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/file/DefaultMediaTypePredictor.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/file/DefaultMediaTypePredictor.java
index 8833ad4..56eb715 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/file/DefaultMediaTypePredictor.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/file/DefaultMediaTypePredictor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -17,6 +17,7 @@
package org.glassfish.jersey.media.multipart.file;
import java.io.File;
+import java.util.Locale;
import javax.ws.rs.core.MediaType;
@@ -139,7 +140,7 @@
CommonMediaTypes[] types = CommonMediaTypes.values();
if (types != null && types.length > 0) {
for (CommonMediaTypes type : types) {
- if (fileName.toLowerCase().endsWith(type.getExtension())) {
+ if (fileName.toLowerCase(Locale.ROOT).endsWith(type.getExtension())) {
return type.getMediaType();
}
}
diff --git a/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/OAuth1Signature.java b/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/OAuth1Signature.java
index f5272f9..2df7f36 100644
--- a/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/OAuth1Signature.java
+++ b/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/OAuth1Signature.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -25,6 +25,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import javax.inject.Inject;
@@ -208,7 +209,8 @@
if (url == null) {
throw new OAuth1SignatureException();
}
- final StringBuilder builder = new StringBuilder(url.getProtocol()).append("://").append(url.getHost().toLowerCase());
+ final StringBuilder builder = new StringBuilder(url.getProtocol()).append("://")
+ .append(url.getHost().toLowerCase(Locale.ROOT));
final int port = url.getPort();
if (port > 0 && port != url.getDefaultPort()) {
builder.append(':').append(port);
@@ -232,7 +234,7 @@
private String baseString(final OAuth1Request request,
final OAuth1Parameters params) throws OAuth1SignatureException {
// HTTP request method
- final StringBuilder builder = new StringBuilder(request.getRequestMethod().toUpperCase());
+ final StringBuilder builder = new StringBuilder(request.getRequestMethod().toUpperCase(Locale.ROOT));
// request URL, see section 3.4.1.2 http://tools.ietf.org/html/draft-hammer-oauth-10#section-3.4.1.2
builder.append('&').append(UriComponent.encode(constructRequestURL(request).toASCIIString(),
diff --git a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
index e39c17e..f9979d3 100644
--- a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
+++ b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -22,6 +22,7 @@
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.UUID;
@@ -263,10 +264,12 @@
setDefaultProperty(OAuth2Parameters.CLIENT_SECRET, clientIdentifier.getClientSecret(), accessTokenProperties,
refreshTokenProperties);
- setDefaultProperty(OAuth2Parameters.GrantType.key, OAuth2Parameters.GrantType.AUTHORIZATION_CODE.name().toLowerCase(),
+ setDefaultProperty(OAuth2Parameters.GrantType.key,
+ OAuth2Parameters.GrantType.AUTHORIZATION_CODE.name().toLowerCase(Locale.ROOT),
accessTokenProperties);
- setDefaultProperty(OAuth2Parameters.GrantType.key, OAuth2Parameters.GrantType.REFRESH_TOKEN.name().toLowerCase(),
+ setDefaultProperty(OAuth2Parameters.GrantType.key,
+ OAuth2Parameters.GrantType.REFRESH_TOKEN.name().toLowerCase(Locale.ROOT),
refreshTokenProperties);
}