Dan Haywood created ISIS-1022:
---------------------------------
Summary: 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, Viewer: Wicket
Affects Versions: core-1.8.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
Fix For: core-1.9.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)