You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2024/07/08 08:57:57 UTC
(myfaces) branch main updated: Faces Spec #1822 - Missing Generics in Faces Standard Converters
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/main by this push:
new 15cc2cf62 Faces Spec #1822 - Missing Generics in Faces Standard Converters
15cc2cf62 is described below
commit 15cc2cf62824203a70460e8a2279b1df5a06bc05
Author: tandraschko <ta...@apache.org>
AuthorDate: Mon Jul 8 10:57:44 2024 +0200
Faces Spec #1822 - Missing Generics in Faces Standard Converters
---
.../jakarta/faces/convert/BigDecimalConverter.java | 11 +--
.../jakarta/faces/convert/BigIntegerConverter.java | 11 +--
.../jakarta/faces/convert/BooleanConverter.java | 13 +---
.../java/jakarta/faces/convert/ByteConverter.java | 12 +--
.../jakarta/faces/convert/CharacterConverter.java | 15 ++--
.../jakarta/faces/convert/DateTimeConverter.java | 2 +-
.../jakarta/faces/convert/DoubleConverter.java | 13 +---
.../java/jakarta/faces/convert/EnumConverter.java | 87 ++++++++--------------
.../java/jakarta/faces/convert/FloatConverter.java | 13 +---
.../jakarta/faces/convert/IntegerConverter.java | 13 +---
.../java/jakarta/faces/convert/LongConverter.java | 14 +---
.../jakarta/faces/convert/NumberConverter.java | 15 ++--
.../java/jakarta/faces/convert/ShortConverter.java | 14 +---
.../jakarta/faces/convert/EnumConverterTest.java | 25 +------
.../tag/faces/html/selectOneItemGroup.xhtml | 2 +-
15 files changed, 77 insertions(+), 183 deletions(-)
diff --git a/api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java b/api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java
index def63f61c..e11d36583 100755
--- a/api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java
@@ -31,7 +31,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class BigDecimalConverter implements Converter
+public class BigDecimalConverter implements Converter<BigDecimal>
{
public static final String CONVERTER_ID = "jakarta.faces.BigDecimal";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -42,7 +42,7 @@ public class BigDecimalConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public BigDecimal getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -66,7 +66,7 @@ public class BigDecimalConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, BigDecimal value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -76,11 +76,6 @@ public class BigDecimalConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
return value.toString();
diff --git a/api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java b/api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java
index 961085cfa..5e95c5b13 100755
--- a/api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java
@@ -31,7 +31,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class BigIntegerConverter implements Converter
+public class BigIntegerConverter implements Converter<BigInteger>
{
public static final String CONVERTER_ID = "jakarta.faces.BigInteger";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -42,7 +42,7 @@ public class BigIntegerConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public BigInteger getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -65,7 +65,7 @@ public class BigIntegerConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, BigInteger value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -75,11 +75,6 @@ public class BigIntegerConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
return value.toString();
diff --git a/api/src/main/java/jakarta/faces/convert/BooleanConverter.java b/api/src/main/java/jakarta/faces/convert/BooleanConverter.java
index 23a5c6937..f34c537e6 100755
--- a/api/src/main/java/jakarta/faces/convert/BooleanConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/BooleanConverter.java
@@ -29,7 +29,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class BooleanConverter implements Converter
+public class BooleanConverter implements Converter<Boolean>
{
public static final String CONVERTER_ID = "jakarta.faces.Boolean";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +40,7 @@ public class BooleanConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Boolean getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +63,7 @@ public class BooleanConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Boolean value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +73,9 @@ public class BooleanConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return ((Boolean)value).toString();
+ return value.toString();
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/ByteConverter.java b/api/src/main/java/jakarta/faces/convert/ByteConverter.java
index 613652845..4ff2b0e62 100755
--- a/api/src/main/java/jakarta/faces/convert/ByteConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/ByteConverter.java
@@ -20,7 +20,6 @@ package jakarta.faces.convert;
import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
-
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFConverter;
import org.apache.myfaces.core.api.shared.MessageUtils;
import org.apache.myfaces.core.api.shared.lang.Assert;
@@ -29,7 +28,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class ByteConverter implements Converter
+public class ByteConverter implements Converter<Byte>
{
public static final String CONVERTER_ID = "jakarta.faces.Byte";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +39,7 @@ public class ByteConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Byte getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +62,7 @@ public class ByteConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Byte value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,11 +72,6 @@ public class ByteConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
return Byte.toString(((Number)value).byteValue());
diff --git a/api/src/main/java/jakarta/faces/convert/CharacterConverter.java b/api/src/main/java/jakarta/faces/convert/CharacterConverter.java
index d52d32e20..8724527f9 100755
--- a/api/src/main/java/jakarta/faces/convert/CharacterConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/CharacterConverter.java
@@ -29,7 +29,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class CharacterConverter implements Converter
+public class CharacterConverter implements Converter<Character>
{
public static final String CONVERTER_ID = "jakarta.faces.Character";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +40,7 @@ public class CharacterConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Character getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -52,7 +52,7 @@ public class CharacterConverter implements Converter
try
{
- return Character.valueOf(value.charAt(0));
+ return value.charAt(0);
}
catch(Exception e)
{
@@ -63,7 +63,7 @@ public class CharacterConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Character value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +73,9 @@ public class CharacterConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return ((Character)value).toString();
+ return value.toString();
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/DateTimeConverter.java b/api/src/main/java/jakarta/faces/convert/DateTimeConverter.java
index 8dc2804a1..01201cf5a 100755
--- a/api/src/main/java/jakarta/faces/convert/DateTimeConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/DateTimeConverter.java
@@ -58,7 +58,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
returnType = "jakarta.faces.convert.DateTimeConverter",
longDesc = "A ValueExpression that evaluates to a DateTimeConverter.")
public class DateTimeConverter
- implements Converter, PartialStateHolder
+ implements Converter<Object>, PartialStateHolder
{
// API field
diff --git a/api/src/main/java/jakarta/faces/convert/DoubleConverter.java b/api/src/main/java/jakarta/faces/convert/DoubleConverter.java
index a5b879308..52aa118ae 100755
--- a/api/src/main/java/jakarta/faces/convert/DoubleConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/DoubleConverter.java
@@ -32,7 +32,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class DoubleConverter implements Converter
+public class DoubleConverter implements Converter<Double>
{
public static final String CONVERTER_ID = "jakarta.faces.Double";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -43,7 +43,7 @@ public class DoubleConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Double getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -116,7 +116,7 @@ public class DoubleConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Double value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -126,14 +126,9 @@ public class DoubleConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return Double.toString(((Number)value).doubleValue());
+ return Double.toString(value);
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/EnumConverter.java b/api/src/main/java/jakarta/faces/convert/EnumConverter.java
index 179d91aec..8b9e3cc77 100644
--- a/api/src/main/java/jakarta/faces/convert/EnumConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/EnumConverter.java
@@ -24,7 +24,6 @@ import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFConverter;
-import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
import org.apache.myfaces.core.api.shared.MessageUtils;
import org.apache.myfaces.core.api.shared.lang.Assert;
@@ -32,23 +31,12 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class EnumConverter implements Converter, PartialStateHolder
+public class EnumConverter implements Converter<Enum>, PartialStateHolder
{
-
public static final String CONVERTER_ID = "jakarta.faces.Enum";
public static final String ENUM_ID = "jakarta.faces.converter.EnumConverter.ENUM";
public static final String ENUM_NO_CLASS_ID = "jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS";
- /**
- * If value is a String instance and this param is true, pass it directly without try any change.
- *
- * See MYFACES-2739 for details.
- */
- @JSFWebConfigParam(name="org.apache.myfaces.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH", since="2.0.1",
- expectedValues="true,false",defaultValue="false", group="validation")
- private static final String ALLOW_STRING_PASSTROUGH = "org.apache.myfaces.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH";
-
- // TODO: Find a valid generic usage -= Simon Lessard =-
private Class targetClass;
private boolean isTransient = false;
@@ -67,49 +55,17 @@ public class EnumConverter implements Converter, PartialStateHolder
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public Enum<?> getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
- checkTargetClass(facesContext, uiComponent, value);
-
- if (value == null)
- {
- return "";
- }
-
- if (value instanceof String string
- && _isPassThroughStringValues(facesContext))
- {
- // pass through the String value
- return string;
- }
-
- // check if the value is an instance of the enum class
- if (targetClass.isInstance(value))
- {
- return ((Enum<?>) value).name();
- }
-
- Object[] params =
- new Object[] { value, firstConstantOfEnum(), MessageUtils.getLabel(facesContext, uiComponent) };
-
- throw new ConverterException(MessageUtils.getErrorMessage(facesContext, ENUM_ID, params));
- }
-
- @Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
- {
- Assert.notNull(facesContext, "facesContext");
- Assert.notNull(uiComponent, "uiComponent");
-
if (value == null)
{
return null;
}
value = value.trim();
- if (value.length() == 0)
+ if (value.isEmpty())
{
return null;
}
@@ -130,6 +86,32 @@ public class EnumConverter implements Converter, PartialStateHolder
}
}
+ @Override
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Enum value)
+ {
+ Assert.notNull(facesContext, "facesContext");
+ Assert.notNull(uiComponent, "uiComponent");
+
+ checkTargetClass(facesContext, uiComponent, value);
+
+ if (value == null)
+ {
+ return "";
+ }
+
+ // check if the value is an instance of the enum class
+ if (targetClass.isInstance(value))
+ {
+ return value.name();
+ }
+
+ Object[] params =
+ new Object[] { value, firstConstantOfEnum(), MessageUtils.getLabel(facesContext, uiComponent) };
+
+ throw new ConverterException(MessageUtils.getErrorMessage(facesContext, ENUM_ID, params));
+ }
+
+
private void checkTargetClass(FacesContext facesContext, UIComponent uiComponent, Object value)
{
if (targetClass == null)
@@ -202,16 +184,5 @@ public class EnumConverter implements Converter, PartialStateHolder
{
_initialStateMarked = true;
}
-
- private boolean _isPassThroughStringValues(FacesContext facesContext)
- {
- String param = facesContext.getExternalContext().getInitParameter(ALLOW_STRING_PASSTROUGH);
- if (param != null)
- {
- return param.trim().equalsIgnoreCase("true");
- }
- // default: false
- return false;
- }
}
diff --git a/api/src/main/java/jakarta/faces/convert/FloatConverter.java b/api/src/main/java/jakarta/faces/convert/FloatConverter.java
index 57fc15807..cd1e5095f 100755
--- a/api/src/main/java/jakarta/faces/convert/FloatConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/FloatConverter.java
@@ -29,7 +29,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class FloatConverter implements Converter
+public class FloatConverter implements Converter<Float>
{
public static final String CONVERTER_ID = "jakarta.faces.Float";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +40,7 @@ public class FloatConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Float getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +63,7 @@ public class FloatConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Float value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +73,9 @@ public class FloatConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return Float.toString(((Number) value).floatValue());
+ return Float.toString(value);
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/IntegerConverter.java b/api/src/main/java/jakarta/faces/convert/IntegerConverter.java
index 74ff66404..ad5fa4c33 100755
--- a/api/src/main/java/jakarta/faces/convert/IntegerConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/IntegerConverter.java
@@ -29,7 +29,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class IntegerConverter implements Converter
+public class IntegerConverter implements Converter<Integer>
{
public static final String CONVERTER_ID = "jakarta.faces.Integer";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +40,7 @@ public class IntegerConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Integer getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +63,7 @@ public class IntegerConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Integer value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +73,9 @@ public class IntegerConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return Integer.toString(((Number) value).intValue());
+ return Integer.toString(value);
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/LongConverter.java b/api/src/main/java/jakarta/faces/convert/LongConverter.java
index 2aa13e278..919699243 100755
--- a/api/src/main/java/jakarta/faces/convert/LongConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/LongConverter.java
@@ -20,7 +20,6 @@ package jakarta.faces.convert;
import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
-
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFConverter;
import org.apache.myfaces.core.api.shared.MessageUtils;
import org.apache.myfaces.core.api.shared.lang.Assert;
@@ -29,7 +28,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class LongConverter implements Converter
+public class LongConverter implements Converter<Long>
{
public static final String CONVERTER_ID = "jakarta.faces.Long";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +39,7 @@ public class LongConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Long getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +62,7 @@ public class LongConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Long value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +72,9 @@ public class LongConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return Long.toString(((Number) value).longValue());
+ return Long.toString(value);
}
catch (Exception e)
{
diff --git a/api/src/main/java/jakarta/faces/convert/NumberConverter.java b/api/src/main/java/jakarta/faces/convert/NumberConverter.java
index 058e53c58..5661d7b9c 100755
--- a/api/src/main/java/jakarta/faces/convert/NumberConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/NumberConverter.java
@@ -52,7 +52,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
name="binding",
returnType = "jakarta.faces.convert.NumberConverter",
longDesc = "A ValueExpression that evaluates to a NumberConverter.")
-public class NumberConverter implements Converter, PartialStateHolder
+public class NumberConverter implements Converter<Number>, PartialStateHolder
{
public static final String CONVERTER_ID = "jakarta.faces.Number";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -84,7 +84,7 @@ public class NumberConverter implements Converter, PartialStateHolder
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Number getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -178,10 +178,10 @@ public class NumberConverter implements Converter, PartialStateHolder
return null;
}
- private Object parse(String value, NumberFormat format, Class<?> destType)
+ private Number parse(String value, NumberFormat format, Class<?> destType)
throws ParseException
{
- Object parsed = null;
+ Number parsed = null;
ParsePosition parsePosition = new ParsePosition(0);
if (destType == BigInteger.class)
@@ -213,7 +213,7 @@ public class NumberConverter implements Converter, PartialStateHolder
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Number value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -223,11 +223,6 @@ public class NumberConverter implements Converter, PartialStateHolder
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
NumberFormat format = getNumberFormat(facesContext);
format.setGroupingUsed(_groupingUsed);
if (_maxFractionDigitsSet)
diff --git a/api/src/main/java/jakarta/faces/convert/ShortConverter.java b/api/src/main/java/jakarta/faces/convert/ShortConverter.java
index ad87f9f06..55b38d686 100755
--- a/api/src/main/java/jakarta/faces/convert/ShortConverter.java
+++ b/api/src/main/java/jakarta/faces/convert/ShortConverter.java
@@ -20,7 +20,6 @@ package jakarta.faces.convert;
import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
-
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFConverter;
import org.apache.myfaces.core.api.shared.MessageUtils;
import org.apache.myfaces.core.api.shared.lang.Assert;
@@ -29,7 +28,7 @@ import org.apache.myfaces.core.api.shared.lang.Assert;
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Faces Specification</a>
*/
@JSFConverter
-public class ShortConverter implements Converter
+public class ShortConverter implements Converter<Short>
{
public static final String CONVERTER_ID = "jakarta.faces.Short";
public static final String STRING_ID = "jakarta.faces.converter.STRING";
@@ -40,7 +39,7 @@ public class ShortConverter implements Converter
}
@Override
- public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
+ public Short getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -63,7 +62,7 @@ public class ShortConverter implements Converter
}
@Override
- public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
+ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Short value)
{
Assert.notNull(facesContext, "facesContext");
Assert.notNull(uiComponent, "uiComponent");
@@ -73,14 +72,9 @@ public class ShortConverter implements Converter
return "";
}
- if (value instanceof String string)
- {
- return string;
- }
-
try
{
- return Short.toString(((Number) value).shortValue());
+ return Short.toString(value);
}
catch (Exception e)
{
diff --git a/impl/src/test/java/jakarta/faces/convert/EnumConverterTest.java b/impl/src/test/java/jakarta/faces/convert/EnumConverterTest.java
index f66f21da1..7a38bf904 100644
--- a/impl/src/test/java/jakarta/faces/convert/EnumConverterTest.java
+++ b/impl/src/test/java/jakarta/faces/convert/EnumConverterTest.java
@@ -130,7 +130,7 @@ public class EnumConverterTest extends AbstractJsfTestCase
/**
* Test method for
- * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Object)}.
+ * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Enum)}.
*/
@Test
public void testGetAsString()
@@ -142,7 +142,7 @@ public class EnumConverterTest extends AbstractJsfTestCase
/**
* Test method for
- * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Object)}.
+ * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Enum)}.
*/
@Test
public void testGetAsStringNull()
@@ -154,26 +154,7 @@ public class EnumConverterTest extends AbstractJsfTestCase
/**
* Test method for
- * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Object)}.
- */
- @Test
- public void testGetAsStringNoEnum()
- {
- UIInput input = new UIInput();
- try
- {
- String convertedStr = converter.getAsString(FacesContext.getCurrentInstance(), input, "HALLO");
- Assertions.fail("Converter exception should be thrown");
- }
- catch (ConverterException e)
- {
- // should be thrown
- }
- }
-
- /**
- * Test method for
- * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Object)}.
+ * {@link jakarta.faces.convert.EnumConverter#getAsString(FacesContext, jakarta.faces.component.UIComponent, Enum)}.
*/
@Test
public void testGetAsStringNoClassSet()
diff --git a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/selectOneItemGroup.xhtml b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/selectOneItemGroup.xhtml
index f1611a87d..dd6fc7469 100644
--- a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/selectOneItemGroup.xhtml
+++ b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/selectOneItemGroup.xhtml
@@ -28,7 +28,7 @@
<f:selectItems value="#{selectOneItemGroupTestBean.animalList}" var="animal" itemValue="#{animal.id}" itemLabel="#{animal.name}" />
</f:selectItemGroup>
<f:selectItemGroup itemLabel="Food">
- <f:selectItem value="${4}" itemValue="Kibble" />
+ <f:selectItem itemValue="${4}" itemLabel="Kibble" />
</f:selectItemGroup>
</h:selectOneMenu>
</form>