[ 
https://issues.apache.org/jira/browse/ISIS-1022?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Keir Haywood updated ISIS-1022:
--------------------------------------
      Component/s:     (was: Isis Core)
    Fix Version/s:     (was: 2.11.0)

> Refactor IsisConverterLocator so that the converters are facets.
> ----------------------------------------------------------------
>
>                 Key: ISIS-1022
>                 URL: https://issues.apache.org/jira/browse/ISIS-1022
>             Project: Isis
>          Issue Type: Improvement
>          Components: Isis Viewer Wicket
>    Affects Versions: core-1.8.0
>            Reporter: Daniel Keir Haywood
>            Priority: Minor
>
> In ISIS-1012 we introduced the IsisConverterLocator class that inspects the 
> ObjectSpecification and returns a suitable Wicket IConverter implementation.
> The implementation of this is a big switch statement.
> A better design would be for the IConverter to be made available through a 
> suitable facet, probably as an extension of the existing ValueFacet.  This 
> would require updating the appropriate facet factories for all appropriate 
> values.
> Note that we don't want Isis to have a dependency on Wicket, and so Isis 
> would need to define its own "parallel" (copy of) IConverter, and have the 
> ValueFacet return this.
> Then, in IsisConverterLocator, it would simply be a matter of adapting the 
> Isis' IConverter into a Wicket IConverter.
> The final implementation of IsisConverterLocator would be something like:
> {code}
> final ObjectSpecification objectSpecification = 
> objectAdapter.getSpecification();
> ValueFacet vf = objectSpecification.getFacet(ValueFacet.class)
> if(vf == null) { return null; }
> final org.apache.isis.core.metamodel.IConverter ic = vf.getConverter();
> if (ic == null) { return null; }
> return new org.apache.wicket.util.convert.IConverter() {
>     public Object convertToObject(String value, Locale locale) {
>        return ic.convertToObject(value, locale);
>     }
>     public String convertToString(C value, Locale locale) {
>         return ic.convertToString(value, locale);
>     }
> };
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to