[forge-dev] Roaster - Missing or improving ?

Lincoln Baxter, III lincolnbaxter at gmail.com
Tue May 27 18:04:51 EDT 2014


Hey Antonio,

Sorry for the late reply.
Some of the functionality you ask for is missing, but some of it is there.
I believe we have a property API which will allow you to
getAccessor/Mutator, and also the Refactory should provide the functions
for generating getters/setters. The annotation stuff I think is a gap.

Gotta keep it brief, but I hope that helps. Feel free to add JIRA issues to
ROASTER for the missing stuff and we'll try to get it done!
~Lincoln


On Mon, May 26, 2014 at 9:35 AM, Antonio Goncalves <
antonio.mailing at gmail.com> wrote:

> Hi all,
>
> I'm trying to use Roster 2.4.0.Final to manipulate generated Java code at
> one of my customers. There are features that I miss, and I don't know if
> it's because it's missing, or I don't know how to do it :
>
> * Remove an attribute in an annotation. Let's say I have @Table(name =
> "myTable", schema = "mySchema"), I want to be able to remove the schema
> attribute and end up with @Table(name = "myTable")
> * Change the value of an attribute in an annotation. Let's say I have
> @OneToMany (fetch = LAZY) and I want to change LAZY to EAGER. I know how to
> get this value (ValuePair.getName() and ValuePair.getStringValue()) but I
> don't know how to set a new value (I was expecting something like
> ValuePair.setStringValue())
> * Is there a way to only get the accessors ? At the moment
> source.getMembers() returns the attributes + getters/setters,
> source.getFields() only returns the attributes and source.getMethods()
> returns all the methods. It would be nice to have sources.getAccessors()
> and that will return only the accesors
> * Indent code : the code I have in input is not well indented. I would
> love to have a method like source.indent()
> * Generate Getters/Setters/Hascode/Equals/toString : it would be great to
> have a set of methods to do the trick. Something like
> source.generateSetters, source.generateEquals
>
> Let me know if I'm missing somethings here, if some are out of the scope
> of Roaster and if some make sense and are missing I'll create a few JIRAs
>
> Antonio
>
>
> 2014-04-26 6:28 GMT+02:00 Antonio Goncalves <antonio.mailing at gmail.com>:
>
>  I had created two JIRAs for that :
>>
>> https://issues.jboss.org/browse/ROASTER-4
>> https://issues.jboss.org/browse/ROASTER-5 (looks like this one is done)
>>
>>
>> 2014-04-21 21:22 GMT+02:00 Lincoln Baxter, III <lincolnbaxter at gmail.com>:
>>
>> Hey Antonio,
>>>
>>> I'm relatively certain that we don't support Generic types on method
>>> parameters yet, but we do support them on Types and Methods themselves via
>>> the GenericCapableSource interface.
>>>
>>> Looks like we need to add this to Parameters. Could you add a feature
>>> request for this? Thanks!
>>>
>>> ~Lincoln
>>>
>>>
>>> On Sun, Mar 30, 2014 at 1:05 PM, Antonio Goncalves <
>>> antonio.mailing at gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Still playing with Roaster so I could fix
>>>> https://issues.jboss.org/browse/FORGE-1618 (Command
>>>> constraint-new-validator to create a new validator implementation). I don't
>>>> know how to do two things (nicely) :
>>>>
>>>> *# Parameterize interface*
>>>>
>>>> For a constraint, I need to implement a parametrize interface like this
>>>> :
>>>>
>>>> public class MaxValidatorForString implements ConstraintValidator<Max,
>>>> Number> {
>>>>
>>>>
>>>> The only way I could find is passing a String :
>>>>
>>>> final JavaClassSource javaClass = Roaster.*create*(JavaClassSource.
>>>> class);
>>>> javaClass.setName("MaxValidatorForString");
>>>> javaClass.addImport(ConstraintValidator.class);
>>>> javaClass.addInterface("ConstraintValidator<Max, Number>");
>>>>
>>>> It's a shame because with addInterface(Class), it does the import
>>>> automatically and things are more typed. But I cannot add types :
>>>>
>>>> final JavaClassSource javaClass = Roaster.*create*(JavaClassSource.
>>>> class);
>>>> javaClass.setName("MaxValidatorForString");
>>>> javaClass.addInterface(ConstraintValidator.class);
>>>>
>>>> It would be good to have something like :
>>>>
>>>> javaClass.addInterface(ConstraintValidator.class).
>>>> addType(Max.class).addType(Number.class);
>>>>
>>>> *# Typed parameters*
>>>>
>>>> My isValid method takes two parameters. And the only way to add two
>>>> parameters seems to be by a String
>>>>
>>>> javaClass.addMethod().setPublic().setName("isValid").setReturnType(
>>>> "boolean").setParameters("Number value, ConstraintValidatorContext
>>>> context").setBody("return false;").addAnnotation(Override.class);
>>>>
>>>> Again, it would be nice to have typed parameters so the import is
>>>> implicit, and things are a bit more typed :
>>>>
>>>> javaClass.addMethod().setPublic().setName("isValid").setReturnType(
>>>> "boolean").addParameter(Number.class,
>>>> "value").addParameter(ConstraintValidatorContext.class, "context")
>>>> .setBody("return false;").addAnnotation(Override.class);
>>>>
>>>>
>>>> So I'm just wondering if I'm missing something or this is not
>>>> implemented yet on Roaster
>>>>
>>>> --
>>>> Antonio Goncalves
>>>> Software architect and Java Champion
>>>>
>>>> Web site <http://www.antoniogoncalves.org/> | Twitter<http://twitter.com/agoncal>
>>>>  | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris JUG<http://www.parisjug.org/>
>>>>  | Devoxx France <http://www.devoxx.fr/>
>>>>
>>>> _______________________________________________
>>>> forge-dev mailing list
>>>> forge-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>>
>>>
>>>
>>>
>>> --
>>> Lincoln Baxter, III
>>> http://ocpsoft.org
>>> "Simpler is better."
>>>
>>> _______________________________________________
>>> forge-dev mailing list
>>> forge-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/forge-dev
>>>
>>
>>
>>
>> --
>> Antonio Goncalves
>> Software architect and Java Champion
>>
>> Web site <http://www.antoniogoncalves.org/> | Twitter<http://twitter.com/agoncal>
>>  | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris JUG<http://www.parisjug.org/>
>>  | Devoxx France <http://www.devoxx.fr/>
>>
>
>
>
> --
> Antonio Goncalves
> Software architect and Java Champion
>
> Web site <http://www.antoniogoncalves.org/> | Twitter<http://twitter.com/agoncal>
>  | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris JUG<http://www.parisjug.org/>
>  | Devoxx France <http://www.devoxx.fr/>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/forge-dev
>



-- 
Lincoln Baxter, III
http://ocpsoft.org
"Simpler is better."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20140527/64b1474c/attachment-0001.html 


More information about the forge-dev mailing list