You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2015/03/12 16:24:40 UTC
[jira] [Updated] (ISIS-1022) Refactor IsisConverterLocator so that
the converters are facets.
[ https://issues.apache.org/jira/browse/ISIS-1022?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Haywood updated ISIS-1022:
------------------------------
Fix Version/s: (was: core-1.9.0)
core-1.10.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: Core, Core: Viewer: Wicket
> Affects Versions: core-1.8.0
> Reporter: Dan Haywood
> Assignee: Dan Haywood
> Priority: Minor
> Fix For: core-1.10.0
>
>
> 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
(v6.3.4#6332)