[ 
https://issues.apache.org/jira/browse/CAUSEWAY-3462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andi Huber closed CAUSEWAY-3462.
--------------------------------

> [demo app] exception with Nth arg trying to obtain previous args
> ----------------------------------------------------------------
>
>                 Key: CAUSEWAY-3462
>                 URL: https://issues.apache.org/jira/browse/CAUSEWAY-3462
>             Project: Causeway
>          Issue Type: Bug
>          Components: Core, Viewer Wicket
>    Affects Versions: 2.0.0-RC1
>            Reporter: Daniel Keir Haywood
>            Assignee: Andi Huber
>            Priority: Minor
>             Fix For: 2.0.0-RC2
>
>
> in the demo app, use Prog Model >  [action section] > validate
> In the middle section, use "selectTvCharactersByTvShowAndSexUsingName" action.
>  * enter a TV show for the first param
>  * enter a sex for the second param
>  * enter a TV character for the 3rd param
> This will trigger an exception (stack trace below) ... the framework expects 
> this to have only a single parameter and passes in the TvCharacter as the 
> first param.
> NB: the same functionality implemented using a Parameters object works fine, 
> and is perhaps the recommended approach.  Even so, in v1 it used to work this 
> way, so we need to preserve this behaviour.
>  
> h3. Stack trace:
>  * java.lang.IllegalArgumentException
>  * expected param type mismatch in public java.lang.String 
> demoapp.dom.progmodel.actions.validate.ActionValidatePage_selectTvCharactersByShowAndSexUsingName.validateTvCharacters(demoapp.dom.progmodel.actions.TvShow,demoapp.dom.progmodel.actions.TvCharacter$Sex,java.util.List)
>  param-type[0]: expected 'demoapp.dom.progmodel.actions.TvShow', got 
> 'java.util.Collections$UnmodifiableRandomAccessList'
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#toVerboseException(CanonicalInvoker.java:187)
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#lambda$invoke$2(CanonicalInvoker.java:130)
>  * 
> org.apache.causeway.commons.functional.ThrowingFunction#apply(ThrowingFunction.java:66)
>  * 
> org.apache.causeway.commons.functional.ThrowingFunction#apply(ThrowingFunction.java:54)
>  * org.apache.causeway.commons.functional.Try$Failure#mapFailure(Try.java:434)
>  * org.apache.causeway.commons.functional.Try$Failure#mapFailure(Try.java:380)
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#invoke(CanonicalInvoker.java:130)
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#invoke(CanonicalInvoker.java:114)
>  * 
> org.apache.causeway.core.metamodel.object.MmInvokeUtils#invoke(MmInvokeUtils.java:111)
>  * 
> org.apache.causeway.core.metamodel.object.MmInvokeUtils#invoke(MmInvokeUtils.java:119)
>  * 
> org.apache.causeway.core.metamodel.facets.param.validate.method.ActionParameterValidationFacetViaMethod#invalidReason(ActionParameterValidationFacetViaMethod.java:78)
>  * 
> org.apache.causeway.core.metamodel.facets.param.validate.ActionParameterValidationFacetAbstract#invalidates(ActionParameterValidationFacetAbstract.java:47)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#lambda$isValidResult$5(InteractionUtils.java:76)
>  * java.util.stream.ForEachOps$ForEachOp$OfRef#accept(ForEachOps.java:183)
>  * java.util.stream.ReferencePipeline$2$1#accept(ReferencePipeline.java:177)
>  * java.util.stream.ReferencePipeline$3$1#accept(ReferencePipeline.java:195)
>  * java.util.stream.ReferencePipeline$2$1#accept(ReferencePipeline.java:177)
>  * java.util.HashMap$ValueSpliterator#forEachRemaining(HashMap.java:1675)
>  * java.util.stream.AbstractPipeline#copyInto(AbstractPipeline.java:484)
>  * 
> java.util.stream.AbstractPipeline#wrapAndCopyInto(AbstractPipeline.java:474)
>  * 
> java.util.stream.ForEachOps$ForEachOp#evaluateSequential(ForEachOps.java:150)
>  * 
> java.util.stream.ForEachOps$ForEachOp$OfRef#evaluateSequential(ForEachOps.java:173)
>  * java.util.stream.AbstractPipeline#evaluate(AbstractPipeline.java:234)
>  * java.util.stream.ReferencePipeline#forEach(ReferencePipeline.java:497)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#isValidResult(InteractionUtils.java:75)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#isValidResultSet(InteractionUtils.java:91)
>  * 
> org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault#validateArgumentsIndividually(ObjectActionDefault.java:364)
>  * 
> org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault#isArgumentSetValid(ObjectActionDefault.java:328)
>  * 
> org.apache.causeway.viewer.commons.model.action.UiActionForm#getValidityConsent(UiActionForm.java:87)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault#lambda$executeAndProcessResults$1(FormExecutorDefault.java:96)
>  * org.apache.causeway.commons.functional.Either$Left#fold(Either.java:127)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault#executeAndProcessResults(FormExecutorDefault.java:95)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.PromptFormAbstract#onOkSubmitted(PromptFormAbstract.java:122)
>  * org.apache.causeway.viewer.wicket.ui.util.Wkt$5#onSubmit(Wkt.java:326)
>  * 
> org.apache.wicket.ajax.markup.html.form.AjaxButton$1#onSubmit(AjaxButton.java:113)
>  * 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter#onSubmit(AjaxFormSubmitBehavior.java:249)
>  * org.apache.wicket.markup.html.form.Form#delegateSubmit(Form.java:1372)
>  * org.apache.wicket.markup.html.form.Form#process(Form.java:1034)
>  * org.apache.wicket.markup.html.form.Form#onFormSubmitted(Form.java:858)
>  * 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior#onEvent(AjaxFormSubmitBehavior.java:202)
>  * 
> org.apache.wicket.ajax.AjaxEventBehavior#respond(AjaxEventBehavior.java:146)
>  * 
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#onRequest(AbstractDefaultAjaxBehavior.java:630)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#internalInvoke(ListenerRequestHandler.java:300)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invoke(ListenerRequestHandler.java:274)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invokeListener(ListenerRequestHandler.java:222)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#respond(ListenerRequestHandler.java:202)
>  * 
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:910)
>  * 
> org.apache.wicket.request.RequestHandlerExecutor#execute(RequestHandlerExecutor.java:63)
>  * org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:294)
>  * 
> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:255)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:277)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:208)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:307)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.apache.causeway.core.webapp.modules.logonlog.CausewayLogOnExceptionFilter#doFilter(CausewayLogOnExceptionFilter.java:60)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.web.filter.FormContentFilter#doFilterInternal(FormContentFilter.java:93)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter#doFilterInternal(WebMvcMetricsFilter.java:96)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.web.filter.CharacterEncodingFilter#doFilterInternal(CharacterEncodingFilter.java:201)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:167)
>  * 
> org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:90)
>  * 
> org.apache.catalina.authenticator.AuthenticatorBase#invoke(AuthenticatorBase.java:481)
>  * 
> org.apache.catalina.core.StandardHostValve#invoke(StandardHostValve.java:130)
>  * 
> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorReportValve.java:93)
>  * 
> org.apache.catalina.core.StandardEngineValve#invoke(StandardEngineValve.java:74)
>  * org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAdapter.java:343)
>  * org.apache.coyote.http11.Http11Processor#service(Http11Processor.java:390)
>  * 
> org.apache.coyote.AbstractProcessorLight#process(AbstractProcessorLight.java:63)
>  * 
> org.apache.coyote.AbstractProtocol$ConnectionHandler#process(AbstractProtocol.java:926)
>  * 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor#doRun(NioEndpoint.java:1791)
>  * 
> org.apache.tomcat.util.net.SocketProcessorBase#run(SocketProcessorBase.java:52)
>  * 
> org.apache.tomcat.util.threads.ThreadPoolExecutor#runWorker(ThreadPoolExecutor.java:1191)
>  * 
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker#run(ThreadPoolExecutor.java:659)
>  * 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#run(TaskThread.java:61)
>  * java.lang.Thread#run(Thread.java:829)
>  *  
>  * Caused by:
>  *  
>  * java.lang.IllegalArgumentException
>  * argument type mismatch
>  * 
> jdk.internal.reflect.NativeMethodAccessorImpl#invoke0(NativeMethodAccessorImpl.java:-2)
>  * 
> jdk.internal.reflect.NativeMethodAccessorImpl#invoke(NativeMethodAccessorImpl.java:62)
>  * 
> jdk.internal.reflect.DelegatingMethodAccessorImpl#invoke(DelegatingMethodAccessorImpl.java:43)
>  * java.lang.reflect.Method#invoke(Method.java:566)
>  * 
> org.apache.causeway.commons.internal.reflection._Reflect#lambda$invokeMethodOn$11(_Reflect.java:563)
>  * org.apache.causeway.commons.functional.Try#call(Try.java:58)
>  * 
> org.apache.causeway.commons.internal.reflection._Reflect#invokeMethodOn(_Reflect.java:561)
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#invoke(CanonicalInvoker.java:126)
>  * 
> org.apache.causeway.core.metamodel.commons.CanonicalInvoker#invoke(CanonicalInvoker.java:114)
>  * 
> org.apache.causeway.core.metamodel.object.MmInvokeUtils#invoke(MmInvokeUtils.java:111)
>  * 
> org.apache.causeway.core.metamodel.object.MmInvokeUtils#invoke(MmInvokeUtils.java:119)
>  * 
> org.apache.causeway.core.metamodel.facets.param.validate.method.ActionParameterValidationFacetViaMethod#invalidReason(ActionParameterValidationFacetViaMethod.java:78)
>  * 
> org.apache.causeway.core.metamodel.facets.param.validate.ActionParameterValidationFacetAbstract#invalidates(ActionParameterValidationFacetAbstract.java:47)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#lambda$isValidResult$5(InteractionUtils.java:76)
>  * java.util.stream.ForEachOps$ForEachOp$OfRef#accept(ForEachOps.java:183)
>  * java.util.stream.ReferencePipeline$2$1#accept(ReferencePipeline.java:177)
>  * java.util.stream.ReferencePipeline$3$1#accept(ReferencePipeline.java:195)
>  * java.util.stream.ReferencePipeline$2$1#accept(ReferencePipeline.java:177)
>  * java.util.HashMap$ValueSpliterator#forEachRemaining(HashMap.java:1675)
>  * java.util.stream.AbstractPipeline#copyInto(AbstractPipeline.java:484)
>  * 
> java.util.stream.AbstractPipeline#wrapAndCopyInto(AbstractPipeline.java:474)
>  * 
> java.util.stream.ForEachOps$ForEachOp#evaluateSequential(ForEachOps.java:150)
>  * 
> java.util.stream.ForEachOps$ForEachOp$OfRef#evaluateSequential(ForEachOps.java:173)
>  * java.util.stream.AbstractPipeline#evaluate(AbstractPipeline.java:234)
>  * java.util.stream.ReferencePipeline#forEach(ReferencePipeline.java:497)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#isValidResult(InteractionUtils.java:75)
>  * 
> org.apache.causeway.core.metamodel.interactions.InteractionUtils#isValidResultSet(InteractionUtils.java:91)
>  * 
> org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault#validateArgumentsIndividually(ObjectActionDefault.java:364)
>  * 
> org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault#isArgumentSetValid(ObjectActionDefault.java:328)
>  * 
> org.apache.causeway.viewer.commons.model.action.UiActionForm#getValidityConsent(UiActionForm.java:87)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault#lambda$executeAndProcessResults$1(FormExecutorDefault.java:96)
>  * org.apache.causeway.commons.functional.Either$Left#fold(Either.java:127)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault#executeAndProcessResults(FormExecutorDefault.java:95)
>  * 
> org.apache.causeway.viewer.wicket.ui.panels.PromptFormAbstract#onOkSubmitted(PromptFormAbstract.java:122)
>  * org.apache.causeway.viewer.wicket.ui.util.Wkt$5#onSubmit(Wkt.java:326)
>  * 
> org.apache.wicket.ajax.markup.html.form.AjaxButton$1#onSubmit(AjaxButton.java:113)
>  * 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter#onSubmit(AjaxFormSubmitBehavior.java:249)
>  * org.apache.wicket.markup.html.form.Form#delegateSubmit(Form.java:1372)
>  * org.apache.wicket.markup.html.form.Form#process(Form.java:1034)
>  * org.apache.wicket.markup.html.form.Form#onFormSubmitted(Form.java:858)
>  * 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior#onEvent(AjaxFormSubmitBehavior.java:202)
>  * 
> org.apache.wicket.ajax.AjaxEventBehavior#respond(AjaxEventBehavior.java:146)
>  * 
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#onRequest(AbstractDefaultAjaxBehavior.java:630)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#internalInvoke(ListenerRequestHandler.java:300)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invoke(ListenerRequestHandler.java:274)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invokeListener(ListenerRequestHandler.java:222)
>  * 
> org.apache.wicket.core.request.handler.ListenerRequestHandler#respond(ListenerRequestHandler.java:202)
>  * 
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:910)
>  * 
> org.apache.wicket.request.RequestHandlerExecutor#execute(RequestHandlerExecutor.java:63)
>  * org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:294)
>  * 
> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:255)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:277)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:208)
>  * 
> org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:307)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.apache.causeway.core.webapp.modules.logonlog.CausewayLogOnExceptionFilter#doFilter(CausewayLogOnExceptionFilter.java:60)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.web.filter.FormContentFilter#doFilterInternal(FormContentFilter.java:93)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter#doFilterInternal(WebMvcMetricsFilter.java:96)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.springframework.web.filter.CharacterEncodingFilter#doFilterInternal(CharacterEncodingFilter.java:201)
>  * 
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:117)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:178)
>  * 
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:153)
>  * 
> org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:167)
>  * 
> org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:90)
>  * 
> org.apache.catalina.authenticator.AuthenticatorBase#invoke(AuthenticatorBase.java:481)
>  * 
> org.apache.catalina.core.StandardHostValve#invoke(StandardHostValve.java:130)
>  * 
> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorReportValve.java:93)
>  * 
> org.apache.catalina.core.StandardEngineValve#invoke(StandardEngineValve.java:74)
>  * org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAdapter.java:343)
>  * org.apache.coyote.http11.Http11Processor#service(Http11Processor.java:390)
>  * 
> org.apache.coyote.AbstractProcessorLight#process(AbstractProcessorLight.java:63)
>  * 
> org.apache.coyote.AbstractProtocol$ConnectionHandler#process(AbstractProtocol.java:926)
>  * 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor#doRun(NioEndpoint.java:1791)
>  * 
> org.apache.tomcat.util.net.SocketProcessorBase#run(SocketProcessorBase.java:52)
>  * 
> org.apache.tomcat.util.threads.ThreadPoolExecutor#runWorker(ThreadPoolExecutor.java:1191)
>  * 
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker#run(ThreadPoolExecutor.java:659)
>  * 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#run(TaskThread.java:61)
>  * java.lang.Thread#run(Thread.java:829)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to