Uploaded image for project: 'Isis'
  1. Isis
  2. ISIS-906

incorrectly attempts to render a veto exception (from a subscriber) to a non-existent action dialog panel when invoked for a no-arg action.

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Cannot Reproduce
    • Affects Version/s: viewer-wicket-1.6.0
    • Fix Version/s: 1.12.0
    • Component/s: Core: Viewer: Wicket
    • Labels:
      None

      Description

      eg, with this code, the "remove" fails though the "removeAndReplace" works fine:

          @ActionInteraction(Party.RemoveEvent.class)
          public void remove() {
              removeAndReplace(null);
          }
      
          @ActionInteraction(Party.RemoveEvent.class)
          public void removeAndReplace(@Named("Replace with") @Optional Party replacement) {
              getContainer().remove(this);
              getContainer().flush();
          }
      

      and the following stacktrace:

      13:24:48,119 [MarkupContainer               ] Unable to find component with id 'actionName' in [ActionPanel [Component id = content]]
      	Expected: 'theme:actionPromptModalWindow:content:actionName'.
      	Found with similar names: ''
      13:24:48,119 [RequestCycleExtra             ] ********************************
      13:24:48,120 [RequestCycleExtra             ] Handling the following exception
      Unable to find component with id 'actionName' in [ActionPanel [Component id = content]]
      	Expected: 'theme:actionPromptModalWindow:content:actionName'.
      	Found with similar names: ''
       MarkupStream: [markup = file:/C:/Users/jvanderwal/src/isis/component/viewer/wicket/ui/target-ide/classes/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.html
      <wicket:panel>
      			<div class="actionPanel actionComponentType">
                      <div class="myBlockContainer">
          				<div class="iconAndTitle panel actionPanelHeaderNew">
          			         <span wicket:id="entityIconAndTitle">[icon and title]</span>
          			         <p wicket:id="actionName" class="actionName">[action name]</p>
                          </div>
          				<span wicket:id="parameters">
          				</span>
                      </div>
      			</div>
      		</wicket:panel>, index = 6, current =  '<p wicket:id="actionName" class="actionName">' (line 0, column 0)]
      	at org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526)
      	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1438)
      	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1557)
      	at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1532)
      	at org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:689)
      	at org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
      	at org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
      	at org.apache.wicket.Component.internalRenderComponent(Component.java:2514)
      	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1496)
      	at org.apache.wicket.Component.internalRender(Component.java:2344)
      	at org.apache.wicket.Component.render(Component.java:2272)
      	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1392)
      	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1557)
      	at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1532)
      	at org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:689)
      	at org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy.renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
      	at org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
      	at org.apache.wicket.Component.internalRenderComponent(Component.java:2514)
      	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1496)
      	at org.apache.wicket.Component.internalRender(Component.java:2344)
      	at org.apache.wicket.Component.render(Component.java:2272)
      	at org.apache.wicket.ajax.XmlAjaxResponse.writeComponent(XmlAjaxResponse.java:128)
      	at org.apache.wicket.ajax.AbstractAjaxResponse.writeComponents(AbstractAjaxResponse.java:218)
      	at org.apache.wicket.ajax.AbstractAjaxResponse.writeTo(AbstractAjaxResponse.java:150)
      	at org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:359)
      	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862)
      	at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
      	at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:97)
      	at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
      	at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
      	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
      	at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
      	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
      	at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
      	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
      	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
      	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
      	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
      	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
      	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
      	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
      	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
      	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.Server.handle(Server.java:326)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
      	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
      	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
      13:24:48,120 [RequestCycleExtra             ] ********************************
      
      

        Activity

        Hide
        danhaywood Dan Haywood added a comment -

        Looks like this has been fixed somewhere along the line.

        I added:

        package domainapp.dom.simple;
        
        import com.google.common.eventbus.Subscribe;
        
        import org.apache.isis.applib.annotation.*;
        
        @DomainService(
                nature = NatureOfService.DOMAIN
        )
        @DomainServiceLayout(
                menuOrder = "1"
        )
        public class VetoDeleteSubscriber extends org.apache.isis.applib.AbstractSubscriber {
        
            @Subscribe
            public void on(SimpleObject.DeleteDomainEvent ev) {
                ev.disable("no go, matey!");
            }
        }
        

        and this correctly vetoed the "delete" action

        Show
        danhaywood Dan Haywood added a comment - Looks like this has been fixed somewhere along the line. I added: package domainapp.dom.simple; import com.google.common.eventbus.Subscribe; import org.apache.isis.applib.annotation.*; @DomainService( nature = NatureOfService.DOMAIN ) @DomainServiceLayout( menuOrder = "1" ) public class VetoDeleteSubscriber extends org.apache.isis.applib.AbstractSubscriber { @Subscribe public void on(SimpleObject.DeleteDomainEvent ev) { ev.disable( "no go, matey!" ); } } and this correctly vetoed the "delete" action

          People

          • Assignee:
            danhaywood Dan Haywood
            Reporter:
            jcvanderwal Jeroen van der Wal
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development