0 Replies Latest reply on Feb 11, 2014 2:33 PM by George Gastaldi

    Re: [forge-dev] Add module dependency

    George Gastaldi Master

      Hi Rafael,

       

      You don't need AST for your code. You can use the forge-parser API for

      that.

       

      Cast your JavaSource to JavaClass and you can call

      javaClass.getMethods() to fetch the methods the JavaClass declares. Then

      iterate through them and you'll have your information.

       

       

      On 11-02-2014 13:50, Rafael Pestano wrote:

      Hi Ivan,

       

      i need to visit AST, such as here:

      https://github.com/rmpestano/intrabundle/blob/master/src/main/java/br/ufrgs/rmpestano/intrabundle/jdt/StaleReferencesVisitor.java

      and here:

      https://github.com/rmpestano/intrabundle/blob/master/src/main/java/br/ufrgs/rmpestano/intrabundle/model/OSGiModuleImpl.java#L373

       

      that can be done with forge parser?

       

      I have no issues with the tests.

       

      One thing that would solve the problem would be to provide module.xml

      inside the plugin which would override default module.xml , something

      like is done with jboss-deployment-structure in Java EE apps, is that

      possible?

       

      >

      >

      2014-02-10 16:46 GMT-02:00 Ivan St. Ivanov <ivan.st.ivanov@gmail.com

      <mailto:ivan.st.ivanov@gmail.com>>:

       

          Hi Rafael,

       

          Most probably the reason for the class cast exception is that you

          have declared compile dependency to both the Forge parser and the

          jdt-core module. The parser module has itself dependency to jdt

          core. Both modules are loaded in separate classloaders. So maybe

          Forge loads the CompilationUnit class in different classloader

          than yours.

       

          So I would expect that the provided scope should work, not sure

          why it failed.

       

          I would suggest following what George asked earlier in this

          thread: /Why do you need to access

          org.eclipse.jdt.core.dom.CompilationUnit? You should only use the

          classes in java-parser-api that is already provided when you add a

          dependency to forge-shell-api/

       

          Besides the classloading issues, the Forge parser API is much more

          intuitive to use than JDT core. The downside is that not all of

          the JDT core is wrapped. But I hope that it has everything you need.

       

          Cheers,

          Ivan

       

      >

          On Mon, Feb 10, 2014 at 7:07 PM, Rafael Pestano

          <rmpestano@gmail.com <mailto:rmpestano@gmail.com>> wrote:

       

              same exceptions, with compile got classcast and with provided

              classnot found

       

      >

              2014-02-10 14:58 GMT-02:00 George Gastaldi

              <ggastald@redhat.com <mailto:ggastald@redhat.com>>:

       

                  Try adding|<dependencies-as-resource-root/> to your

                  forge.xml file as described in:

                  |

                  http://forge.jboss.org/docs/plugin_development/reference-libraries.html

       

      >

       

                  On 10-02-2014 14:55, Rafael Pestano wrote:

      >>             there isnt an easy way to add                      **ERROR** Exception encountered: (type "set VERBOSE

      >>                 false" to disable stack traces)

      >>                 java.lang.ClassNotFoundException:

      >>                 org.eclipse.jdt.core.dom.CompilationUnit from [Module

      >>                 "br.ufrgs.rmpestano.intrabundle:0.1-SNAPSHOT-3734196a-d501-400f-b6ec-bfcd0ce08b99"

      >>                 from local module loader @1eac903 (roots:

      >>                 /home/rmpestano/projetos/forge/dist/forge-distribution-1.4.3.Final/modules,/home/rmpestano/.forge/plugins,/home/rmpestano/projetos)]

      >>                         at

      >>                 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

      >>                         at

      >>                 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)

      >>                         at

      >>                 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)

      >>                         at

      >>                 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)

      >>                         at

      >>                 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

      >>

      >>

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.verifyStaleReference(OSGiModuleImpl.java:368)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:359)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:354)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:354)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.findStaleReferences(OSGiModuleImpl.java:346)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.getStaleReferences(OSGiModuleImpl.java:461)

      >>                         at

      >>                 br.ufrgs.rmpestano.intrabundle.plugin.BundlePlugin.staleReferences(BundlePlugin.java:107)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>                 Method)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>                         at

      >>                 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>                         at

      >>                 java.lang.reflect.Method.invoke(Method.java:606)

      >>                         at

      >>                 org.jboss.forge.shell.command.Execution.perform(Execution.java:160)

      >>                         at

      >>                 org.jboss.forge.shell.command.fshparser.FSHRuntime.run(FSHRuntime.java:109)

      >>                         at

      >>                 org.jboss.forge.shell.command.fshparser.FSHRuntime.run(FSHRuntime.java:47)

      >>                         at

      >>                 org.jboss.forge.shell.ShellImpl$ExecutorThread.run(ShellImpl.java:796)

      >>                         at

      >>                 org.jboss.forge.shell.ShellImpl.execute(ShellImpl.java:819)

      >>                         at

      >>                 org.jboss.forge.shell.ShellImpl.doShell(ShellImpl.java:609)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>                 Method)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>                         at

      >>                 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>                         at

      >>                 java.lang.reflect.Method.invoke(Method.java:606)

      >>                         at

      >>                 org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:48)

      >>                         at

      >>                 org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:125)

      >>                         at

      >>                 org.jboss.forge.shell.ShellImpl$Proxy$_$$_WeldClientProxy.doShell(ShellImpl$Proxy$_$$_WeldClientProxy.java)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>                 Method)

      >>                         at

      >>                 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>                         at

      >>                 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>                         at

      >>                 java.lang.reflect.Method.invoke(Method.java:606)

      >>                         at

      >>                 org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)

      >>                         at

      >>                 org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)

      >>                         at

      >>                 org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)

      >>                         at

      >>                 org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)

      >>                         at

      >>                 org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)

      >>                         at

      >>                 org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)

      >>                         at

      >>                 org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)

      >>                         at

      >>                 org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:282)

      >>                         at

      >>                 org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:265)

      >>                         at

      >>                 org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:234)

      >>                         at

      >>                 org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:635)

      >>                         at

      >>                 org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:622)

      >>                         at

      >>                 org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:616)

      >>                         at

      >>                 org.jboss.forge.shell.Bootstrap$1.run(Bootstrap.java:186)

      >>                         at java.lang.Thread.run(Thread.java:744)

      >>

      >>

      >>                 2014-02-10 14:48 GMT-02:00 George Gastaldi

      >>                                      **ERROR** Exception encountered: (type "set

      >>>                     VERBOSE false" to disable stack traces)

      >>>                     java.lang.ClassCastException:

      >>>                     org.eclipse.jdt.core.dom.CompilationUnit cannot

      >>>                     be cast to org.eclipse.jdt.core.dom.CompilationUnit

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.verifyStaleReference(OSGiModuleImpl.java:368)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:359)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:354)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.searchStaleReferences(OSGiModuleImpl.java:354)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.findStaleReferences(OSGiModuleImpl.java:346)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.model.OSGiModuleImpl.getStaleReferences(OSGiModuleImpl.java:461)

      >>>                             at

      >>>                     br.ufrgs.rmpestano.intrabundle.plugin.BundlePlugin.staleReferences(BundlePlugin.java:107)

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>>                     Method)

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>>                             at

      >>>                     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>>                             at

      >>>                     java.lang.reflect.Method.invoke(Method.java:606)

      >>>                             at

      >>>                     org.jboss.forge.shell.command.Execution.perform(Execution.java:160)

      >>>                             at

      >>>                     org.jboss.forge.shell.command.fshparser.FSHRuntime.run(FSHRuntime.java:109)

      >>>                             at

      >>>                     org.jboss.forge.shell.command.fshparser.FSHRuntime.run(FSHRuntime.java:47)

      >>>                             at

      >>>                     org.jboss.forge.shell.ShellImpl$ExecutorThread.run(ShellImpl.java:796)

      >>>                             at

      >>>                     org.jboss.forge.shell.ShellImpl.execute(ShellImpl.java:819)

      >>>                             at

      >>>                     org.jboss.forge.shell.ShellImpl.doShell(ShellImpl.java:609)

      >>>

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>>                     Method)

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>>                             at

      >>>                     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>>                             at

      >>>                     java.lang.reflect.Method.invoke(Method.java:606)

      >>>                             at

      >>>                     org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:48)

      >>>                             at

      >>>                     org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:125)

      >>>                             at

      >>>                     org.jboss.forge.shell.ShellImpl$Proxy$_$$_WeldClientProxy.doShell(ShellImpl$Proxy$_$$_WeldClientProxy.java)

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke0(Native

      >>>                     Method)

      >>>                             at

      >>>                     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      >>>                             at

      >>>                     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      >>>                             at

      >>>                     java.lang.reflect.Method.invoke(Method.java:606)

      >>>                             at

      >>>                     org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)

      >>>                             at

      >>>                     org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)

      >>>                             at

      >>>                     org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)

      >>>                             at

      >>>                     org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)

      >>>                             at

      >>>                     org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)

      >>>                             at

      >>>                     org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)

      >>>                             at

      >>>                     org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)

      >>>                             at

      >>>                     org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:282)

      >>>                             at

      >>>                     org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:265)

      >>>                             at

      >>>                     org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:234)

      >>>                             at

      >>>                     org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:635)

      >>>                             at

      >>>                     org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:622)

      >>>                             at

      >>>                     org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:616)

      >>>                             at

      >>>                     org.jboss.forge.shell.Bootstrap$1.run(Bootstrap.java:186)

      >>>                             at java.lang.Thread.run(Thread.java:744)

      >>>

      >>>

      >>>

      >>>

      >>>                     2014-02-10 14:16 GMT-02:00 Rafael Pestano

      >>>                                                      but i receive **ERROR** Exception

      >>>>                                 encountered: (type "set VERBOSE

      >>>>                                 false" to disable stack traces)

      >>>>                                 java.lang.ClassNotFoundException:

      >>>>                                 org.eclipse.jdt.core.dom.CompilationUnit

      >>>>                                 from [Module

      >>>>                                 "br.ufrgs.rmpestano.intrabundle:0.1-SNAPSHOT-35a537a5-1ab6-4b19-a253-03e3bbfae57d"

      >>>>                                 from local module loader @1eac903

      >>>>                                 (roots:

      >>>>                                 /home/rmpestano/projetos/forge/dist/forge-distribution-1.4.3.Final/modules,/home/rmpestano/.forge/plugins,/home/rmpestano/projetos)]

      >>>>

      >>>>                                 if i add(manually)

      >>>>                                 org.eclipse.javaparser module

      >>>>                                 dependency in my plugin module.xml

      >>>>                                 everything works.

      >>>>

      >>>>                                 How can i tell forge that i need

      >>>>                                 that dependency?

      >>>>

      >>>>                                 Thanks in advance

      >>>>

      >>>>                                 http://forge.jboss.org/docs/plugin_development/reference-libraries.html

      >>>>                                 --

      >>>>                                 <http://www.advancedit.com.br/>Att,

      >>>>

      >>>>                                 Rafael M. Pestano

      >>>>

      >>>>                                 Desenvolvedor Java Cia. de

      >>>>                                 Processamento de Dados do Rio

      >>>>                                 Grande do Sul

      >>>>                                 Graduando em Ciência da Computação

      >>>>                                 UFRGS

      >>>>                                 http://conventionsframework.org

      >>>>                                 <http://conventions.github.io/home/>

      >>>>                                 http://rpestano.wordpress.com/

      >>>>                                 @realpestano

      >>>>

      >>>>

      >>>>

      >>>>

      >>>>                             --

      >>>>                             <http://www.advancedit.com.br/>Att,

      >>>>

      >>>>                             Rafael M. Pestano

      >>>>

      >>>>                             Desenvolvedor Java Cia. de

      >>>>                             Processamento de Dados do Rio Grande do Sul

      >>>>                             Graduando em Ciência da Computação UFRGS

      >>>>                             http://conventionsframework.org

      >>>>                             <http://conventions.github.io/home/>

      >>>>                             http://rpestano.wordpress.com/

      >>>>                             @realpestano

      >>>>

      >>>>

      >>>>                             _______________________________________________

      >>>>                             forge-dev mailing list

      >>>>                             forge-dev@lists.jboss.org  <mailto:forge-dev@lists.jboss.org>

      >>>>                             https://lists.jboss.org/mailman/listinfo/forge-dev

      >>>

      >>>

      >>>                             _______________________________________________

      >>>                             forge-dev mailing list

      >>>                             forge-dev@lists.jboss.org

      >>>                             <mailto:forge-dev@lists.jboss.org>

      >>>                             https://lists.jboss.org/mailman/listinfo/forge-dev

      >>>

      >>>

      >>>

      >>>

      >>>                         --

      >>>                         <http://www.advancedit.com.br/>Att,

      >>>

      >>>                         Rafael M. Pestano

      >>>

      >>>                         Desenvolvedor Java Cia. de Processamento de

      >>>                         Dados do Rio Grande do Sul

      >>>                         Graduando em Ciência da Computação UFRGS

      >>>                         http://conventionsframework.org

      >>>                         <http://conventions.github.io/home/>

      >>>                         http://rpestano.wordpress.com/

      >>>                         @realpestano

      >>>

      >>>

      >>>

      >>>

      >>>                     --

      >>>                     <http://www.advancedit.com.br/>Att,

      >>>

      >>>                     Rafael M. Pestano

      >>>

      >>>                     Desenvolvedor Java Cia. de Processamento de

      >>>                     Dados do Rio Grande do Sul

      >>>                     Graduando em Ciência da Computação UFRGS

      >>>                     http://conventionsframework.org

      >>>                     <http://conventions.github.io/home/>

      >>>                     http://rpestano.wordpress.com/

      >>>                     @realpestano

      >>>

      >>>

      >>>                     _______________________________________________

      >>>                     forge-dev mailing list

      >>>                     forge-dev@lists.jboss.org  <mailto:forge-dev@lists.jboss.org>

      >>>                     https://lists.jboss.org/mailman/listinfo/forge-dev

      >>

      >>

      >>                     _______________________________________________

      >>                     forge-dev mailing list

      >>                     forge-dev@lists.jboss.org

      >>                     <mailto:forge-dev@lists.jboss.org>

      >>                     https://lists.jboss.org/mailman/listinfo/forge-dev

      >>

      >>

      >>

      >>

      >>                 --

      >>                 <http://www.advancedit.com.br/>Att,

      >>

      >>                 Rafael M. Pestano

      >>

      >>                 Desenvolvedor Java Cia. de Processamento de Dados do

      >>                 Rio Grande do Sul

      >>                 Graduando em Ciência da Computação UFRGS

      >>                 http://conventionsframework.org

      >>                 <http://conventions.github.io/home/>

      >>                 http://rpestano.wordpress.com/

      >>                 @realpestano

      >>

      >>

      >>

      >>

      >>             --

      >>             <http://www.advancedit.com.br/>Att,

      >>

      >>             Rafael M. Pestano

      >>

      >>             Desenvolvedor Java Cia. de Processamento de Dados do Rio

      >>             Grande do Sul

      >>             Graduando em Ciência da Computação UFRGS

      >>             http://conventionsframework.org

      >>             <http://conventions.github.io/home/>

      >>             http://rpestano.wordpress.com/

      >>             @realpestano

      >>

      >>

      >>             _______________________________________________

      >>             forge-dev mailing list

      >>             forge-dev@lists.jboss.org  <mailto:forge-dev@lists.jboss.org>

      >>             https://lists.jboss.org/mailman/listinfo/forge-dev

      >

                  _______________________________________________

                  forge-dev mailing list

                  forge-dev@lists.jboss.org <mailto:forge-dev@lists.jboss.org>

                  https://lists.jboss.org/mailman/listinfo/forge-dev

       

      >

      >

              --

              <http://www.advancedit.com.br/>Att,

       

              Rafael M. Pestano

       

              Desenvolvedor Java Cia. de Processamento de Dados do Rio

              Grande do Sul

              Graduando em Ciência da Computação UFRGS

              http://conventionsframework.org

              <http://conventions.github.io/home/>

              http://rpestano.wordpress.com/

              @realpestano

       

              _______________________________________________

              forge-dev mailing list

              forge-dev@lists.jboss.org <mailto:forge-dev@lists.jboss.org>

              https://lists.jboss.org/mailman/listinfo/forge-dev

       

      >

       

          _______________________________________________

          forge-dev mailing list

          forge-dev@lists.jboss.org <mailto:forge-dev@lists.jboss.org>

          https://lists.jboss.org/mailman/listinfo/forge-dev

       

      >

      >

      --

      <http://www.advancedit.com.br/>Att,

       

      Rafael M. Pestano

       

      Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul

      Graduando em Ciência da Computação UFRGS

      http://conventionsframework.org <http://conventions.github.io/home/>

      http://rpestano.wordpress.com/

      @realpestano

       

      >

      _______________________________________________

      forge-dev mailing list

      forge-dev@lists.jboss.org

      https://lists.jboss.org/mailman/listinfo/forge-dev