-
Bug
-
Resolution: Fixed
-
Neutral
-
None
-
6.2
-
None
The instructions for developing a custom content editor app (stories app) doesn't cover the part where you need to declare ContentClipboard component in the proper scope.
<components> <id>app-my-stories-browser</id> <component> <type>info.magnolia.ui.framework.ContentClipboard</type> <implementation>info.magnolia.ui.contentapp.action.clipboard.JcrClipboard</implementation> </component> </components>
Failing to do so leads to this error:
2022-05-10 17:57:22,675 ERROR agnolia.ui.framework.app.AppInstanceControllerImpl: Sub-app [browser] of app [my-stories] failed to start info.magnolia.objectfactory.MgnlInstantiationException: Failed to create instance of [class info.magnolia.ui.contentapp.browser.Browser] at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:138) ~[magnolia-core-6.2.18.jar:?] ... ... Caused by: java.lang.UnsupportedOperationException at info.magnolia.ui.framework.ContentClipboard.getContents(ContentClipboard.java:66) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.framework.ContentClipboard.isEmpty(ContentClipboard.java:59) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.action.clipboard.CanPasteContentRule.isAvailable(CanPasteContentRule.java:59) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.availability.DefaultAvailabilityChecker.isAvailable(DefaultAvailabilityChecker.java:80) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.availability.DefaultAvailabilityChecker.lambda$isAvailable$1(DefaultAvailabilityChecker.java:64) ~[magnolia-ui-framework-6.2.18.jar:?] at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) ~[?:1.8.0_211] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_211] at java.util.LinkedList$LLSpliterator.tryAdvance(LinkedList.java:1249) ~[?:1.8.0_211] at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731) ~[?:1.8.0_211] at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) ~[?:1.8.0_211] at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) ~[?:1.8.0_211] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:1.8.0_211] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_211] at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) ~[?:1.8.0_211] at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) ~[?:1.8.0_211] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_211] at java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:454) ~[?:1.8.0_211] at info.magnolia.ui.availability.DefaultAvailabilityChecker.isAvailable(DefaultAvailabilityChecker.java:64) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.actions.ActionbarPresenter.lambda$getAvailabilityFilter$4(ActionbarPresenter.java:156) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.actions.ActionbarPresenter.isEnabledAction(ActionbarPresenter.java:130) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$null$1(ActionbarView.java:127) ~[magnolia-ui-framework-6.2.18.jar:?] at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_211] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$null$2(ActionbarView.java:125) ~[magnolia-ui-framework-6.2.18.jar:?] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[?:1.8.0_211] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$null$3(ActionbarView.java:116) ~[magnolia-ui-framework-6.2.18.jar:?] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[?:1.8.0_211] at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080) ~[?:1.8.0_211] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.lambda$initialiseActionbar$4(ActionbarView.java:112) ~[magnolia-ui-framework-6.2.18.jar:?] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[?:1.8.0_211] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.initialiseActionbar(ActionbarView.java:109) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.actions.ActionbarView.<init>(ActionbarView.java:85) ~[magnolia-ui-framework-6.2.18.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_211] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_211] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_211] at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:129) ~[magnolia-core-6.2.18.jar:?] at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:99) ~[magnolia-core-6.2.18.jar:?] at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:134) ~[magnolia-core-6.2.18.jar:?] at info.magnolia.ui.framework.ioc.UiComponentProvider.lambda$newInstanceWithParameterResolvers$3(UiComponentProvider.java:137) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.framework.ioc.UiComponentProvider.provideInCurrentScope(UiComponentProvider.java:177) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.framework.ioc.UiComponentProvider.newInstanceWithParameterResolvers(UiComponentProvider.java:137) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.framework.ioc.UiComponentProvider.newInstance(UiComponentProvider.java:128) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.UIComponent.create(UIComponent.java:139) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.Browser.layout(Browser.java:142) ~[magnolia-ui-framework-6.2.18.jar:?] at info.magnolia.ui.contentapp.browser.Browser.<init>(Browser.java:114) ~[magnolia-ui-framework-6.2.18.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_211] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_211] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_211] at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:129) ~[magnolia-core-6.2.18.jar:?] at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:99) ~[magnolia-core-6.2.18.jar:?] at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:134) ~[magnolia-core-6.2.18.jar:?]
Acceptance criteria