From 858900798264ca5246ee1ccbf0d4a658cdb81f7c Mon Sep 17 00:00:00 2001 From: Udo Schnurpfeil Date: Wed, 9 Oct 2024 16:29:12 +0200 Subject: [PATCH] feat: File upload client validation issue: TOBAGO-2353 (cherry picked from commit 73f7794e3e15d6826df0c90b03d0c818b3ad5470) --- pom.xml | 131 +++++++++++++----- .../tobago/convert/DurationConverter.java | 10 +- .../apache/myfaces/tobago/layout/Measure.java | 5 +- .../myfaces/tobago/model/SuggestFilter.java | 6 +- .../myfaces/tobago/renderkit/css/Icons.java | 3 +- .../tobago/util/DebugPhaseListener.java | 13 +- .../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 | 3 +- .../tobago/example/demo/EventController.java | 3 +- .../example/demo/InputSuggestController.java | 3 +- .../tobago/example/demo/KillSession.java | 5 +- .../example/demo/LoggingController.java | 6 +- .../tobago/example/demo/ManifestReader.java | 3 +- .../tobago/example/demo/NavigationTree.java | 3 +- .../tobago/example/demo/PanelController.java | 3 +- .../example/demo/ProgressController.java | 13 +- .../tobago/example/demo/SearchIndex.java | 3 +- .../tobago/apt/generate/ClassUtils.java | 3 +- .../apt/processor/ClassesGenerator.java | 2 +- 25 files changed, 163 insertions(+), 81 deletions(-) diff --git a/pom.xml b/pom.xml index bc6f8a34f6..9b2fd35053 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. --> - + 4.0.0 org.apache.myfaces @@ -27,7 +28,9 @@ pom Apache Tobago 5.14.0-SNAPSHOT - The goal of Tobago is to provide the community with a well designed set of user interface components based on JSF and run on MyFaces. + The goal of Tobago is to provide the community with a well designed set of user interface components + based on JSF and run on MyFaces. + http://myfaces.apache.org/tobago 2002 @@ -95,7 +98,9 @@ Myfaces Developer List (use [Tobago] prefix) dev-subscribe@myfaces.apache.org dev-unsubscribe@myfaces.apache.org - List for posting patches and discussing internal code implementation issues. Subscribe to this list before posting + List for posting patches and discussing internal code implementation issues. Subscribe to this list before + posting + https://lists.apache.org/list.html?dev@myfaces.apache.org http://mail-archives.apache.org/mod_mbox/myfaces-dev @@ -123,7 +128,8 @@ https://lists.apache.org/list.html?notifications@myfaces.apache.org http://mail-archives.apache.org/mod_mbox/myfaces-notifications - http://myfaces.markmail.org/search/?q=#query:list%3Aorg.apache.myfaces.notifications + http://myfaces.markmail.org/search/?q=#query:list%3Aorg.apache.myfaces.notifications + @@ -275,14 +281,14 @@ test - + commons-collections @@ -450,6 +456,51 @@ + + de.thetaphi + forbiddenapis + 3.8 + + + false + + + + + + + + jdk-non-portable + + jdk-reflection + + + + + + + + + check + testCheck + + + + @@ -563,10 +614,10 @@ false perTest --> - + @@ -581,10 +632,10 @@ - -Xdoclint:accessibility - -Xdoclint:html - -Xdoclint:reference - -Xdoclint:syntax + -Xdoclint:accessibility + -Xdoclint:html + -Xdoclint:reference + -Xdoclint:syntax @@ -793,20 +844,20 @@ - + @@ -1013,7 +1064,9 @@ attach-javadoc - jar + + jar + @@ -1023,7 +1076,9 @@ attach-source - jar + + jar + @@ -1062,8 +1117,8 @@ !jsf - - + + 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 d56e93d6db..b884e5f371 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 @@ -29,10 +29,9 @@ import javax.faces.convert.Converter; import javax.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; /** @@ -80,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; @@ -89,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/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 19fe47dfe6..7899f49a9e 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 @@ -34,6 +34,7 @@ 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 { @@ -83,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 c79feb5ef3..6c93c3c20e 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 @@ -29,6 +29,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; @@ -52,7 +53,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 bb7c818316..aa179cb819 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 @@ -23,6 +23,7 @@ import javax.inject.Named; import java.time.LocalDate; import java.util.Currency; +import java.util.Locale; @Named @RequestScoped @@ -40,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 5c651fa8a9..168f365aef 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 @@ -87,6 +87,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.TreeSet; @@ -240,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 0471e6c9ca..707a6c67df 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 @@ -34,6 +34,7 @@ import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; +import java.util.Locale; @SessionScoped @Named @@ -165,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 15a056f0f3..fa71d3cbb8 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 @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.nio.charset.StandardCharsets; /** * Simple Servlet to kill the user session. @@ -39,9 +40,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 886a72d0f8..a64956d47e 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 @@ -30,6 +30,7 @@ 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. @@ -272,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; } @@ -286,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 3e1cbfe6ad..83a8ecb17f 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 @@ -34,6 +34,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; @@ -74,7 +75,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 ed0e175b6c..ef2931ca0e 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 @@ -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 72526f4126..f305969909 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 @@ -24,6 +24,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @RequestScoped @Named @@ -36,7 +37,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 ae708a7f84..946df436bf 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 @@ -26,6 +26,7 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; @SessionScoped @Named @@ -56,17 +57,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/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-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 7bc67b13f4..3832a39ddf 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 @@ -114,7 +114,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);