Hi,

We started looking at it. Guillaume did some work on it. So, first the second 
evaluation of the annotations is definitely a bug. We're now trying to be sure 
we're not breaking something somewhere (like the component filter). 

So you can be sure we will fix the issue. The patch or a slightly different 
version will be applied this week. I'm focussing on an ipojo core and composite 
release, and then back to the manipulator.

Regards,

Clement

Sent from my iPhone

On 16.04.2012, at 17:42, Göktürk Gezer <[email protected]> wrote:

> Hi Devs,
> 
> Sorry for pressuring but this is blocker for us in ApacheDS. Could some one
> please evaluate the issue and the patch? We really need to know whether
> it'll be fixed or not?
> 
> Thanks,
> Gokturk
> 
> On Sun, Apr 15, 2012 at 1:11 AM, Göktürk Gezer <[email protected]> wrote:
> 
>> Hi Everyone,
>> 
>> As i was trying to integrate IPojo manipulation into eclipse environment,
>> i noticed re-manipulation without cleaning corrupts the MANIFEST file even
>> though it does not brake manipulated class files. Re-manipulated MANIFEST
>> is lacking some handler declarations and "manipulation" section contains
>> entries for fields and methods those are IPojo generated ones, which brakes
>> down everything.
>> 
>> I created a jira: https://issues.apache.org/jira/browse/FELIX-3461 with a
>> patch to fix.
>> 
>> I will document the fix here briefly, so that you guys can tell me if
>> anything brakes some part of code that i don't know.
>> 
>> * First problem is ManipulatedMetadataFilter class which is simply
>> ignoring elements if some of their attributes contain manipulation headers.
>> This behavior ends up in ignoring elements whose values are dependent on
>> methods like transition callbacks(Validate-Invalidate), since the
>> re-manipulation process will read methods with their mangled names. And
>> filter was also missing some manipulation headers too, causing manipulation
>> section to contain extra entries. I removed the filter logic from code and
>> injected a ManipulationMetadataFixer which is called before any
>> manipulation medata <Element> is rendered. It fixes the mangled method
>> names and performs a structered clean-up on manipulation elements.
>> 
>> * After using Fixer there were two main problems left:
>> -> Bind/Unbind/Modified metadatas were being lost and @Property on methods
>> were lacking property names after re-manipulation :: Solved by adding
>> necessary checks into BindAnnotationsParser and PropertyAnnotationParser
>> classes's visitEnd() methods.
>> -> Constructor injection parameters were being assigned wrong class types
>> after re-manipulation :: While generating new constructor based on existing
>> one argument annotations were being transferred to new one without changing
>> their index. While this is valid action, it falsify the fetched type of
>> injection annotations at re-manipulation. At ClassChecker i added an
>> exception for @Property and @Requires annotation types to remain attached
>> to original constructor, also overrided visitParameterAnnotation() method
>> in ConstructorCodeAdaptor class to forbid those two annotation to go into
>> generated constructor.
>> 
>> 
>> Tested those changes against an IPojo component containing all current
>> ipojo annotations + custom annotations to produce same MANIFEST after
>> multiple manipulation attempts.
>> 
>> 
>> Regards,
>> Gokturk
>> 

Reply via email to