Hi Robert,

thanks for starting this discussion. It really would be nice to base
the implementation on the javax.annotation.proessing stuff.

2012/6/14 Robert Munteanu <[email protected]>:
> 1. Configuration
>
> There is a standard way of passing compiler arguments when invoking javac 
> (-Akey=value ) but it would require configuring the compiler rather than the 
> scr plugin. At least for maven builds this is less convenient.

Yes, I guess this is one of the biggest challenges. Now, we might
simply pass the information through a static field in some common
class. However this would be problematic with parallel builds like
Maven. So we maybe could use a thread local which would only work if
the same thread is used. But I guess we could find a solution here. If
we are able to pass objects into the processor, we can use these
objects to pass back the result. For example, the Maven plugin is
creating a manifest header afterwards.

>
> 2. Incremental builds
>
> When performing a partial build ( for instance in Eclipse, but I think it 
> also applies to Maven ) not all annotated classes are passed to the processor 
> so the SCR generator should either only work on full builds by deign or be 
> able to perform incremental builds.

Incremental builds should not pose a problem. Right now, all
descriptors are written into a single xml file, however we can change
this easily with generating a file for each component. This can easily
be updated incrementally (as long as we can handle deletes etc.)

But I see some problems in the general processing: right now the tool
is parsing two different kinds of classes: classes belonging to the
project and classes from dependencies as a project class might inherit
from a dependency and it might want to inherit the descriptors as
well.  I guess we would still need ASM for handling the dependencies.
The result of a component descriptor is the assembly of several
annotations and these annotations are pluggable and therefore are
processed by different processors. So we need a way to first assemble
all annotations and once all annotations of a particular class are
assembled, process them in one go. I'm not sure if this is possible.

Regards
Carsten
-- 
Carsten Ziegeler
[email protected]

Reply via email to