[PAGES-504] Check for element type when evaluating availability Created: 14/Sep/21 Updated: 16/Aug/22 |
|
| Status: | Open |
| Project: | Magnolia pages module |
| Component/s: | None |
| Affects Version/s: | 6.2.8 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Richard Gange | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Template: |
|
||||
| Acceptance criteria: |
Empty
|
||||
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||
| Bug DoR: |
[X]*
Steps to reproduce, expected, and actual results filled
[ ]*
Affected version filled
[ ]*
accepted by developers
|
||||
| Date of First Response: | |||||
| Epic Link: | AuthorX Support | ||||
| Team: | |||||
| 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());
}
}
|
| Comments |
| Comment by Roman Kovařík [ 14/Sep/21 ] |
|
The stackstace matches the source code of pages 6.2.8 , not the version set on the support ticket. |