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 2019/05/14 14:41:00 UTC
[jira] [Resolved] (ISIS-2107) Allow enums to implement interfaces
for choices.
[ https://issues.apache.org/jira/browse/ISIS-2107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Haywood resolved ISIS-2107.
-------------------------------
Resolution: Fixed
> Allow enums to implement interfaces for choices.
> ------------------------------------------------
>
> Key: ISIS-2107
> URL: https://issues.apache.org/jira/browse/ISIS-2107
> Project: Isis
> Issue Type: Bug
> Components: Core, Core: Viewer: Wicket
> Affects Versions: 1.17.0
> Reporter: Dan Haywood
> Assignee: Dan Haywood
> Priority: Minor
> Fix For: 1.18.0
>
>
> The code we wanted to write was equivalent to:
> {code:java}
> public Object act(
> final INflLeague nflLeague,
> final NflRegion nflRegion,
> final NflTeamEntity nflTeam) {
> nflPlayer.updateUsingEntity((NflLeague)nflLeague, nflRegion, nflTeam);
> return this.nflPlayer;
> }
> public List<? extends INflLeague> choices0Act() {
> return Arrays.asList(NflLeague.values());
> }
> ...
> {code}
> where NflLeague is an enum that implements INflLeague :
> {code:java}
> public interface INflLeague {
> String getName();
> }
> {code}
> and
> {code:java}
> public enum NflLeague implements INflLeague {
> AFC,
> NFC;
> @Override
> public String getName() {
> return name();
> }
> }
> {code}
> There are two issues:
> * first, in the metamodel we don't introspect enums to recognise that a list of NflLeague enum instances can be returned in the choices method returning List<INflLeague>
> * second, in the Wicket viewer the selection of the choicesPanel is based on the type, and if an interface is used then it guesses a referencePanel rather than ValueSelect2Panel that is normally used for enums. The marshalling logic for ReferencePanel assumes entities, and fails when handed a bunch of scalar enums.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)