Hi Rafael!
What you want to do sounds really interesting! Have you taken a look at the
forge-scaffold-api? Its located as a sub-folder of the github repository
that you just cloned.
This will let you use the 'scaffold from-entity' command to invoke your
code, and it will also let people use the familiar api. We can also make
some improvements to that api if you need it :)
--
Lincoln Baxter's Droid
"Keep it Simple"
On Oct 23, 2011 10:03 AM, "Rafael Pestano" <rmpestano(a)gmail.com> wrote:
I was meaning just clone it ;)
Nice to hear about the scaffolding plugin.
2011/10/23 Paul Bakker <paul.bakker.nl(a)gmail.com>
> Hi Rafael,
>
> What do you mean by clone and forge the project? On github you can just
> clone the plugin-arquillian project and start hacking on it.
> Formatting is a bit of a problem, that doesn't work very well now with the
> builder API. Maybe Lincoln can say more about that?
>
> Note that within a few weeks Forge will have a new scaffolding plugin
> built-in, that does basically something that you are doing in your plugin.
>
> Paul
>
> On Oct 23, 2011, at 3:45 PM, Rafael Pestano wrote:
>
> I've managed to clone forge repo with this address
>
https://github.com/forge/core.git now, i was using the old
>
github.com/seam/forge.git.
>
> 2011/10/23 Rafael Pestano <rmpestano(a)gmail.com>
>>
>>> Hello Paul, thanks for your enlightening reply.
>>>
>>> The plugin is about a code generator for a home made Java EE6 framework
>>> and for instance it will generate very simple xhtml and java classes, so for
>>> example the generate-controller plugin would generate
>>>
>>> *@ViewAccessScoped
>>> @Named("personMBean")
>>> public class PersonMBean extends AbstractBaseMBean<Person> implements
>>> Serializable, ModalObserver {
>>>
>>> @Inject
>>> public void setPersonService(PersonService personService) {*//service
>>> layer will be generated togheter*
>>> super.setBaseService(personService);
>>> }
>>>
>>> some other very simple methods
>>> }*
>>>
>>> for the controller-plugin maybe i dont need to understand the model
>>> class (just to import it) cause its just a matter of replacing parammeters
>>> by the domain object but in the view-plugin it will be necessary for sure.
>>>
>>> Another concern i have is how to format the generated code? maybe the
>>> velocity template could help on that.
>>>
>>> Ive seen the Arquillian example, how can i clone it and forge project?
>>>
>>> Thanks again!
>>>
>>>
>>>
>>>
>>> 2011/10/23 Paul Bakker <paul.bakker.nl(a)gmail.com>
>>>
>>>> Hi Rafael,
>>>>
>>>> There are two things you need to do:
>>>> 1) "understand" the Person class
>>>> 2) generate new code
>>>>
>>>>
>>>> 1)
>>>> You can use a command parameter to get the Person class: @Option(name =
>>>> "class", required = true, type = PromptType.JAVA_CLASS)
JavaResource
>>>> classUnderTest
>>>>
>>>> JavaResource is a rich file representation of the class.
>>>> Now you can use the JavaSourceFacet to get information about the class
>>>> itself:
>>>>
>>>> JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
>>>> JavaSource<?> javaSource = classUnderTest.getJavaSource();
>>>>
>>>> javaSource has methods such as getPackage() etc.
>>>>
>>>> 2)
>>>> Now you have to generate code. There are two ways to do this, depending
>>>> on your needs.
>>>> The most elegant way is to use the "JavaParser" builder API:
>>>>
>>>> JavaClass javaClass = JavaParser.create(JavaClass.class)
>>>> .setPackage(entityPackage)
>>>> .setName(entityName)
>>>> .setPublic()
>>>> .addAnnotation(Entity.class).getOrigin()
>>>> .addInterface(Serializable.class);
>>>> Field<JavaClass> id = javaClass.addField("private Long id =
null;");
>>>> ….
>>>>
>>>> My experience is that this works best for small classes. If you need to
>>>> generate a lot of code it might be better to use a tempting framework
such
>>>> as Apache Velocity.
>>>> You can find an example of this in the code of the Arquillian plugin:
>>>>
https://github.com/forge/plugin-arquillian/blob/master/src/main/java/org/...
>>>>
>>>> You can just add Velocity to your pom file and it will work.
>>>>
>>>> If you have any more questions, let us know! What kind of plugin are
>>>> you writing?
>>>>
>>>> Paul Bakker
>>>>
>>>>
>>>> On Oct 23, 2011, at 2:26 AM, Rafael Pestano wrote:
>>>>
>>>> Hi everyone,
>>>>
>>>> this is my first mail to this list and id like to congratulate the
>>>> Forge team for their work.
>>>>
>>>> my question is, what's the best way to generate .java, .xhtml files
>>>> with forge?
>>>>
>>>> Id like to write a plugin which would receive an entity class as
>>>> parameter and generate some code on top of it, eg:
>>>>
>>>> $ generate-service Person
>>>> $ generate-controller Person
>>>> $ generate-view Person
>>>>
>>>>
>>>> Where Person is a domain object, is it possible with Forge? if yes,
>>>> whats the best way?
>>>>
>>>>
>>>> thanks in advance.
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> <
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
>>>> _______________________________________________
>>>> forge-dev mailing list
>>>> forge-dev(a)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://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://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
> _______________________________________________
> forge-dev mailing list
> forge-dev(a)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
_______________________________________________
forge-dev mailing list
forge-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev