Uploaded image for project: 'Magnolia pages module'
  1. Magnolia pages module
  2. PAGES-504

Check for element type when evaluating availability

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • 6.2.8
    • None
    • None

    Description

      We have a report of the following exception be seen in the logs:

      ERROR info.magnolia.ui.framework.ContextProperty$Impl 17.08.2021 09:28:52 – Failed to dispatch context property change: class info.magnolia.ui.vaadin.gwt.client.shared.AreaElement cannot be cast to class info.magnolia.ui.vaadin.gwt.client.shared.ComponentElement (info.magnolia.ui.vaadin.gwt.client.shared.AreaElement and info.magnolia.ui.vaadin.gwt.client.shared.ComponentElement are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @6e28bb87)
       java.lang.ClassCastException: class info.magnolia.ui.vaadin.gwt.client.shared.AreaElement cannot be cast to class info.magnolia.ui.vaadin.gwt.client.shared.ComponentElement (info.magnolia.ui.vaadin.gwt.client.shared.AreaElement and info.magnolia.ui.vaadin.gwt.client.shared.ComponentElement are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @6e28bb87)
       at info.magnolia.pages.app.detail.action.availability.IsComponentDeletableRule.isAvailableFor(IsComponentDeletableRule.java:46) ~[magnolia-pages-app-6.2.8.jar:?]
       at info.magnolia.ui.availability.rule.AbstractAvailabilityRule.isAvailableForItem(AbstractAvailabilityRule.java:86) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.pages.app.detail.action.availability.AbstractElementAvailabilityRule.isAvailableForItem(AbstractElementAvailabilityRule.java:62) ~[magnolia-pages-app-6.2.8.jar:?]
       at info.magnolia.ui.availability.rule.AbstractAvailabilityRule.isAvailable(AbstractAvailabilityRule.java:63) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.availability.DefaultAvailabilityChecker.isAvailable(DefaultAvailabilityChecker.java:80) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.availability.DefaultAvailabilityChecker.lambda$isAvailable$1(DefaultAvailabilityChecker.java:64) ~[magnolia-ui-framework-6.2.9.jar:?]
       at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) ~[?:?]
       at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[?:?]
       at java.util.LinkedList$LLSpliterator.tryAdvance(LinkedList.java:1253) ~[?:?]
       at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723) ~[?:?]
       at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[?:?]
       at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[?:?]
       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[?:?]
       at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
       at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) ~[?:?]
       at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) ~[?:?]
       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
       at java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:533) ~[?:?]
       at info.magnolia.ui.availability.DefaultAvailabilityChecker.isAvailable(DefaultAvailabilityChecker.java:64) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.contentapp.browser.actions.ActionbarPresenter.lambda$getAvailabilityFilter$4(ActionbarPresenter.java:156) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.contentapp.browser.actions.ActionbarPresenter.isEnabledAction(ActionbarPresenter.java:130) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$update$7(ActionbarView.java:141) ~[magnolia-ui-framework-6.2.9.jar:?]
       at java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?]
       at info.magnolia.ui.contentapp.browser.actions.ActionbarView.update(ActionbarView.java:140) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$new$0(ActionbarView.java:86) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.ValueContext.lambda$observe$2(ValueContext.java:86) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.framework.ContextProperty$Impl.lambda$observe$5(ContextProperty.java:195) ~[magnolia-ui-framework-6.2.9.jar:?]
       at io.reactivex.internal.subscribers.LambdaSubscriber.onNext(LambdaSubscriber.java:65) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:68) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.internal.operators.flowable.FlowableOnBackpressureLatest$BackpressureLatestSubscriber.drain(FlowableOnBackpressureLatest.java:129) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.internal.operators.flowable.FlowableOnBackpressureLatest$BackpressureLatestSubscriber.onNext(FlowableOnBackpressureLatest.java:68) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.internal.operators.flowable.FlowableFromObservable$SubscriberObserver.onNext(FlowableFromObservable.java:54) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.internal.util.NotificationLite.accept(NotificationLite.java:246) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.subjects.BehaviorSubject$BehaviorDisposable.test(BehaviorSubject.java:569) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.subjects.BehaviorSubject$BehaviorDisposable.emitNext(BehaviorSubject.java:564) ~[rxjava-2.2.18.jar:?]
       at io.reactivex.subjects.BehaviorSubject.onNext(BehaviorSubject.java:268) ~[rxjava-2.2.18.jar:?]
       at info.magnolia.ui.framework.ContextProperty$Impl.doSet(ContextProperty.java:250) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.framework.ContextProperty$Impl.set(ContextProperty.java:234) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.framework.ContextProperty$Wrapper.set(ContextProperty.java:127) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.ValueContext.set(ValueContext.java:74) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.ui.ValueContext.set(ValueContext.java:78) ~[magnolia-ui-framework-6.2.9.jar:?]
       at info.magnolia.pages.app.detail.PageEditorStatus.lambda$setSelectedElement$2(PageEditorStatus.java:130) ~[magnolia-pages-app-6.2.8.jar:?]
       at com.machinezoo.noexception.CheckedExceptionHandler.run(CheckedExceptionHandler.java:1709) [noexception-1.4.4.jar:?]
       at info.magnolia.pages.app.detail.PageEditorStatus.setSelectedElement(PageEditorStatus.java:118) [magnolia-pages-app-6.2.8.jar:?]
       at info.magnolia.pages.app.detail.PageEditorPresenter.onElementSelect(PageEditorPresenter.java:177) [magnolia-pages-app-6.2.8.jar:?]
       at info.magnolia.ui.vaadin.editor.PageEditor$1.selectArea(PageEditor.java:69) [magnolia-pages-editor-widget-6.2.8.jar:6.2.8]
      

      The problem here is how to track down such an issue after the fact. The log isn't helping very much in this case.

      Rather than assume we received a ComponentElement inside isAvailableFor()

          @Override
          protected boolean isAvailableFor(ComponentElement element) {
              return element.getDeletable();
          }
      

      We could check to be sure it is in fact one. If not provide some more context that would allow the issue to be tracked down.

          @Override
          protected boolean isAvailableFor(AbstractElement element) {
              if (element instanceof ComponentElement) {
                  return element.getDeletable();
              }
              else {
                  // do something here to help provide context
                  log.error("Cannot check availability of type {} at path {}", element.getClass(), element.getPath());
              }
          }
      

      Checklists

        Acceptance criteria

        Attachments

          Activity

            People

              Unassigned Unassigned
              rgange Richard Gange
              AuthorX
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Checklists

                  Bug DoR
                  Task DoD