Dan Haywood created ISIS-2107:
---------------------------------
Summary: 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
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)