Hi Sven, I think the overrides of #createConverter() don't need to be 'public'. 'protected' is better.
Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Thu, Jul 21, 2016 at 10:22 PM, <[email protected]> wrote: > Repository: wicket > Updated Branches: > refs/heads/wicket-7.x b13979ddf -> af3785aab > > > WICKET-5866 added #createConverter() without generics parameter for > convenience > > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/af3785aa > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/af3785aa > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/af3785aa > > Branch: refs/heads/wicket-7.x > Commit: af3785aabf1a4753fc266d20e969b75cfe5505cb > Parents: b13979d > Author: Sven Meier <[email protected]> > Authored: Thu Jul 21 22:08:33 2016 +0200 > Committer: Sven Meier <[email protected]> > Committed: Thu Jul 21 22:09:05 2016 +0200 > > ---------------------------------------------------------------------- > .../main/java/org/apache/wicket/Component.java | 29 ++++++++++++++++---- > .../wicket/markup/html/form/CheckBox.java | 11 ++------ > ...tComponentConvertEmptyStringsToNullTest.java | 5 ++-- > .../datetime/markup/html/basic/DateLabel.java | 13 +++------ > .../markup/html/form/DateTextField.java | 12 +++----- > .../extensions/yui/calendar/DateTimeField.java | 10 ++----- > .../wicket/examples/forminput/FormInput.java | 17 ++++-------- > .../markup/html/form/DateTextField.java | 10 ++----- > 8 files changed, 48 insertions(+), 59 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-core/src/main/java/org/apache/wicket/Component.java > ---------------------------------------------------------------------- > 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 ff77446..0fc5252 100644 > --- a/wicket-core/src/main/java/org/apache/wicket/Component.java > +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java > @@ -1360,20 +1360,39 @@ public abstract class Component > } > > /** > - * 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 > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java > ---------------------------------------------------------------------- > 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 310ccc9..47ee143 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 > @@ -191,18 +191,13 @@ public class CheckBox extends FormComponent<Boolean> > implements IOnChangeListene > * @see org.apache.wicket.Component#getConverter(java.lang.Class) > */ > @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; > - } > - else > - { > - return super.getConverter(type); > + return CheckBoxConverter.INSTANCE; > } > + return null; > } > > /** > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractTextComponentConvertEmptyStringsToNullTest.java > ---------------------------------------------------------------------- > 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 @@ public class > AbstractTextComponentConvertEmptyStringsToNullTest extends WicketTe > 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)); > } > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/basic/DateLabel.java > ---------------------------------------------------------------------- > 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 6f5610b..c9c50a8 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 @@ public class DateLabel extends Label implements > IGenericComponent<Date> > * 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; > - } > - else > - { > - return super.getConverter(clazz); > + return converter; > } > + return null; > } > > /** > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-datetime/src/main/java/org/apache/wicket/datetime/markup/html/form/DateTextField.java > ---------------------------------------------------------------------- > 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 @@ public class DateTextField extends TextField<Date> > implements ITextFormatProvide > > /** > * @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; > - } > - else > - { > - return super.getConverter(clazz); > + return converter; > } > + return null; > } > > /** > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java > ---------------------------------------------------------------------- > 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 dfc00b4..746c5fd 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 > @@ -226,18 +226,14 @@ public class DateTimeField extends > FormComponentPanel<Date> > { > 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; > - } > - else > - { > - return super.getConverter(type); > + return MINUTES_CONVERTER; > } > + return null; > } > }; > minutesField.add(new RangeValidator<>(0, 59)); > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java > ---------------------------------------------------------------------- > 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 9cbc294..d6dad11 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 > @@ -148,18 +148,14 @@ public class FormInput extends WicketExamplePage > // 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; > - } > - else > - { > - return > super.getConverter(type); > + return > URLConverter.INSTANCE; > } > + return null; > } > }); > > @@ -168,17 +164,14 @@ public class FormInput extends WicketExamplePage > { > > @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; > } > }); > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/af3785aa/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/DateTextField.java > ---------------------------------------------------------------------- > 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 @@ public class DateTextField extends TextField<Date> > implements ITextFormatProvide > * > * @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; > - } > - else > - { > - return super.getConverter(type); > + return converter; > } > + return null; > } > > /** > >
