[DOCU-2455] Developing a custom content editor app tutorial missing clipboard component step Created: 10/May/22  Updated: 20/May/22  Resolved: 20/May/22

Status: Closed
Project: Documentation
Component/s: content
Affects Version/s: 6.2
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: Richard Gange Assignee: Alex Mansell
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
relation
Template:
Acceptance criteria:
Empty
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled

 Description   

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:?]

Generated at Mon Feb 12 01:27:17 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.