From dde8d5ce9ea8c969b1fd58311fe5f9c98586c1ef Mon Sep 17 00:00:00 2001 From: Udo Schnurpfeil Date: Wed, 9 Oct 2024 15:55:56 +0200 Subject: [PATCH 1/3] refactor: forbiddenapis Enhance code quality with Maven plugin: forbiddenapis issue: TOBAGO-2357 --- pom.xml | 45 +++++++++++++++++++ .../tobago/convert/DurationConverter.java | 11 ++--- .../internal/behavior/DeltaStateHelper.java | 1 + .../renderkit/renderer/ToastsRenderer.java | 4 +- .../apache/myfaces/tobago/layout/Measure.java | 5 ++- .../myfaces/tobago/model/SuggestFilter.java | 6 ++- .../myfaces/tobago/renderkit/css/Icons.java | 3 +- .../tobago/util/DebugPhaseListener.java | 14 +++--- .../config/TobagoConfigParserUnitTest.java | 3 +- .../renderkit/renderer/RendererTestBase.java | 3 +- .../tobago/renderkit/html/AriasUnitTest.java | 3 +- .../html/DataAttributesUnitTest.java | 4 +- .../renderkit/html/HtmlElementsUnitTest.java | 5 ++- .../tobago/example/demo/AstroData.java | 3 +- .../tobago/example/demo/CategoryTree.java | 5 ++- .../example/demo/CurrentValueController.java | 4 +- .../tobago/example/demo/EventController.java | 4 +- .../example/demo/InputSuggestController.java | 4 +- .../tobago/example/demo/KillSession.java | 5 ++- .../example/demo/LoggingController.java | 6 +-- .../tobago/example/demo/ManifestReader.java | 3 +- .../tobago/example/demo/NavigationTree.java | 11 ++--- .../tobago/example/demo/PanelController.java | 3 +- .../example/demo/ProgressController.java | 13 +++--- .../tobago/example/demo/RoleController.java | 1 - .../tobago/example/demo/SearchIndex.java | 3 +- .../example/demo/WebSocketController.java | 1 - .../tobago/apt/generate/ClassUtils.java | 3 +- .../apt/processor/ClassesGenerator.java | 4 +- 29 files changed, 122 insertions(+), 58 deletions(-) diff --git a/pom.xml b/pom.xml index b5cff44885..c407e85001 100644 --- a/pom.xml +++ b/pom.xml @@ -443,6 +443,51 @@ + + de.thetaphi + forbiddenapis + 3.8 + + + false + + + + + + + + jdk-non-portable + + jdk-reflection + + + + + + + + + check + testCheck + + + + diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java index a53f2c4956..db5d760dc3 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java @@ -28,12 +28,10 @@ import jakarta.faces.context.FacesContext; import jakarta.faces.convert.Converter; import jakarta.faces.convert.ConverterException; - import java.lang.invoke.MethodHandles; -import java.text.DecimalFormat; -import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.StringTokenizer; /** @@ -81,7 +79,6 @@ public String getAsString( final double factor = getUnitFactor(component); aDouble = aDouble * factor; - final NumberFormat format = new DecimalFormat("00"); long value = Double.valueOf(aDouble).longValue(); final int seconds = (int) (value % 60); value = value / 60; @@ -90,11 +87,11 @@ public String getAsString( final String string; if (value > 0) { string = (negative ? "-" : "") + value + ":" - + format.format(minutes) + ":" - + format.format(seconds); + + String.format(Locale.ROOT, "%02d", minutes) + ":" + + String.format(Locale.ROOT, "%02d", seconds); } else { string = (negative ? "-" : "") + minutes + ":" - + format.format(seconds); + + String.format(Locale.ROOT, "%02d", seconds); } LOG.debug("string = '{}'", string); return string; diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java index 7a302ecc45..202ca2f17c 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java @@ -27,6 +27,7 @@ import jakarta.faces.component.UIComponentBase; import jakarta.faces.context.FacesContext; import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java index e7e0d58f18..9518915476 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java @@ -19,8 +19,6 @@ package org.apache.myfaces.tobago.internal.renderkit.renderer; -import jakarta.faces.component.UIComponent; -import jakarta.faces.context.FacesContext; import org.apache.myfaces.tobago.application.Toast; import org.apache.myfaces.tobago.component.Facets; import org.apache.myfaces.tobago.context.Markup; @@ -45,6 +43,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.faces.component.UIComponent; +import jakarta.faces.context.FacesContext; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.time.LocalTime; diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java index 9f24dc60fd..48ed36a358 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java @@ -25,6 +25,7 @@ import java.io.Serializable; import java.lang.invoke.MethodHandles; +import java.util.Locale; /** * In PDLs the class {@link org.apache.myfaces.tobago.layout.MeasureEditor} will convert the string literals. @@ -113,7 +114,7 @@ public static Measure valueOf(final String s, final Unit defaultUnit) { for (int i = 4; i >= 2; i--) { final int pos = length - i; if (length >= i && Character.isLetter(s.charAt(pos))) { - return new Measure(s.substring(0, pos), Unit.valueOf(s.substring(pos).toUpperCase())); + return new Measure(s.substring(0, pos), Unit.valueOf(s.substring(pos).toUpperCase(Locale.ROOT))); } } return new Measure(s, defaultUnit); @@ -214,7 +215,7 @@ public enum Unit { private final String value; Unit() { - value = name().equals("PERCENT") ? "%" : name().toLowerCase(); + value = name().equals("PERCENT") ? "%" : name().toLowerCase(Locale.ROOT); } String getValue() { diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java index e616e61eaa..ea47a21aed 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java @@ -19,6 +19,8 @@ package org.apache.myfaces.tobago.model; +import java.util.Locale; + public enum SuggestFilter { all, @@ -30,13 +32,13 @@ public enum SuggestFilter { public static final String CONTAINS = "contains"; public String getValue() { - return name().toLowerCase(); + return name().toLowerCase(Locale.ROOT); } public static SuggestFilter parse(final String string) { if (string == null) { return null; } - return valueOf(string.toUpperCase()); + return valueOf(string.toUpperCase(Locale.ROOT)); } } diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java index d89a12f18f..342f1f8fd6 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import java.lang.invoke.MethodHandles; +import java.util.Locale; import java.util.regex.Pattern; /** @@ -62,7 +63,7 @@ public enum Icons implements CssItem { private final String clazz; Icons() { - this.clazz = "bi-" + name().toLowerCase().replaceAll("_", "-"); + this.clazz = "bi-" + name().toLowerCase(Locale.ROOT).replaceAll("_", "-"); } @Override diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java index 8d9116e861..a1ee40b0bc 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java @@ -31,10 +31,10 @@ import jakarta.faces.event.PhaseListener; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - import java.lang.invoke.MethodHandles; import java.text.MessageFormat; import java.util.Iterator; +import java.util.Locale; import java.util.Map; public class DebugPhaseListener implements PhaseListener { @@ -84,10 +84,14 @@ public void afterPhase(final PhaseEvent phaseEvent) { for (final Iterator messageIterator = facesContext.getMessages(clientId); messageIterator.hasNext(); ) { final FacesMessage msg = messageIterator.next(); - LOG.info(MessageFormat.format("Faces message found." - + "\n Component: {0} \n Severity : {1}" - + "\n Summary : {2} \n Detail : {3}", - clientId, msg.getSeverity(), msg.getSummary(), msg.getDetail())); + MessageFormat messageFormat = new MessageFormat(""" + Faces message found. + Component: {0} + Severity : {1} + Summary : {2} + Detail : {3}""", Locale.ROOT); + LOG.info(messageFormat.format(new Object[]{ + clientId, msg.getSeverity(), msg.getSummary(), msg.getDetail()})); } } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java index 33e08ddfd5..c9fab83e8f 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -176,7 +177,7 @@ public void testUniqueness() throws IllegalAccessException { // check hash code values for (final Field field : fields) { final int hash = field.getInt(dummy); - final String name = field.getName().toLowerCase().replace('_', '-'); + final String name = field.getName().toLowerCase(Locale.ROOT).replace('_', '-'); Assertions.assertEquals(name.hashCode(), hash, "Are the constants correct?"); } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java index ccedb060c6..9bea3c614e 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -43,7 +44,7 @@ protected String loadHtml(final String fileName) throws IOException { if (is == null) { throw new FileNotFoundException(fileName); } - try (InputStreamReader isr = new InputStreamReader(is); + try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr)) { final String xml = reader.lines().collect(Collectors.joining(System.lineSeparator())) .replaceAll("", "") diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java index 8514295984..dea688a00a 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.Test; import java.lang.reflect.Field; +import java.util.Locale; public class AriasUnitTest { @@ -36,7 +37,7 @@ public void testAttributeNames() throws IllegalAccessException { final String extension = value.substring("aria-".length()); final String name = field.getName(); - Assertions.assertEquals(name, extension.toUpperCase()); + Assertions.assertEquals(name, extension.toUpperCase(Locale.ROOT)); } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java index 1cef0c7e28..5083d58381 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java @@ -22,6 +22,8 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.Locale; + public class DataAttributesUnitTest { @Test @@ -41,7 +43,7 @@ public void testAttributeNames() throws IllegalAccessException { ? value.substring("data-tobago-".length()) : value.substring("data-".length()); final String name = d.name(); - Assertions.assertEquals(name, extension.toUpperCase().replaceAll("-", "_")); + Assertions.assertEquals(name, extension.toUpperCase(Locale.ROOT).replaceAll("-", "_")); } } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java index e1de0bffed..a9c974f089 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; public class HtmlElementsUnitTest { @@ -39,10 +40,10 @@ public void testNames() throws IllegalAccessException { final String value = element.getValue(); Assertions.assertEquals( value, - element.name().toLowerCase().replaceAll("_", "-"), + element.name().toLowerCase(Locale.ROOT).replaceAll("_", "-"), "Check to lower: '" + element + "'"); Assertions.assertEquals( - value.toUpperCase().replaceAll("-", "_"), + value.toUpperCase(Locale.ROOT).replaceAll("-", "_"), element.name(), "Check to upper: '" + element + "'"); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java index 3ccfc3e893..fb89714149 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java @@ -30,6 +30,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.io.InputStreamReader; import java.io.Serializable; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -53,7 +54,7 @@ public class AstroData implements Serializable { public AstroData() { final InputStreamReader reader - = new InputStreamReader(AstroData.class.getResourceAsStream("astro-data.json")); + = new InputStreamReader(AstroData.class.getResourceAsStream("astro-data.json"), StandardCharsets.UTF_8); Gson gson = new GsonBuilder().create(); dataList = gson.fromJson(reader, new TypeToken>() { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java index adde05e73d..596ed723bc 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java @@ -26,6 +26,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; public class CategoryTree { @@ -34,8 +35,8 @@ private CategoryTree() { public static DefaultMutableTreeNode createSample() { - final InputStreamReader reader - = new InputStreamReader(AstroData.class.getResourceAsStream("category-tree.json")); + final InputStreamReader reader = new InputStreamReader( + AstroData.class.getResourceAsStream("category-tree.json"), StandardCharsets.UTF_8); final Gson gson = new GsonBuilder().create(); final CategoryNode node = gson.fromJson(reader, new TypeToken() { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java index c4ce9a0a2f..a182145c9d 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java @@ -21,9 +21,9 @@ import jakarta.enterprise.context.RequestScoped; import jakarta.inject.Named; - import java.time.LocalDate; import java.util.Currency; +import java.util.Locale; @Named @RequestScoped @@ -41,7 +41,7 @@ public CurrentValueController() { } public String toUpperCase(final String text) { - return text != null ? text.toUpperCase() : null; + return text != null ? text.toUpperCase(Locale.ROOT) : null; } public LocalDate plus50(final LocalDate base) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java index 686e651042..b3d6b2a8f5 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java @@ -82,12 +82,12 @@ import jakarta.faces.event.AjaxBehaviorEvent; import jakarta.faces.event.ValueChangeEvent; import jakarta.inject.Named; - import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.TreeSet; @@ -241,7 +241,7 @@ public static class EventsOnComponent implements Serializable { EventsOnComponent(final UIComponentBase component) { final String simpleName = component.getClass().getSimpleName(); - tagName = simpleName.substring(2, 3).toLowerCase() + simpleName.substring(3); + tagName = simpleName.substring(2, 3).toLowerCase(Locale.ROOT) + simpleName.substring(3); if (component.getEventNames() != null) { this.eventNames.addAll(component.getEventNames()); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java index e5925bd6b5..4119a2c95e 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java @@ -30,11 +30,11 @@ import jakarta.faces.component.UIInput; import jakarta.faces.model.SelectItem; import jakarta.inject.Named; - import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; +import java.util.Locale; @SessionScoped @Named @@ -166,7 +166,7 @@ private List getSuggestItems(final String prefix, final boolean items.add(item); } } else { - if (dataRow[2].toLowerCase().startsWith(prefix.toLowerCase())) { + if (dataRow[2].toLowerCase(Locale.ROOT).startsWith(prefix.toLowerCase(Locale.ROOT))) { final AutoSuggestItem item = new AutoSuggestItem(); item.setLabel(dataRow[0]); item.setValue(dataRow[2]); diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java index 10ea28caa0..5bacd0c9f4 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java @@ -27,6 +27,7 @@ import jakarta.servlet.http.HttpSession; import java.io.IOException; +import java.nio.charset.StandardCharsets; /** * Simple Servlet to kill the user session. @@ -40,9 +41,9 @@ protected void doGet(final HttpServletRequest request, final HttpServletResponse final HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); - response.getOutputStream().write("The user session was killed!".getBytes()); + response.getOutputStream().write("The user session was killed!".getBytes(StandardCharsets.UTF_8)); } else { - response.getOutputStream().write("There is no user session to kill!".getBytes()); + response.getOutputStream().write("There is no user session to kill!".getBytes(StandardCharsets.UTF_8)); } } } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java index 0d1d87dfb2..ac560b576b 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java @@ -25,12 +25,12 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Named; - import java.io.PrintStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; import java.util.List; +import java.util.Locale; /** * Provides the possibility to get information about various logging APIs available in the current setup. @@ -273,7 +273,7 @@ private boolean checkLevel(final String category, final String level) } if (SLF4J.equals(id) || JCL.equals(id)) { - final String methodName = "is" + level.substring(0, 1).toUpperCase() + level.substring(1) + "Enabled"; + final String methodName = "is" + level.substring(0, 1).toUpperCase(Locale.ROOT) + level.substring(1) + "Enabled"; final Object hasLevel = c.getClass().getMethod(methodName).invoke(c); return (Boolean) hasLevel; } @@ -287,7 +287,7 @@ private boolean checkLevelGeneric( final Class levelClass = Class.forName(clazz); final Method isLoggable = c.getClass().getMethod(enabledMethod, levelClass); final Method parse = levelClass.getMethod(levelMethod, String.class); - final Object levelObject = parse.invoke(null, level.toUpperCase()); + final Object levelObject = parse.invoke(null, level.toUpperCase(Locale.ROOT)); final Object hasLevel = isLoggable.invoke(c, levelObject); return (Boolean) hasLevel; } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java index 905a4cabed..6b8fc45d66 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java @@ -35,6 +35,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Enumeration; +import java.util.Locale; import java.util.TimeZone; import java.util.jar.Attributes; import java.util.jar.Manifest; @@ -75,7 +76,7 @@ public ManifestReader() { jar.add(new ManifestEntry(key.toString(), attributes.get(key).toString())); } if (name.startsWith("tobago-core")) { - final DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + final DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT); format.setTimeZone(TimeZone.getTimeZone("UTC")); try { buildTime = format.parse(attributes.getValue("Build-Time")); diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java index ae0849aef4..96b746bd75 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java @@ -19,6 +19,10 @@ package org.apache.myfaces.tobago.example.demo; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; import jakarta.faces.context.ExternalContext; @@ -26,10 +30,6 @@ import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.servlet.ServletContext; -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -41,6 +41,7 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; @@ -102,7 +103,7 @@ protected void postConstruct() { public List search(final String searchString) { List result = new ArrayList<>(20); for (String s : searchIndex.keySet()) { - if (s.contains(searchString.toLowerCase())) { + if (s.contains(searchString.toLowerCase(Locale.ROOT))) { result.add(searchIndex.get(s)); } // if (result.size() >= 20) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java index 8851490e6c..ce0ba76f80 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java @@ -25,6 +25,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @RequestScoped @Named @@ -37,7 +38,7 @@ public Date getCurrentDate() { } public boolean isOddDecaSecond() { - String second = new SimpleDateFormat("ss").format(getCurrentDate()); + String second = new SimpleDateFormat("ss", Locale.ROOT).format(getCurrentDate()); return second.startsWith("1") || second.startsWith("3") || second.startsWith("5"); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java index 6cfb5e9fca..a7602421a5 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java @@ -27,6 +27,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @SessionScoped @Named @@ -57,17 +58,17 @@ public Date getCurrentDate() { } public double getCurrentHours() { - final SimpleDateFormat sdf = new SimpleDateFormat("HH"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("HH", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } public double getCurrentMinutes() { - final SimpleDateFormat sdf = new SimpleDateFormat("mm"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("mm", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } public double getCurrentSeconds() { - final SimpleDateFormat sdf = new SimpleDateFormat("ss"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("ss", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java index 9de70076f0..2ae3c13f37 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java @@ -22,7 +22,6 @@ import jakarta.annotation.security.RolesAllowed; import jakarta.enterprise.context.SessionScoped; import jakarta.inject.Named; - import java.io.Serializable; import java.time.LocalTime; diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java index ce4dc25550..6323f5b445 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java @@ -20,11 +20,12 @@ package org.apache.myfaces.tobago.example.demo; import java.util.HashMap; +import java.util.Locale; public class SearchIndex extends HashMap { public void add(NavigationNode node) { - String key = node.getLabel().toLowerCase(); + String key = node.getLabel().toLowerCase(Locale.ROOT); // XXX little hack to have more than one result with same name while (containsKey(key)) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java index f5170e3a03..014f85ffa2 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java @@ -27,7 +27,6 @@ import jakarta.faces.push.PushContext; import jakarta.inject.Inject; import jakarta.inject.Named; - import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.time.LocalTime; diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java index 2c1d3672c9..a41ca141cf 100644 --- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java +++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java @@ -20,6 +20,7 @@ package org.apache.myfaces.tobago.apt.generate; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class ClassUtils { @@ -60,7 +61,7 @@ public static String getSimpleName(final String qualifiedName) { public static String getSmallSimpleName(final String qualifiedName) { final String simpleName = getSimpleName(qualifiedName); if (simpleName != null && simpleName.length() > 2) { - return simpleName.substring(2, 3).toLowerCase() + simpleName.substring(3); + return simpleName.substring(2, 3).toLowerCase(Locale.ROOT) + simpleName.substring(3); } else { return simpleName; } diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java index 1884e3e370..c9bd7d9347 100644 --- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java +++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java @@ -19,7 +19,6 @@ package org.apache.myfaces.tobago.apt.processor; -import jakarta.faces.component.UIComponent; import org.antlr.stringtemplate.StringTemplate; import org.antlr.stringtemplate.StringTemplateGroup; import org.apache.myfaces.tobago.apt.annotation.Behavior; @@ -33,6 +32,7 @@ import org.apache.myfaces.tobago.apt.generate.ComponentPropertyInfo; import org.apache.myfaces.tobago.apt.generate.PropertyInfo; +import jakarta.faces.component.UIComponent; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; @@ -115,7 +115,7 @@ private void createTagOrComponent(final TypeElement declaration) throws IOExcept if (componentTag.generate()) { final Tag tag = declaration.getAnnotation(Tag.class); final String generic = "org.apache.myfaces.tobago.internal.component.AbstractUI" - + tag.name().substring(0, 1).toUpperCase() + tag.name().substring(1); + + tag.name().substring(0, 1).toUpperCase(Locale.ROOT) + tag.name().substring(1); final StringTemplate componentStringTemplate = componentStringTemplateGroup.getInstanceOf("component"); final ComponentInfo componentInfo = new ComponentInfo(declaration, componentTag); componentInfo.setSuperClass(generic); From 1c07eed717a115cc222a82c66d08073ffe1c0cc7 Mon Sep 17 00:00:00 2001 From: Udo Schnurpfeil Date: Wed, 9 Oct 2024 15:55:56 +0200 Subject: [PATCH 2/3] refactor: forbiddenapis Enhance code quality with Maven plugin: forbiddenapis issue: TOBAGO-2357 --- pom.xml | 45 +++++++++++++++++++ .../tobago/convert/DurationConverter.java | 11 ++--- .../renderkit/renderer/ToastsRenderer.java | 4 +- .../apache/myfaces/tobago/layout/Measure.java | 5 ++- .../myfaces/tobago/model/SuggestFilter.java | 6 ++- .../myfaces/tobago/renderkit/css/Icons.java | 3 +- .../tobago/util/DebugPhaseListener.java | 14 +++--- .../config/TobagoConfigParserUnitTest.java | 3 +- .../renderkit/renderer/RendererTestBase.java | 3 +- .../tobago/renderkit/html/AriasUnitTest.java | 3 +- .../html/DataAttributesUnitTest.java | 4 +- .../renderkit/html/HtmlElementsUnitTest.java | 5 ++- .../tobago/example/demo/AstroData.java | 3 +- .../tobago/example/demo/CategoryTree.java | 5 ++- .../example/demo/CurrentValueController.java | 4 +- .../tobago/example/demo/EventController.java | 4 +- .../example/demo/InputSuggestController.java | 4 +- .../tobago/example/demo/KillSession.java | 5 ++- .../example/demo/LoggingController.java | 7 +-- .../tobago/example/demo/ManifestReader.java | 3 +- .../tobago/example/demo/NavigationTree.java | 11 ++--- .../tobago/example/demo/PanelController.java | 3 +- .../example/demo/ProgressController.java | 13 +++--- .../tobago/example/demo/RoleController.java | 1 - .../tobago/example/demo/SearchIndex.java | 3 +- .../example/demo/WebSocketController.java | 1 - .../tobago/apt/generate/ClassUtils.java | 3 +- .../apt/processor/ClassesGenerator.java | 4 +- 28 files changed, 122 insertions(+), 58 deletions(-) diff --git a/pom.xml b/pom.xml index b5cff44885..c407e85001 100644 --- a/pom.xml +++ b/pom.xml @@ -443,6 +443,51 @@ + + de.thetaphi + forbiddenapis + 3.8 + + + false + + + + + + + + jdk-non-portable + + jdk-reflection + + + + + + + + + check + testCheck + + + + diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java index a53f2c4956..db5d760dc3 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/convert/DurationConverter.java @@ -28,12 +28,10 @@ import jakarta.faces.context.FacesContext; import jakarta.faces.convert.Converter; import jakarta.faces.convert.ConverterException; - import java.lang.invoke.MethodHandles; -import java.text.DecimalFormat; -import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.StringTokenizer; /** @@ -81,7 +79,6 @@ public String getAsString( final double factor = getUnitFactor(component); aDouble = aDouble * factor; - final NumberFormat format = new DecimalFormat("00"); long value = Double.valueOf(aDouble).longValue(); final int seconds = (int) (value % 60); value = value / 60; @@ -90,11 +87,11 @@ public String getAsString( final String string; if (value > 0) { string = (negative ? "-" : "") + value + ":" - + format.format(minutes) + ":" - + format.format(seconds); + + String.format(Locale.ROOT, "%02d", minutes) + ":" + + String.format(Locale.ROOT, "%02d", seconds); } else { string = (negative ? "-" : "") + minutes + ":" - + format.format(seconds); + + String.format(Locale.ROOT, "%02d", seconds); } LOG.debug("string = '{}'", string); return string; diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java index e7e0d58f18..9518915476 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ToastsRenderer.java @@ -19,8 +19,6 @@ package org.apache.myfaces.tobago.internal.renderkit.renderer; -import jakarta.faces.component.UIComponent; -import jakarta.faces.context.FacesContext; import org.apache.myfaces.tobago.application.Toast; import org.apache.myfaces.tobago.component.Facets; import org.apache.myfaces.tobago.context.Markup; @@ -45,6 +43,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.faces.component.UIComponent; +import jakarta.faces.context.FacesContext; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.time.LocalTime; diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java index 9f24dc60fd..48ed36a358 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/layout/Measure.java @@ -25,6 +25,7 @@ import java.io.Serializable; import java.lang.invoke.MethodHandles; +import java.util.Locale; /** * In PDLs the class {@link org.apache.myfaces.tobago.layout.MeasureEditor} will convert the string literals. @@ -113,7 +114,7 @@ public static Measure valueOf(final String s, final Unit defaultUnit) { for (int i = 4; i >= 2; i--) { final int pos = length - i; if (length >= i && Character.isLetter(s.charAt(pos))) { - return new Measure(s.substring(0, pos), Unit.valueOf(s.substring(pos).toUpperCase())); + return new Measure(s.substring(0, pos), Unit.valueOf(s.substring(pos).toUpperCase(Locale.ROOT))); } } return new Measure(s, defaultUnit); @@ -214,7 +215,7 @@ public enum Unit { private final String value; Unit() { - value = name().equals("PERCENT") ? "%" : name().toLowerCase(); + value = name().equals("PERCENT") ? "%" : name().toLowerCase(Locale.ROOT); } String getValue() { diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java index e616e61eaa..ea47a21aed 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SuggestFilter.java @@ -19,6 +19,8 @@ package org.apache.myfaces.tobago.model; +import java.util.Locale; + public enum SuggestFilter { all, @@ -30,13 +32,13 @@ public enum SuggestFilter { public static final String CONTAINS = "contains"; public String getValue() { - return name().toLowerCase(); + return name().toLowerCase(Locale.ROOT); } public static SuggestFilter parse(final String string) { if (string == null) { return null; } - return valueOf(string.toUpperCase()); + return valueOf(string.toUpperCase(Locale.ROOT)); } } diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java index d89a12f18f..342f1f8fd6 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Icons.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import java.lang.invoke.MethodHandles; +import java.util.Locale; import java.util.regex.Pattern; /** @@ -62,7 +63,7 @@ public enum Icons implements CssItem { private final String clazz; Icons() { - this.clazz = "bi-" + name().toLowerCase().replaceAll("_", "-"); + this.clazz = "bi-" + name().toLowerCase(Locale.ROOT).replaceAll("_", "-"); } @Override diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java index 8d9116e861..a1ee40b0bc 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/DebugPhaseListener.java @@ -31,10 +31,10 @@ import jakarta.faces.event.PhaseListener; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - import java.lang.invoke.MethodHandles; import java.text.MessageFormat; import java.util.Iterator; +import java.util.Locale; import java.util.Map; public class DebugPhaseListener implements PhaseListener { @@ -84,10 +84,14 @@ public void afterPhase(final PhaseEvent phaseEvent) { for (final Iterator messageIterator = facesContext.getMessages(clientId); messageIterator.hasNext(); ) { final FacesMessage msg = messageIterator.next(); - LOG.info(MessageFormat.format("Faces message found." - + "\n Component: {0} \n Severity : {1}" - + "\n Summary : {2} \n Detail : {3}", - clientId, msg.getSeverity(), msg.getSummary(), msg.getDetail())); + MessageFormat messageFormat = new MessageFormat(""" + Faces message found. + Component: {0} + Severity : {1} + Summary : {2} + Detail : {3}""", Locale.ROOT); + LOG.info(messageFormat.format(new Object[]{ + clientId, msg.getSeverity(), msg.getSummary(), msg.getDetail()})); } } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java index 33e08ddfd5..c9fab83e8f 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/TobagoConfigParserUnitTest.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -176,7 +177,7 @@ public void testUniqueness() throws IllegalAccessException { // check hash code values for (final Field field : fields) { final int hash = field.getInt(dummy); - final String name = field.getName().toLowerCase().replace('_', '-'); + final String name = field.getName().toLowerCase(Locale.ROOT).replace('_', '-'); Assertions.assertEquals(name.hashCode(), hash, "Are the constants correct?"); } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java index ccedb060c6..9bea3c614e 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/RendererTestBase.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -43,7 +44,7 @@ protected String loadHtml(final String fileName) throws IOException { if (is == null) { throw new FileNotFoundException(fileName); } - try (InputStreamReader isr = new InputStreamReader(is); + try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr)) { final String xml = reader.lines().collect(Collectors.joining(System.lineSeparator())) .replaceAll("", "") diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java index 8514295984..dea688a00a 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/AriasUnitTest.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.Test; import java.lang.reflect.Field; +import java.util.Locale; public class AriasUnitTest { @@ -36,7 +37,7 @@ public void testAttributeNames() throws IllegalAccessException { final String extension = value.substring("aria-".length()); final String name = field.getName(); - Assertions.assertEquals(name, extension.toUpperCase()); + Assertions.assertEquals(name, extension.toUpperCase(Locale.ROOT)); } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java index 1cef0c7e28..5083d58381 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/DataAttributesUnitTest.java @@ -22,6 +22,8 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.Locale; + public class DataAttributesUnitTest { @Test @@ -41,7 +43,7 @@ public void testAttributeNames() throws IllegalAccessException { ? value.substring("data-tobago-".length()) : value.substring("data-".length()); final String name = d.name(); - Assertions.assertEquals(name, extension.toUpperCase().replaceAll("-", "_")); + Assertions.assertEquals(name, extension.toUpperCase(Locale.ROOT).replaceAll("-", "_")); } } } diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java index e1de0bffed..a9c974f089 100644 --- a/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java +++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/renderkit/html/HtmlElementsUnitTest.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; public class HtmlElementsUnitTest { @@ -39,10 +40,10 @@ public void testNames() throws IllegalAccessException { final String value = element.getValue(); Assertions.assertEquals( value, - element.name().toLowerCase().replaceAll("_", "-"), + element.name().toLowerCase(Locale.ROOT).replaceAll("_", "-"), "Check to lower: '" + element + "'"); Assertions.assertEquals( - value.toUpperCase().replaceAll("-", "_"), + value.toUpperCase(Locale.ROOT).replaceAll("-", "_"), element.name(), "Check to upper: '" + element + "'"); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java index 3ccfc3e893..fb89714149 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AstroData.java @@ -30,6 +30,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.io.InputStreamReader; import java.io.Serializable; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -53,7 +54,7 @@ public class AstroData implements Serializable { public AstroData() { final InputStreamReader reader - = new InputStreamReader(AstroData.class.getResourceAsStream("astro-data.json")); + = new InputStreamReader(AstroData.class.getResourceAsStream("astro-data.json"), StandardCharsets.UTF_8); Gson gson = new GsonBuilder().create(); dataList = gson.fromJson(reader, new TypeToken>() { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java index adde05e73d..596ed723bc 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CategoryTree.java @@ -26,6 +26,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; public class CategoryTree { @@ -34,8 +35,8 @@ private CategoryTree() { public static DefaultMutableTreeNode createSample() { - final InputStreamReader reader - = new InputStreamReader(AstroData.class.getResourceAsStream("category-tree.json")); + final InputStreamReader reader = new InputStreamReader( + AstroData.class.getResourceAsStream("category-tree.json"), StandardCharsets.UTF_8); final Gson gson = new GsonBuilder().create(); final CategoryNode node = gson.fromJson(reader, new TypeToken() { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java index c4ce9a0a2f..a182145c9d 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java @@ -21,9 +21,9 @@ import jakarta.enterprise.context.RequestScoped; import jakarta.inject.Named; - import java.time.LocalDate; import java.util.Currency; +import java.util.Locale; @Named @RequestScoped @@ -41,7 +41,7 @@ public CurrentValueController() { } public String toUpperCase(final String text) { - return text != null ? text.toUpperCase() : null; + return text != null ? text.toUpperCase(Locale.ROOT) : null; } public LocalDate plus50(final LocalDate base) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java index 686e651042..b3d6b2a8f5 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java @@ -82,12 +82,12 @@ import jakarta.faces.event.AjaxBehaviorEvent; import jakarta.faces.event.ValueChangeEvent; import jakarta.inject.Named; - import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.TreeSet; @@ -241,7 +241,7 @@ public static class EventsOnComponent implements Serializable { EventsOnComponent(final UIComponentBase component) { final String simpleName = component.getClass().getSimpleName(); - tagName = simpleName.substring(2, 3).toLowerCase() + simpleName.substring(3); + tagName = simpleName.substring(2, 3).toLowerCase(Locale.ROOT) + simpleName.substring(3); if (component.getEventNames() != null) { this.eventNames.addAll(component.getEventNames()); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java index e5925bd6b5..4119a2c95e 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/InputSuggestController.java @@ -30,11 +30,11 @@ import jakarta.faces.component.UIInput; import jakarta.faces.model.SelectItem; import jakarta.inject.Named; - import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; +import java.util.Locale; @SessionScoped @Named @@ -166,7 +166,7 @@ private List getSuggestItems(final String prefix, final boolean items.add(item); } } else { - if (dataRow[2].toLowerCase().startsWith(prefix.toLowerCase())) { + if (dataRow[2].toLowerCase(Locale.ROOT).startsWith(prefix.toLowerCase(Locale.ROOT))) { final AutoSuggestItem item = new AutoSuggestItem(); item.setLabel(dataRow[0]); item.setValue(dataRow[2]); diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java index 10ea28caa0..5bacd0c9f4 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/KillSession.java @@ -27,6 +27,7 @@ import jakarta.servlet.http.HttpSession; import java.io.IOException; +import java.nio.charset.StandardCharsets; /** * Simple Servlet to kill the user session. @@ -40,9 +41,9 @@ protected void doGet(final HttpServletRequest request, final HttpServletResponse final HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); - response.getOutputStream().write("The user session was killed!".getBytes()); + response.getOutputStream().write("The user session was killed!".getBytes(StandardCharsets.UTF_8)); } else { - response.getOutputStream().write("There is no user session to kill!".getBytes()); + response.getOutputStream().write("There is no user session to kill!".getBytes(StandardCharsets.UTF_8)); } } } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java index 0d1d87dfb2..4e469f94ce 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java @@ -25,12 +25,12 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Named; - import java.io.PrintStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; import java.util.List; +import java.util.Locale; /** * Provides the possibility to get information about various logging APIs available in the current setup. @@ -273,7 +273,8 @@ private boolean checkLevel(final String category, final String level) } if (SLF4J.equals(id) || JCL.equals(id)) { - final String methodName = "is" + level.substring(0, 1).toUpperCase() + level.substring(1) + "Enabled"; + final String methodName + = "is" + level.substring(0, 1).toUpperCase(Locale.ROOT) + level.substring(1) + "Enabled"; final Object hasLevel = c.getClass().getMethod(methodName).invoke(c); return (Boolean) hasLevel; } @@ -287,7 +288,7 @@ private boolean checkLevelGeneric( final Class levelClass = Class.forName(clazz); final Method isLoggable = c.getClass().getMethod(enabledMethod, levelClass); final Method parse = levelClass.getMethod(levelMethod, String.class); - final Object levelObject = parse.invoke(null, level.toUpperCase()); + final Object levelObject = parse.invoke(null, level.toUpperCase(Locale.ROOT)); final Object hasLevel = isLoggable.invoke(c, levelObject); return (Boolean) hasLevel; } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java index 905a4cabed..6b8fc45d66 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ManifestReader.java @@ -35,6 +35,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Enumeration; +import java.util.Locale; import java.util.TimeZone; import java.util.jar.Attributes; import java.util.jar.Manifest; @@ -75,7 +76,7 @@ public ManifestReader() { jar.add(new ManifestEntry(key.toString(), attributes.get(key).toString())); } if (name.startsWith("tobago-core")) { - final DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + final DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT); format.setTimeZone(TimeZone.getTimeZone("UTC")); try { buildTime = format.parse(attributes.getValue("Build-Time")); diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java index ae0849aef4..96b746bd75 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java @@ -19,6 +19,10 @@ package org.apache.myfaces.tobago.example.demo; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; import jakarta.faces.context.ExternalContext; @@ -26,10 +30,6 @@ import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.servlet.ServletContext; -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -41,6 +41,7 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; @@ -102,7 +103,7 @@ protected void postConstruct() { public List search(final String searchString) { List result = new ArrayList<>(20); for (String s : searchIndex.keySet()) { - if (s.contains(searchString.toLowerCase())) { + if (s.contains(searchString.toLowerCase(Locale.ROOT))) { result.add(searchIndex.get(s)); } // if (result.size() >= 20) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java index 8851490e6c..ce0ba76f80 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PanelController.java @@ -25,6 +25,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @RequestScoped @Named @@ -37,7 +38,7 @@ public Date getCurrentDate() { } public boolean isOddDecaSecond() { - String second = new SimpleDateFormat("ss").format(getCurrentDate()); + String second = new SimpleDateFormat("ss", Locale.ROOT).format(getCurrentDate()); return second.startsWith("1") || second.startsWith("3") || second.startsWith("5"); } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java index 6cfb5e9fca..a7602421a5 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ProgressController.java @@ -27,6 +27,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @SessionScoped @Named @@ -57,17 +58,17 @@ public Date getCurrentDate() { } public double getCurrentHours() { - final SimpleDateFormat sdf = new SimpleDateFormat("HH"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("HH", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } public double getCurrentMinutes() { - final SimpleDateFormat sdf = new SimpleDateFormat("mm"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("mm", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } public double getCurrentSeconds() { - final SimpleDateFormat sdf = new SimpleDateFormat("ss"); - return Double.valueOf(sdf.format(getCurrentDate())); + final SimpleDateFormat sdf = new SimpleDateFormat("ss", Locale.ROOT); + return Double.parseDouble(sdf.format(getCurrentDate())); } } diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java index 9de70076f0..2ae3c13f37 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java @@ -22,7 +22,6 @@ import jakarta.annotation.security.RolesAllowed; import jakarta.enterprise.context.SessionScoped; import jakarta.inject.Named; - import java.io.Serializable; import java.time.LocalTime; diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java index ce4dc25550..6323f5b445 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SearchIndex.java @@ -20,11 +20,12 @@ package org.apache.myfaces.tobago.example.demo; import java.util.HashMap; +import java.util.Locale; public class SearchIndex extends HashMap { public void add(NavigationNode node) { - String key = node.getLabel().toLowerCase(); + String key = node.getLabel().toLowerCase(Locale.ROOT); // XXX little hack to have more than one result with same name while (containsKey(key)) { diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java index f5170e3a03..014f85ffa2 100644 --- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java +++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/WebSocketController.java @@ -27,7 +27,6 @@ import jakarta.faces.push.PushContext; import jakarta.inject.Inject; import jakarta.inject.Named; - import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.time.LocalTime; diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java index 2c1d3672c9..a41ca141cf 100644 --- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java +++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ClassUtils.java @@ -20,6 +20,7 @@ package org.apache.myfaces.tobago.apt.generate; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class ClassUtils { @@ -60,7 +61,7 @@ public static String getSimpleName(final String qualifiedName) { public static String getSmallSimpleName(final String qualifiedName) { final String simpleName = getSimpleName(qualifiedName); if (simpleName != null && simpleName.length() > 2) { - return simpleName.substring(2, 3).toLowerCase() + simpleName.substring(3); + return simpleName.substring(2, 3).toLowerCase(Locale.ROOT) + simpleName.substring(3); } else { return simpleName; } diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java index 1884e3e370..c9bd7d9347 100644 --- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java +++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java @@ -19,7 +19,6 @@ package org.apache.myfaces.tobago.apt.processor; -import jakarta.faces.component.UIComponent; import org.antlr.stringtemplate.StringTemplate; import org.antlr.stringtemplate.StringTemplateGroup; import org.apache.myfaces.tobago.apt.annotation.Behavior; @@ -33,6 +32,7 @@ import org.apache.myfaces.tobago.apt.generate.ComponentPropertyInfo; import org.apache.myfaces.tobago.apt.generate.PropertyInfo; +import jakarta.faces.component.UIComponent; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; @@ -115,7 +115,7 @@ private void createTagOrComponent(final TypeElement declaration) throws IOExcept if (componentTag.generate()) { final Tag tag = declaration.getAnnotation(Tag.class); final String generic = "org.apache.myfaces.tobago.internal.component.AbstractUI" - + tag.name().substring(0, 1).toUpperCase() + tag.name().substring(1); + + tag.name().substring(0, 1).toUpperCase(Locale.ROOT) + tag.name().substring(1); final StringTemplate componentStringTemplate = componentStringTemplateGroup.getInstanceOf("component"); final ComponentInfo componentInfo = new ComponentInfo(declaration, componentTag); componentInfo.setSuperClass(generic); From f940fcf1e899ea5734d465c4c10ad2f7a7f14265 Mon Sep 17 00:00:00 2001 From: Udo Schnurpfeil Date: Wed, 9 Oct 2024 16:10:39 +0200 Subject: [PATCH 3/3] Merge remote-tracking branch 'origin/main_forbiddenapis' into main_forbiddenapis # Conflicts: # tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/LoggingController.java --- .../myfaces/tobago/internal/behavior/DeltaStateHelper.java | 1 - 1 file changed, 1 deletion(-) diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java index 202ca2f17c..7a302ecc45 100644 --- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java +++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/behavior/DeltaStateHelper.java @@ -27,7 +27,6 @@ import jakarta.faces.component.UIComponentBase; import jakarta.faces.context.FacesContext; import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap;