[forge-dev] Command test in a [non-core] addon

Ivan St. Ivanov ivan.st.ivanov at gmail.com
Sat Aug 15 17:05:15 EDT 2015


I removed the dependency to core and added to some other addons that we
depend on. Attached is the new pom.xml.

The exception when I run the test still exists. I cleaned up the .forge
directory and installed the addon. And it is the only thing that goes in
the addons directory.

On Sat, Aug 15, 2015 at 11:34 PM, George Gastaldi <ggastald at redhat.com>
wrote:

> It looks like your addon might be bundling classes that shouldn't be
> there. Try installing your addon in forge and see what goes in your
> ~/.forge/addons.
>
> Also try removing the dependency to core (as it is not needed).
> Em 15/08/2015 17:09, "Ivan St. Ivanov" <ivan.st.ivanov at gmail.com>
> escreveu:
>
>> Hi George,
>>
>> I am afraid this did not help. Here is the exception again:
>>
>> Caused by: java.lang.LinkageError: loader constraint violation: when
>> resolving overridden method
>> "org.jboss.forge.addon.springboot.ui.SpringBootSetupCommand.getProjectFactory()Lorg/jboss/forge/addon/projects/ProjectFactory;"
>> the class loader (instance of org/jboss/modules/ModuleClassLoader) of the
>> current class, org/jboss/forge/addon/springboot/ui/SpringBootSetupCommand,
>> and its superclass loader (instance of
>> org/jboss/modules/ModuleClassLoader), have different Class objects for the
>> type
>> tupCommand.getProjectFactory()Lorg/jboss/forge/addon/projects/ProjectFactory;
>> used in the signature
>> at java.lang.Class.getDeclaredMethods0(Native Method)
>> at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
>> at java.lang.Class.getDeclaredMethods(Class.java:1860)
>> at java.lang.Class.getEnclosingMethod(Class.java:937)
>> at
>> org.jboss.weld.util.reflection.Reflections.isNonStaticInnerClass(Reflections.java:401)
>> at
>> org.jboss.weld.util.Beans.isTypeManagedBeanOrDecoratorOrInterceptor(Beans.java:492)
>> at
>> org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:213)
>> at
>> org.jboss.weld.bootstrap.BeanDeployer.createClassBeans(BeanDeployer.java:191)
>> at
>> org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:262)
>> at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:373)
>> at
>> org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
>> at org.jboss.weld.environment.se.Weld.initialize(Weld.java:134)
>> at
>> org.jboss.forge.furnace.container.cdi.lifecycle.WeldAddonLifecycleProvider.start(WeldAddonLifecycleProvider.java:77)
>> at
>> org.jboss.forge.furnace.impl.addons.AddonRunnable$2.call(AddonRunnable.java:92)
>> at
>> org.jboss.forge.furnace.impl.addons.AddonRunnable$2.call(AddonRunnable.java:86)
>> at
>> org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)
>> at
>> org.jboss.forge.furnace.impl.addons.AddonRunnable.run(AddonRunnable.java:85)
>> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>>
>> Cheers,
>> Ivan
>>
>> On Sat, Aug 15, 2015 at 10:42 PM, George Gastaldi <ggastald at redhat.com>
>> wrote:
>>
>>> I think the solution in your case is to remove the provided scope from
>>> your addons.
>>>
>>> Here is where this is better explained :
>>> https://github.com/forge/core/blob/master/README.asciidoc#what-scope-should-my-addon-dependencies-be
>>>
>>> Best Regards,
>>>
>>> George Gastaldi
>>> Em 15/08/2015 16:28, "Ivan St. Ivanov" <ivan.st.ivanov at gmail.com>
>>> escreveu:
>>>
>>>> Hi folks,
>>>>
>>>> I am now working on a test of the Spring Boot addon setup command. I
>>>> was really happy with the changes that you did in the Forge test
>>>> infrastructure that allow avoiding listing all the addons that my command
>>>> depends on in the @AddonDependencies annotation as well as repeating some
>>>> of them in the deployment method body. I was finally able to write
>>>> tests like that
>>>> <https://github.com/forge/core/blob/master/javaee/tests/src/test/java/org/jboss/forge/addon/javaee/security/ui/AbstractSecurityCommandTest.java>
>>>> :
>>>>
>>>> @Deployment
>>>> @AddonDependencies
>>>> public static AddonArchive getDeployment()
>>>> {
>>>>    return ShrinkWrap
>>>>             .create(AddonArchive.class)
>>>>             .addBeansXML()
>>>>             .addClass(ProjectHelper.class)
>>>>             .addClass(AbstractSecurityCommandTest.class);
>>>> }
>>>>
>>>> So I tried the same thing with the Spring Boot addon
>>>> <https://github.com/bgjug/spring-boot-forge-addon> that we started
>>>> developing in our JUG. However the test failed. I have attached both the
>>>> test and the whole log file. I will here just paste the exception that
>>>> stands out:
>>>>
>>>> Caused by: java.lang.LinkageError: loader constraint violation: when
>>>> resolving overridden method
>>>> "org.jboss.forge.addon.springboot.ui.SpringBootSetupCommand.getProjectFactory()Lorg/jboss/forge/addon/projects/ProjectFactory;"
>>>> the class loader (instance of org/jboss/modules/ModuleClassLoader) of the
>>>> current class, org/jboss/forge/addon/springboot/ui/SpringBootSetupCommand,
>>>> and its superclass loader (instance of
>>>> org/jboss/modules/ModuleClassLoader), have different Class objects for the
>>>> type
>>>> tupCommand.getProjectFactory()Lorg/jboss/forge/addon/projects/ProjectFactory;
>>>> used in the signature
>>>> at java.lang.Class.getDeclaredMethods0(Native Method)
>>>> at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
>>>> at java.lang.Class.getDeclaredMethods(Class.java:1860)
>>>> at java.lang.Class.getEnclosingMethod(Class.java:937)
>>>> at
>>>> org.jboss.weld.util.reflection.Reflections.isNonStaticInnerClass(Reflections.java:401)
>>>> at
>>>> org.jboss.weld.util.Beans.isTypeManagedBeanOrDecoratorOrInterceptor(Beans.java:492)
>>>> at
>>>> org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:213)
>>>> at
>>>> org.jboss.weld.bootstrap.BeanDeployer.createClassBeans(BeanDeployer.java:191)
>>>> at
>>>> org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:262)
>>>> at
>>>> org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:373)
>>>> at
>>>> org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
>>>> at org.jboss.weld.environment.se.Weld.initialize(Weld.java:134)
>>>> at
>>>> org.jboss.forge.furnace.container.cdi.lifecycle.WeldAddonLifecycleProvider.start(WeldAddonLifecycleProvider.java:77)
>>>> at
>>>> org.jboss.forge.furnace.impl.addons.AddonRunnable$2.call(AddonRunnable.java:92)
>>>> at
>>>> org.jboss.forge.furnace.impl.addons.AddonRunnable$2.call(AddonRunnable.java:86)
>>>> at
>>>> org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)
>>>> at
>>>> org.jboss.forge.furnace.impl.addons.AddonRunnable.run(AddonRunnable.java:85)
>>>> at
>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>>
>>>> What I see different between the spring boot addon and the java ee
>>>> addon, where the referenced test belongs to, is that our addon has its
>>>> pom.xml dependencies in *provided* scope.
>>>>
>>>> Is that the possible cause? Would you please give us advise how to
>>>> write tests outside the core addons?
>>>>
>>>> Thanks and regards,
>>>> Ivan
>>>>
>>>> _______________________________________________
>>>> forge-dev mailing list
>>>> forge-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>>
>>>
>>> _______________________________________________
>>> forge-dev mailing list
>>> forge-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>
>>
>>
>> _______________________________________________
>> forge-dev mailing list
>> forge-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/forge-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20150816/e8767e39/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pom.xml
Type: text/xml
Size: 4978 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/forge-dev/attachments/20150816/e8767e39/attachment-0001.xml 


More information about the forge-dev mailing list