I've asked this question on StackOverflow and have not gotten an answer
after 115 views so I thought
I would ask here. You can post your answer on SO too if you'd like the rep.
http://stackoverflow.com/questions/5901690/turning-one-annotation-into-many-annotations-with-aspectj
I have discovered a pattern in my JPA mappings that I would like to codify.
A simple example follows:
@OneToMany(fetch=FetchType.EAGER)
@Sort(type=SortType.NATURAL)
private SortedSet<Item> items;
I would like to create a single annotation called SortedOneToMany that I can
apply to the above set:
public @interface SortedOneToMany {
FetchType fetch() default EAGER;
SortType sort() default NATURAL;
Class comparator() default void.class;
}
I have written the following aspect to "attach" the JPA annotations whenever
it sees my annotation:
public aspect SortedOneToManyAspect {
declare @field: @SortedOneToMany * * :
@OneToMany(fetch=FetchType.EAGER);
declare @field: @SortedOneToMany * * : @Sort(type=SortType.NATURAL);
}
But I don't know how can I access the values of the SortedOneToMany
annotation parameters and use them when defining the OneToMany and Sort
annotations. There may be cases where I want to change one of the default
values like so:
@SortedOneToMany(sort=SortType.COMPARATOR,comparator=ItemComparator.class)
private SortedSet<Item> items;
So how can I pass the annotation values from SortedOneToMany to the Sort
annotation?
Thanks.
--
Adam
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users