Using Component in Macro

Hey guys,

I´m writing my own macro at the moment which should use the existing formula macro internally.

I think this should be generally possible as other components (not macros) can also be used in other components as well, etc.

What I´m missing here? I took the example macro from the tutorial and used the @Inject annotation to get a initialized FormulaMacro from the ComponentManager. This seems not really to work. Do I have to add all components I use into the components.txt or just those I just create in my project?

Best regards and many thanks for your help in advance! :slight_smile:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.acme.IntegrationTests
Tests run: 4, Failures: 4, Errors: 0, Skipped: 0, Time elapsed: 1.401 sec <<< FAILURE!

Results :

Failed tests: 
  example2.test [xwiki/2.1, xhtml/1.0](org.xwiki.rendering.test.integration.RenderingTest): expected:<<p>This is inline [hello]</p>> but was:<<p>This is inline [<span class="xwikirenderingerror">Invalid macro: kxformula. Cause: [Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]]. Click on this message for details.</span><span class="xwikirenderingerrordescription hidden"><tt class="wikimodel-verbatim">org.xwiki.rendering.macro.MacroLookupException: Macro [kxformula/xwiki/2.1] failed to be instantiated.
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:135)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation$PriorityMacroBlockMatcher.match(MacroTransformation.java:115)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:253)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.AbstractBlock.getFirstBlock(AbstractBlock.java:568)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:202)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:95)
	at org.xwiki.rendering.test.integration.RenderingTest.runTestInternal(RenderingTest.java:140)
	at org.xwiki.rendering.test.integration.RenderingTest.execute(RenderingTest.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:192)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:107)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
	at com.sun.proxy.$Proxy0.invoke(Unknown Source)
	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.acme.internal.ExampleMacro] identified by [role = [interface org.xwiki.rendering.macro.Macro] hint = [kxformula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:394)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:129)
	... 48 more
Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:401)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
	at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
	... 50 more
</tt></span>]</p>>
  example2.test [xwiki/2.1, event/1.0](org.xwiki.rendering.test.integration.RenderingTest): expected:<...] [parameter=hello]
[onWord [hello]]
endMacroMarkerInli...> but was:<...] [parameter=hello]
[beginFormat [NONE] [[class]=[xwikirenderingerror]]
onWord [Invalid macro: kxformula. Cause: [Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]]. Click on this message for details.]
endFormat [NONE] [[class]=[xwikirenderingerror]]
beginFormat [NONE] [[class]=[xwikirenderingerrordescription hidden]]
onVerbatim [org.xwiki.rendering.macro.MacroLookupException: Macro [kxformula/xwiki/2.1] failed to be instantiated.
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:135)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation$PriorityMacroBlockMatcher.match(MacroTransformation.java:115)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:253)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.AbstractBlock.getFirstBlock(AbstractBlock.java:568)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:202)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:95)
	at org.xwiki.rendering.test.integration.RenderingTest.runTestInternal(RenderingTest.java:140)
	at org.xwiki.rendering.test.integration.RenderingTest.execute(RenderingTest.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:192)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:107)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
	at com.sun.proxy.$Proxy0.invoke(Unknown Source)
	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.acme.internal.ExampleMacro] identified by [role = [interface org.xwiki.rendering.macro.Macro] hint = [kxformula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:394)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:129)
	... 48 more
Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:401)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
	at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
	... 50 more
] [true]
endFormat [NONE] [[class]=[xwikirenderingerrordescription hidden]]]
endMacroMarkerInli...>
  example1.test [xwiki/2.1, xhtml/1.0](org.xwiki.rendering.test.integration.RenderingTest): expected:<<[p>hello</p]>> but was:<<[div class="xwikirenderingerror">Invalid macro: kxformula. Cause: [Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]]. Click on this message for details.</div><div class="xwikirenderingerrordescription hidden"><pre>org.xwiki.rendering.macro.MacroLookupException: Macro [kxformula/xwiki/2.1] failed to be instantiated.
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:135)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation$PriorityMacroBlockMatcher.match(MacroTransformation.java:115)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:253)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.AbstractBlock.getFirstBlock(AbstractBlock.java:568)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:202)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:95)
	at org.xwiki.rendering.test.integration.RenderingTest.runTestInternal(RenderingTest.java:140)
	at org.xwiki.rendering.test.integration.RenderingTest.execute(RenderingTest.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:192)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:107)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
	at com.sun.proxy.$Proxy0.invoke(Unknown Source)
	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.acme.internal.ExampleMacro] identified by [role = [interface org.xwiki.rendering.macro.Macro] hint = [kxformula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:394)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:129)
	... 47 more
Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:401)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
	at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
	... 49 more
</pre></div]>>
  example1.test [xwiki/2.1, event/1.0](org.xwiki.rendering.test.integration.RenderingTest): expected:<...rameter=hello]
begin[Paragraph
onWord [hello]
endParagraph]
endMacroMarkerStand...> but was:<...rameter=hello]
begin[Group [[class]=[xwikirenderingerror]]
onWord [Invalid macro: kxformula. Cause: [Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]]. Click on this message for details.]
endGroup [[class]=[xwikirenderingerror]]
beginGroup [[class]=[xwikirenderingerrordescription hidden]]
onVerbatim [org.xwiki.rendering.macro.MacroLookupException: Macro [kxformula/xwiki/2.1] failed to be instantiated.
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:135)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation$PriorityMacroBlockMatcher.match(MacroTransformation.java:115)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:253)
	at org.xwiki.rendering.block.match.BlockNavigator.getFirstBlock(BlockNavigator.java:258)
	at org.xwiki.rendering.block.AbstractBlock.getFirstBlock(AbstractBlock.java:568)
	at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:202)
	at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
	at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:95)
	at org.xwiki.rendering.test.integration.RenderingTest.runTestInternal(RenderingTest.java:140)
	at org.xwiki.rendering.test.integration.RenderingTest.execute(RenderingTest.java:103)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:192)
	at org.xwiki.rendering.test.integration.RenderingTestSuite$TestClassRunnerForParameters.runChild(RenderingTestSuite.java:107)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
	at com.sun.proxy.$Proxy0.invoke(Unknown Source)
	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.acme.internal.ExampleMacro] identified by [role = [interface org.xwiki.rendering.macro.Macro] hint = [kxformula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:394)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.rendering.internal.macro.DefaultMacroManager.getMacro(DefaultMacroManager.java:129)
	... 47 more
Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:401)
	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
	at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
	at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
	... 49 more
] [false]
endGroup [[class]=[xwikirenderingerrordescription hidden]]]
endMacroMarkerStand...>

Tests run: 4, Failures: 4, Errors: 0, Skipped: 0

…I also get almost the same error when I try to include a Logger in a different component:

Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [com.acme.internal.DefaultHelloWorld] identified by [role = [interface com.acme.HelloWorld] hint = [default]]
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:394)
at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
... 185 common frames omitted
Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [interface org.xwiki.logging.Logger] hint = [default]]
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:401)
at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:190)
at org.xwiki.component.embed.EmbeddableComponentManager.getDependencyInstance(EmbeddableComponentManager.java:363)
at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:312)
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:424)
at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:392)
... 190 common frames omitted

The error says “Can’t find descriptor for the component [role = [interface org.xwiki.logging.Logger] hint = [default]]”. That’s normal since that doesn’t exist :wink:

What you need to inject for logging is defined here:
http://extensions.xwiki.org/xwiki/bin/view/Extension/Component%20Module#HComponentLogging

Notice the package: org.slf4j.Logger :slight_smile:

The error in the stack trace is:

Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component [role = [class org.xwiki.rendering.internal.macro.formula.FormulaMacro] hint = [formula]]

This means that the test couldn’t find a component role org.xwiki.rendering.internal.macro.formula.FormulaMacro . And that’s normal since it doesn’t exist.

The Component role for a Macro is org.xwiki.rendering.macro.Macro.

So you need to write:

...
@Inject
@Named('formula')
private Macro formulaMacro;
...

For more details, please see the reference doc at http://extensions.xwiki.org/xwiki/bin/view/Extension/Component%20Module

Hope it helps!

Hi, thanks a lot - I used org.xwiki.logging.Logger …thought this was the standard way. But thanks for the hint :slight_smile:

This helped! Thanks a lot :slight_smile: …I think I stuck on a way that seemed right to me - sorry for not having a look at the linked pages. But now, it should work. Thanks! :slight_smile:

No worries. Let us know if you succeed, we always like success stories :slight_smile:

Yeah, it helped - thank you! :slight_smile:

But I´m stuck at a different point at the moment: I want to provide a dynamic dropdown-list in the macro-wizard where I pick the values for my macro parameters. I saw that this is currently only possible using enums (but therefore static). Is it somehow possible to make this dropdown list dynamic, say, provided with new data everytime it is displayed?

Thanks in advance,
Nils

ATM no, there’s no easy way to do this. You can check how it is done for the enums https://github.com/xwiki-contrib/application-ckeditor/blob/master/ui/src/main/resources/CKEditor/MacroService.xml#L153 . Ideally that IF should have a branch that says:

...
#elseif ($parameterType supports a list of allowed values)
  ## Collect the allowed values in $parameterDescriptor.values
#end

but ATM we don’t have a generic way to know if a parameter type supports a list of allowed values, except for enums.

Thanks anyway - maybe I´ll find a good workaround and post it here.

Cheers,
Nils

can i get some extension point to change the macro parameter editor by javascript? or can ichange macroservice to just fit my requirment?may be i do not need more generic solution,thanks in advance。
for i developed a macro with complicated parameters like a table with a import button to import some csv file content。

@nilsgumpfer and @nlslzf starting with XWiki 10.11RC1 it’s possible to control the type of input used for a macro parameter. See https://jira.xwiki.org/browse/XWIKI-15827 . You can find the default macro parameter displayers here https://github.com/xwiki/xwiki-platform/tree/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/html_displayer (look for them in the XWiki WAR). It needs CKEditor Integration v1.30 to work though, which will be released soon.