Replace String UTF-8 with a charset Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/OsgiRegistry.java b/core-common/src/main/java/org/glassfish/jersey/internal/OsgiRegistry.java index 77ab1e1..e69569e 100644 --- a/core-common/src/main/java/org/glassfish/jersey/internal/OsgiRegistry.java +++ b/core-common/src/main/java/org/glassfish/jersey/internal/OsgiRegistry.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2024 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025 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 @@ -57,6 +57,8 @@ import org.osgi.framework.FrameworkUtil; import org.osgi.framework.SynchronousBundleListener; +import static java.nio.charset.StandardCharsets.UTF_8; + /** * Utility class to deal with OSGi runtime specific behavior. * This is mainly to handle META-INF/services lookup @@ -210,7 +212,7 @@ if (LOGGER.isLoggable(Level.FINEST)) { LOGGER.log(Level.FINEST, "Loading providers for SPI: {0}", spi); } - reader = new BufferedReader(new InputStreamReader(spiRegistryUrl.openStream(), "UTF-8")); + reader = new BufferedReader(new InputStreamReader(spiRegistryUrl.openStream(), UTF_8)); String providerClassName; final List<Class<?>> providerClasses = new ArrayList<Class<?>>();
diff --git a/core-common/src/main/java/org/glassfish/jersey/uri/UriComponent.java b/core-common/src/main/java/org/glassfish/jersey/uri/UriComponent.java index 523614c..b543d01 100644 --- a/core-common/src/main/java/org/glassfish/jersey/uri/UriComponent.java +++ b/core-common/src/main/java/org/glassfish/jersey/uri/UriComponent.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 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 @@ -16,13 +16,11 @@ package org.glassfish.jersey.uri; -import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLDecoder; import java.nio.ByteBuffer; import java.nio.Buffer; import java.nio.CharBuffer; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; @@ -34,6 +32,8 @@ import org.glassfish.jersey.internal.LocalizationMessages; import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap; +import static java.nio.charset.StandardCharsets.UTF_8; + /** * Utility class for validating, encoding and decoding components * of a URI. @@ -333,7 +333,7 @@ private static void appendUTF8EncodedCharacter(final StringBuilder sb, final int codePoint) { final CharBuffer chars = CharBuffer.wrap(Character.toChars(codePoint)); - final ByteBuffer bytes = UTF_8_CHARSET.encode(chars); + final ByteBuffer bytes = UTF_8.encode(chars); while (bytes.hasRemaining()) { appendPercentEncodedOctet(sb, bytes.get() & 0xFF); @@ -424,8 +424,6 @@ return table; } - private static final Charset UTF_8_CHARSET = Charset.forName("UTF-8"); - /** * Decodes characters of a string that are percent-encoded octets using * UTF-8 decoding (if needed). @@ -565,19 +563,14 @@ @SuppressWarnings("StatementWithEmptyBody") private static void decodeQueryParam(final MultivaluedMap<String, String> params, final String param, final boolean decodeNames, final boolean decodeValues) { - try { - final int equals = param.indexOf('='); - if (equals > 0) { - params.add((decodeNames) ? URLDecoder.decode(param.substring(0, equals), "UTF-8") : param.substring(0, equals), - (decodeValues) ? URLDecoder.decode(param.substring(equals + 1), "UTF-8") : param.substring(equals + 1)); - } else if (equals == 0) { - // no key declared, ignore - } else if (param.length() > 0) { - params.add((decodeNames) ? URLDecoder.decode(param, "UTF-8") : param, ""); - } - } catch (final UnsupportedEncodingException ex) { - // This should never occur - throw new IllegalArgumentException(ex); + final int equals = param.indexOf('='); + if (equals > 0) { + params.add((decodeNames) ? URLDecoder.decode(param.substring(0, equals), UTF_8) : param.substring(0, equals), + (decodeValues) ? URLDecoder.decode(param.substring(equals + 1), UTF_8) : param.substring(equals + 1)); + } else if (equals == 0) { + // no key declared, ignore + } else if (param.length() > 0) { + params.add((decodeNames) ? URLDecoder.decode(param, UTF_8) : param, ""); } } @@ -853,7 +846,7 @@ return i + 2; } else { // - final CharBuffer cb = UTF_8_CHARSET.decode(bb); + final CharBuffer cb = UTF_8.decode(bb); sb.append(cb.toString()); return i + ((Buffer) bb).limit() * 3 - 1; }
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java index 57468eb..aeb1f46 100644 --- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java +++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 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.InvocationTargetException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.security.AccessController; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; @@ -360,7 +361,7 @@ for (final StreamResult result : results) { final CharArrayWriter writer = (CharArrayWriter) result.getWriter(); - final byte[] contents = writer.toString().getBytes("UTF8"); + final byte[] contents = writer.toString().getBytes(StandardCharsets.UTF_8); extraFiles.put( result.getSystemId(), new ApplicationDescription.ExternalGrammar(
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateHelper.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateHelper.java index 4be0e26..27c8df5 100644 --- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateHelper.java +++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateHelper.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025 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.lang.annotation.Annotation; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -44,8 +45,6 @@ */ public final class TemplateHelper { - private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8"); - /** * Return an absolute path to the given class where segments are separated using {@code delim} character and {@code path} * is appended to this path. @@ -138,7 +137,7 @@ final String enc = PropertiesHelper.getValue(configuration.getProperties(), MvcFeature.ENCODING + suffix, String.class, null); if (enc == null) { - return DEFAULT_ENCODING; + return StandardCharsets.UTF_8; } else { return Charset.forName(enc); }
diff --git a/incubator/html-json/src/main/java/org/glassfish/jersey/media/htmljson/HtmlJsonProvider.java b/incubator/html-json/src/main/java/org/glassfish/jersey/media/htmljson/HtmlJsonProvider.java index f130472..1a9c6f4 100644 --- a/incubator/html-json/src/main/java/org/glassfish/jersey/media/htmljson/HtmlJsonProvider.java +++ b/incubator/html-json/src/main/java/org/glassfish/jersey/media/htmljson/HtmlJsonProvider.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 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.lang.reflect.Array; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -126,7 +127,7 @@ } out.write(']'); } else { - out.write(t.toString().getBytes("UTF-8")); + out.write(t.toString().getBytes(StandardCharsets.UTF_8)); } }
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonMarshaller.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonMarshaller.java index 6e137af..be2bd61 100644 --- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonMarshaller.java +++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonMarshaller.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 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,7 +20,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; @@ -40,8 +40,6 @@ */ public class BaseJsonMarshaller implements JettisonMarshaller, JettisonConfigured { - private static final Charset UTF8 = Charset.forName("UTF-8"); - protected final Marshaller jaxbMarshaller; protected JettisonConfig jsonConfig; @@ -67,7 +65,7 @@ throw new IllegalArgumentException("The output stream is null"); } - marshallToJSON(o, new OutputStreamWriter(outputStream, UTF8)); + marshallToJSON(o, new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)); } public void marshallToJSON(Object o, Writer writer) throws JAXBException {
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonUnmarshaller.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonUnmarshaller.java index 0aa13c2..a5bdaeb 100644 --- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonUnmarshaller.java +++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/BaseJsonUnmarshaller.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 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,7 +19,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBElement; @@ -41,8 +41,6 @@ */ public class BaseJsonUnmarshaller implements JettisonUnmarshaller, JettisonConfigured { - private static final Charset UTF8 = Charset.forName("UTF-8"); - protected final Unmarshaller jaxbUnmarshaller; protected final JettisonConfig jsonConfig; @@ -62,7 +60,7 @@ // JsonUnmarshaller public <T> T unmarshalFromJSON(InputStream inputStream, Class<T> expectedType) throws JAXBException { - return unmarshalFromJSON(new InputStreamReader(inputStream, UTF8), expectedType); + return unmarshalFromJSON(new InputStreamReader(inputStream, StandardCharsets.UTF_8), expectedType); } @SuppressWarnings("unchecked") @@ -75,7 +73,7 @@ } public <T> JAXBElement<T> unmarshalJAXBElementFromJSON(InputStream inputStream, Class<T> declaredType) throws JAXBException { - return unmarshalJAXBElementFromJSON(new InputStreamReader(inputStream, UTF8), declaredType); + return unmarshalJAXBElementFromJSON(new InputStreamReader(inputStream, StandardCharsets.UTF_8), declaredType); } public <T> JAXBElement<T> unmarshalJAXBElementFromJSON(Reader reader, Class<T> declaredType) throws JAXBException {
diff --git a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventOutput.java b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventOutput.java index 4d63506..13306bd 100644 --- a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventOutput.java +++ b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventOutput.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025 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 @@ -16,10 +16,10 @@ package org.glassfish.jersey.media.sse; -import java.nio.charset.Charset; - import org.glassfish.jersey.server.ChunkedOutput; +import java.nio.charset.StandardCharsets; + /** * Outbound Server-Sent Events channel. * @@ -31,7 +31,7 @@ */ public class EventOutput extends ChunkedOutput<OutboundEvent> { // encoding does not matter for lower ASCII characters - private static final byte[] SSE_EVENT_DELIMITER = "\n".getBytes(Charset.forName("UTF-8")); + private static final byte[] SSE_EVENT_DELIMITER = "\n".getBytes(StandardCharsets.UTF_8); /** * Create new outbound Server-Sent Events channel.
diff --git a/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/HmaSha1Method.java b/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/HmaSha1Method.java index ee770cd..0809552 100644 --- a/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/HmaSha1Method.java +++ b/security/oauth1-signature/src/main/java/org/glassfish/jersey/oauth1/signature/HmaSha1Method.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025 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 @@ -16,7 +16,6 @@ package org.glassfish.jersey.oauth1.signature; -import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -25,6 +24,8 @@ import org.glassfish.jersey.uri.UriComponent; +import static java.nio.charset.StandardCharsets.UTF_8; + /** * An OAuth signature method that implements HMAC-SHA1. @@ -78,11 +79,7 @@ byte[] key; - try { - key = buf.toString().getBytes("UTF-8"); - } catch (UnsupportedEncodingException uee) { - throw new IllegalStateException(uee); - } + key = buf.toString().getBytes(UTF_8); SecretKeySpec spec = new SecretKeySpec(key, SIGNATURE_ALGORITHM);