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