WICKET-5866 added #createConverter() without generics parameter for convenience
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 6f91097..ac59be1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -1358,20 +1358,39 @@
}
/**
- * Gets the converter that should be used by this component.
- *
+ * Get the converter that should be used by this component, delegates to
+ * {@link #createConverter(Class)} and then to the application's
+ * {@link IConverterLocator}.
+ *
* @param type
* The type to convert to
- *
+ *
* @return The converter that should be used by this component
*/
+ @SuppressWarnings("unchecked")
@Override
- public <C> IConverter<C> getConverter(Class<C> type)
- {
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ IConverter<?> converter = createConverter(type);
+ if (converter != null) {
+ return (IConverter<C>) converter;
+ }
return getApplication().getConverterLocator().getConverter(type);
}
/**
+ * Factory method for converters to be used by this component,
+ * returns {@code null} by default.
+ *
+ * @param type
+ * The type to convert to
+ *
+ * @return a converter to be used by this component
+ */
+ protected IConverter<?> createConverter(Class<?> type) {
+ return null;
+ }
+
+ /**
* Gets whether model strings should be escaped.
*
* @return Returns whether model strings should be escaped
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
index fdbf5b8..9b12674 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
@@ -186,18 +186,13 @@
}
@Override
- public final <C> IConverter<C> getConverter(Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
if (Boolean.class.equals(type))
{
- @SuppressWarnings("unchecked")
- IConverter<C> converter = (IConverter<C>)CheckBoxConverter.INSTANCE;
- return converter;
+ return CheckBoxConverter.INSTANCE;
}
- else
- {
- return super.getConverter(type);
- }
+ return null;
}
/**
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractTextComponentConvertEmptyStringsToNullTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractTextComponentConvertEmptyStringsToNullTest.java
index cef3a4a..0603dbc 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractTextComponentConvertEmptyStringsToNullTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractTextComponentConvertEmptyStringsToNullTest.java
@@ -74,10 +74,9 @@
private static final long serialVersionUID = 1L;
@Override
- @SuppressWarnings("unchecked")
- public <C> IConverter<C> getConverter(Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
- return (IConverter<C>)new StringArrayConverter();
+ return new StringArrayConverter();
}
}.setConvertEmptyInputStringToNull(false));
}
diff --git a/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/basic/DateLabel.java b/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/basic/DateLabel.java
index 9d70d0e..102ec29 100644
--- a/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/basic/DateLabel.java
+++ b/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/basic/DateLabel.java
@@ -257,18 +257,13 @@
* Returns the specialized converter.
*/
@Override
- public <C> IConverter<C> getConverter(Class<C> clazz)
+ public IConverter<?> createConverter(Class<?> type)
{
- if (Date.class.isAssignableFrom(clazz))
+ if (Date.class.isAssignableFrom(type))
{
- @SuppressWarnings("unchecked")
- IConverter<C> result = (IConverter<C>)converter;
- return result;
+ return converter;
}
- else
- {
- return super.getConverter(clazz);
- }
+ return null;
}
/**
diff --git a/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/form/DateTextField.java b/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/form/DateTextField.java
index c2ce854..8009813 100644
--- a/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/form/DateTextField.java
+++ b/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/form/DateTextField.java
@@ -220,20 +220,16 @@
/**
* @return The specialized converter.
- * @see org.apache.wicket.Component#getConverter(java.lang.Class)
+ * @see org.apache.wicket.Component#createConverter(java.lang.Class)
*/
- @SuppressWarnings("unchecked")
@Override
- public <C> IConverter<C> getConverter(Class<C> clazz)
+ public IConverter<?> createConverter(Class<?> clazz)
{
if (Date.class.isAssignableFrom(clazz))
{
- return (IConverter<C>)converter;
+ return converter;
}
- else
- {
- return super.getConverter(clazz);
- }
+ return null;
}
/**
diff --git a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
index cbf4217..becfaed 100644
--- a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
+++ b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
@@ -232,18 +232,14 @@
{
private static final long serialVersionUID = 1L;
- @SuppressWarnings("unchecked")
@Override
- public <C> IConverter<C> getConverter(Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
if (Integer.class.isAssignableFrom(type))
{
- return (IConverter<C>)MINUTES_CONVERTER;
+ return MINUTES_CONVERTER;
}
- else
- {
- return super.getConverter(type);
- }
+ return null;
}
};
minutesField.add(new RangeValidator<>(0, 59));
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
index 344f192..c608350 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
@@ -143,18 +143,14 @@
// TextField using a custom converter.
add(new TextField<URL>("urlProperty", URL.class)
{
- @SuppressWarnings("unchecked")
@Override
- public <C> IConverter<C> getConverter(final Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
if (URL.class.isAssignableFrom(type))
{
- return (IConverter<C>)URLConverter.INSTANCE;
+ return URLConverter.INSTANCE;
}
- else
- {
- return super.getConverter(type);
- }
+ return null;
}
});
@@ -162,17 +158,14 @@
add(new TextField<UsPhoneNumber>("phoneNumberUS", UsPhoneNumber.class)
{
@Override
- public <C> IConverter<C> getConverter(final Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
if (UsPhoneNumber.class.isAssignableFrom(type))
{
// US telephone number mask
return new MaskConverter<>("(###) ###-####", UsPhoneNumber.class);
}
- else
- {
- return super.getConverter(type);
- }
+ return null;
}
});
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/DateTextField.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/DateTextField.java
index 762a5c7..23fea2b 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/DateTextField.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/DateTextField.java
@@ -147,18 +147,14 @@
*
* @see org.apache.wicket.markup.html.form.TextField
*/
- @SuppressWarnings("unchecked")
@Override
- public <C> IConverter<C> getConverter(final Class<C> type)
+ public IConverter<?> createConverter(Class<?> type)
{
if (Date.class.isAssignableFrom(type))
{
- return (IConverter<C>)converter;
+ return converter;
}
- else
- {
- return super.getConverter(type);
- }
+ return null;
}
/**