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)