Try adding|<dependencies-as-resource-root/> to your forge.xml file as
described in:
|
there isnt an easy way to add <module
name="org.eclipse.javaparser" />
to my plugin module.xml at build time?
2014-02-10 14:52 GMT-02:00 Rafael Pestano <rmpestano(a)gmail.com
<mailto:rmpestano@gmail.com>>:
Hi George,
that was my first attempt, i got classnotfound, see stacktrace:
***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 <ggastald(a)redhat.com
<mailto:ggastald@redhat.com>>:
Rafael,
Try adding your JDT dependencies as provided. I'm afraid Forge
1 won't handle conflicting classes very well. This is fixed in
Forge 2.
On 10-02-2014 14:43, Rafael Pestano wrote:
> Hi Ivan
> "Are you sure that changing the scope to compile won't fix
> the issue?"
>
>
> When i use compile scope i got classcast exception,(full
> stacktrace also added below) but as soon i use
> org.eclipse.jdt.core as provided and add java-parser module
> dependency to my plugin module.xml everything works. I think
> its a classloading issue.
>
> Here is the code:
> private boolean verifyStaleReference(JavaSource source) {
> CompilationUnit comp = (CompilationUnit)
> source.getInternal();
> comp.getRoot().toString();
> //todo verify services stale references
> source.getOrigin().toString();
> return true;
> }
>
>
>
> full source code is
>
here:https://github.com/rmpestano/intrabundle/blob/master/src/main/java/b...
>
> I've also tried jdt from this dependency:
> <dependency>
> <groupId>org.eclipse.jdt</groupId>
> <artifactId>org.eclipse.jdt.core</artifactId>
> <version>3.7.1</version>
> <scope>compile</scope>
> </dependency>
> i got same classcastexception.
>
> stacktrace:
> ***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
> <rmpestano(a)gmail.com <mailto:rmpestano@gmail.com>>:
>
> Hi guys,
>
> i need to access class AST, is that possible with
> forge-shell-api?
>
>
> 2014-02-10 11:41 GMT-02:00 George Gastaldi
> <ggastald(a)redhat.com <mailto:ggastald@redhat.com>>:
>
> Hi Rafael,
>
> 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. That said, forge-shell-api with the
> provided scope is the only dependency your module
> might need.
>
> See
>
https://github.com/forge/core/blob/1.x/dev-plugins/pom.xml
> as an example.
>
> Best Regards,
>
> George
>
>
> On 10-02-2014 11:14, Rafael Pestano wrote:
>> here is complete pom.xml:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <project
>>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
>>
xmlns="http://maven.apache.org/POM/4.0.0"
>>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>> <modelVersion>4.0.0</modelVersion>
>> <groupId>br.ufrgs.rmpestano</groupId>
>> <artifactId>intrabundle</artifactId>
>> <version>0.1-SNAPSHOT</version>
>> <name>intrabundle</name>
>> <properties>
>> <forge.version>1.4.4.Final</forge.version>
>>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> <forge.api.version>1.4.4.Final</forge.api.version>
>> </properties>
>> <dependencies>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-shell-api</artifactId>
>> <version>${forge.version}</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-maven-api</artifactId>
>> <version>${forge.version}</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-javaee-api</artifactId>
>> <version>${forge.version}</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>net.sf.jasperreports</groupId>
>> <artifactId>jasperreports</artifactId>
>> <version>5.1.2</version>
>> <exclusions>
>> <exclusion>
>> <artifactId>itext</artifactId>
>> <groupId>com.lowagie</groupId>
>> </exclusion>
>> <exclusion>
>> <artifactId>commons-collections</artifactId>
>> <groupId>commons-collections</groupId>
>> </exclusion>
>> <exclusion>
>> <artifactId>jdtcore</artifactId>
>> <groupId>eclipse</groupId>
>> </exclusion>
>> </exclusions>
>> </dependency>
>> <dependency>
>> <groupId>commons-collections</groupId>
>> <artifactId>commons-collections</artifactId>
>> <version>3.2.1</version>
>> </dependency>
>> <dependency>
>> <groupId>com.lowagie</groupId>
>> <artifactId>itext</artifactId>
>> <version>2.1.7</version>
>> </dependency>
>> <dependency>
>> <groupId>org.eclipse.tycho</groupId>
>> <artifactId>org.eclipse.jdt.core</artifactId>
>> <version>3.9.1.v20130905-0837</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-parser-java</artifactId>
>> <version>${forge.version}</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-test-harness</artifactId>
>> <version>${forge.version}</version>
>> <scope>test</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-shell</artifactId>
>> <version>${forge.version}</version>
>> <scope>test</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-javaee-impl</artifactId>
>> <version>${forge.version}</version>
>> <scope>test</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-parser-java-api</artifactId>
>> <version>1.4.4-SNAPSHOT</version>
>> <scope>provided</scope>
>> </dependency>
>> <dependency>
>> <groupId>org.jboss.forge</groupId>
>> <artifactId>forge-parser-java</artifactId>
>> <version>1.4.4-SNAPSHOT</version>
>> <scope>provided</scope>
>> </dependency>
>> </dependencies>
>> <repositories>
>> <repository>
>> <id>JBOSS_NEXUS</id>
>>
<
url>http://repository.jboss.org/nexus/content/groups/public</url>
>> </repository>
>> </repositories>
>> <build>
>> <plugins>
>> <plugin>
>> <artifactId>maven-compiler-plugin</artifactId>
>> <version>2.3.2</version>
>> <configuration>
>> <encoding>UTF-8</encoding>
>> <source>1.6</source>
>> <target>1.6</target>
>> </configuration>
>> </plugin>
>> <plugin>
>> <groupId>org.codehaus.mojo</groupId>
>> <artifactId>jasperreports-maven-plugin</artifactId>
>> <version>1.0-beta-1</version>
>> <executions>
>> <execution>
>> <phase>prepare-package</phase>
>> <goals>
>> <goal>compile-reports</goal>
>> </goals>
>> </execution>
>> </executions>
>> <dependencies>
>> <dependency>
>> <groupId>net.sf.jasperreports</groupId>
>> <artifactId>jasperreports</artifactId>
>> <version>5.1.2</version>
>> <scope>compile</scope>
>> <exclusions>
>> <exclusion>
>> <artifactId>itext</artifactId>
>> <groupId>com.lowagie</groupId>
>> </exclusion>
>> </exclusions>
>> </dependency>
>> <dependency>
>> <groupId>commons-digester</groupId>
>> <artifactId>commons-digester</artifactId>
>> <version>1.8</version>
>> </dependency>
>> <dependency>
>> <groupId>commons-collections</groupId>
>> <artifactId>commons-collections</artifactId>
>> <version>3.2</version>
>> </dependency>
>> <dependency>
>> <groupId>com.lowagie</groupId>
>> <artifactId>itext</artifactId>
>> <version>2.1.7</version>
>> </dependency>
>> <dependency>
>> <groupId>commons-beanutils</groupId>
>> <artifactId>commons-beanutils</artifactId>
>> <version>1.5</version>
>> </dependency>
>> </dependencies>
>> <configuration>
>> <xmlValidation>true</xmlValidation>
>>
<sourceDirectory>src/main/resources/reports</sourceDirectory>
>>
<outputDirectory>target/classes/reports</outputDirectory>
>> </configuration>
>> </plugin>
>> </plugins>
>> </build>
>> </project>
>>
>>
>>
>> 2014-02-10 10:53 GMT-02:00 Rafael Pestano
>> <rmpestano(a)gmail.com <mailto:rmpestano@gmail.com>>:
>>
>> Hi guys,
>>
>> how can i add a module dependency to my
>> plugin?(in forge 1.x)
>>
>> I'm using JavaParser and i need to access
>> org.eclipse.jdt.core.dom.CompilationUnit api
>> which is available in javaparser module
>> (org.eclipse.jdt.core-3.9.1.jar) which doesnt
>> comes in default module dependencies[1].
>>
>> in my pom.xml i use <dependency>
>> <groupId>org.eclipse.tycho</groupId>
>> <artifactId>org.eclipse.jdt.core</artifactId>
>> <version>3.9.1.v20130905-0837</version>
>> <scope>provided</scope> tried compile also
>> </dependency>
>>
>> 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
>>
>>
[
1]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(a)lists.jboss.org
<mailto:forge-dev@lists.jboss.org>
>>
https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev(a)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(a)lists.jboss.org <mailto:forge-dev@lists.jboss.org>
>
https://lists.jboss.org/mailman/listinfo/forge-dev
_______________________________________________
forge-dev mailing list
forge-dev(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev