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)

Reply via email to