Dan Haywood created ISIS-1620:
---------------------------------

             Summary: use normal mechanism of indicating metamodel invalid if 
choices specified incorrectly
                 Key: ISIS-1620
                 URL: https://issues.apache.org/jira/browse/ISIS-1620
             Project: Isis
          Issue Type: Improvement
          Components: Core
    Affects Versions: 1.14.0
            Reporter: Dan Haywood
            Priority: Trivial
             Fix For: 1.18.0


currently the framework just fails "too fast" and throws an exception as soon 
as the issue is detected.  instead it should collate the problem and report 
along with others (as for other metamodel invalid exceptions).

To reproduce in kitchensink app:
{code}

    @Action(semantics=SemanticsOf.IDEMPOTENT, publishing = Publishing.ENABLED)
    public TextObject updateSomeStringOptionalWithMultiChoices(
            // @Nullable
            @ParameterLayout(named = "Choose some string(s)")
            final List<String> strings) {
        final String asStr = SeparatorUtil.asStr(strings);
        setSomeStringOptionalWithMultiChoices(asStr);
        return this;
    }

    public List<String> choices0UpdateSomeStringOptionalWithMultiChoices() {
        return choicesUpdateSomeStringOptionalWithMultiChoices();
    }

    public List<String> choicesUpdateSomeStringOptionalWithMultiChoices() {
        return Lists.newArrayList("a", "ab", "abcd", "abcdefgh", 
"abcdefghijklmnop", "abcdefghijklmnopqrstuvwxyz");
    }
{code}

will throw an exception when encountered
{code}
        at org.apache.wicket.Application.initApplication(Application.java:953)
        at 
org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:429)
        ... 20 more
Caused by: org.apache.isis.core.metamodel.exceptions.MetaModelException: class 
org.isisaddons.app.kitchensink.dom.text.TextObject uses both old and new 
choices syntax - must use one or other
        at 
org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory.attachChoicesFacetForParametersIfChoicesNumMethodIsFound(ActionParameterChoicesFacetViaMethodFactory.java:92)
        at 
org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory.process(ActionParameterChoicesFacetViaMethodFactory.java:65)
        at 
org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:315)
        at 
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createActionFacetedMethod(FacetedMethodsBuilder.java:489)
        at 
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findActionFacetedMethod(FacetedMethodsBuilder.java:475)
        at 
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findActionFacetedMethods(FacetedMethodsBuilder.java:454)
        at 
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findActionFacetedMethods(FacetedMethodsBuilder.java:433)
        at 
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getActionFacetedMethods(FacetedMethodsBuilder.java:409)
{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to