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

Andi Huber updated ISIS-2384:
-----------------------------
    Fix Version/s: 2.0.0-M4

> Action that takes a List of view models fails to gather them when object has 
> been viewed already
> ------------------------------------------------------------------------------------------------
>
>                 Key: ISIS-2384
>                 URL: https://issues.apache.org/jira/browse/ISIS-2384
>             Project: Isis
>          Issue Type: Bug
>          Components: Isis Examples
>    Affects Versions: 2.0.0-M3
>            Reporter: Brian Kalbfus
>            Priority: Major
>             Fix For: 2.0.0-M4
>
>
> From demo in master, apply this patch:
> {code:java}
> diff --git 
> a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
>  
> b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
> index 92a26bc..476ca60 100644
> --- 
> a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
> +++ 
> b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
> @@ -37,11 +37,10 @@
>  import org.apache.isis.applib.annotation.Property;
>  import org.apache.isis.applib.annotation.SemanticsOf;
>  
> +import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
>  import lombok.Getter;
>  import lombok.Setter;
>  
> -import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
> -
>  //tag::class[]
>  @XmlRootElement(name = "demo.StatefulViewModelJaxbRefsEntity")
>  @XmlType(
> @@ -103,6 +102,14 @@
>      @XmlElement(name = "child")
>      private List<ChildJdoEntity> children = new ArrayList<>();
>  
> +    @Action(associateWith = "children")
> +    public StatefulViewModelJaxbRefsEntity 
> suffixChildren(List<ChildJdoEntity> children) {
> +     for(ChildJdoEntity child : children) {
> +             child.setName(child.getName() + ", Jr");
> +     }
> +     return this;
> +    }
> +    
>      @Action(associateWith = "children", associateWithSequence = "1", 
> semantics = SemanticsOf.NON_IDEMPOTENT)
>      public StatefulViewModelJaxbRefsEntity addChild(final ChildJdoEntity 
> child) {
>          children.add(child);
> {code}
> Then, on the demo wicket page, go to the view models refs entity.  Add all 
> children.  Then view all children individually (I used ctrl-click). 
>  
> Then, select all the children and run the "Suffix Children" action.  Before 
> being prompted to affirm the selected children, an NPE occurs:
> {noformat}
>                                     
>                                         java.lang.NullPointerException
>                                     
>                                         
>                                     
>                                             
> java.util.Objects#requireNonNull(Objects.java:222)
>                                     
>                                             
> org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.LinkAndLabelFactoryAbstract$1#doOnClick(LinkAndLabelFactoryAbstract.java:112)
>                                     
>                                             
> org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLink#onClick(ActionLink.java:100)
>                                     
>                                             
> org.apache.wicket.ajax.markup.html.AjaxLink$1#onEvent(AjaxLink.java:85)
>                                     
>                                             
> org.apache.wicket.ajax.AjaxEventBehavior#respond(AjaxEventBehavior.java:127)
>                                     
>                                             
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#onRequest(AbstractDefaultAjaxBehavior.java:598)
>                                     
>                                             
> org.apache.wicket.core.request.handler.ListenerRequestHandler#internalInvoke(ListenerRequestHandler.java:306)
>                                     
>                                             
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invoke(ListenerRequestHandler.java:280)
>                                     
>                                             
> org.apache.wicket.core.request.handler.ListenerRequestHandler#invokeListener(ListenerRequestHandler.java:222)
>                                     
>                                             
> org.apache.wicket.core.request.handler.ListenerRequestHandler#respond(ListenerRequestHandler.java:208)
>                                     
>                                             
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:914)
>                                     
>                                             
> org.apache.wicket.request.RequestHandlerExecutor#execute(RequestHandlerExecutor.java:65)
>                                     
>                                             
> org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:282)
>                                     
>                                             
> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:253)
>                                     
>                                             
> org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:221)
>                                     
>                                             
> org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:275)
>                                     
>                                             
> org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:206)
>                                     
>                                             
> org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:299)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.apache.isis.core.webapp.modules.logonlog.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:60)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.springframework.web.filter.RequestContextFilter#doFilterInternal(RequestContextFilter.java:100)
>                                     
>                                             
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:119)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.springframework.web.filter.FormContentFilter#doFilterInternal(FormContentFilter.java:93)
>                                     
>                                             
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:119)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.springframework.web.filter.CharacterEncodingFilter#doFilterInternal(CharacterEncodingFilter.java:201)
>                                     
>                                             
> org.springframework.web.filter.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:119)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449)
>                                     
>                                             
> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365)
>                                     
>                                             
> org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90)
>                                     
>                                             
> org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83)
>                                     
>                                             
> org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:387)
>                                     
>                                             
> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362)
>                                     
>                                             
> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:193)
>                                     
>                                             
> org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:166)
>                                     
>                                             
> org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:202)
>                                     
>                                             
> org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:96)
>                                     
>                                             
> org.apache.catalina.authenticator.AuthenticatorBase#invoke(AuthenticatorBase.java:541)
>                                     
>                                             
> org.apache.catalina.core.StandardHostValve#invoke(StandardHostValve.java:139)
>                                     
>                                             
> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorReportValve.java:92)
>                                     
>                                             
> 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:373)
>                                     
>                                             
> org.apache.coyote.AbstractProcessorLight#process(AbstractProcessorLight.java:65)
>                                     
>                                             
> org.apache.coyote.AbstractProtocol$ConnectionHandler#process(AbstractProtocol.java:868)
>                                     
>                                             
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor#doRun(NioEndpoint.java:1590)
>                                     
>                                             
> org.apache.tomcat.util.net.SocketProcessorBase#run(SocketProcessorBase.java:49)
>                                     
>                                             
> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPoolExecutor.java:1128)
>                                     
>                                             
> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoolExecutor.java:628)
>                                     
>                                             
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#run(TaskThread.java:61)
>                                     
>                                             
> java.lang.Thread#run(Thread.java:830)
>                                     
>                                 {noformat}
>  
> Note, this action succeeds if I do not view the children beforehand.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to