felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Göktürk Gezer (Commented) (JIRA) <j...@apache.org>
Subject [jira] [Commented] (FELIX-3461) Re-manipulation with annotated component produces corrupted MANIFEST
Date Mon, 16 Apr 2012 20:38:20 GMT

    [ https://issues.apache.org/jira/browse/FELIX-3461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13255015#comment-13255015
] 

Göktürk Gezer commented on FELIX-3461:
--------------------------------------

Method was not implemented before, i overrided it. Reason is to prevent parameter annotations(only
@Property and @Requires) of original constructor to go into generated one. And i also changed
ClassChecker.AnnotationCollector.visitParameterAnnotation() method to keep those parameter
annotations in original constructor. By keeping injection annotations in original constructor,
they are interpreted correctly at re-manipulation time without doing any harm to runtime semantics.
Otherwise parameter indexes are interpreted in the context of generated cosntructor with additional
InstanceManager reference, thus causing injection parameters to be assigned wrong type identifier
at re-manipulation. (Injecting services and parameters still works in runtime with those changes).

While writing this, I also noticed that this fix can be implemented another way:

in ConstructorCodeAdapter.visitParameterAnnotation():

if(desc.equals("Lorg/apache/felix/ipojo/annotations/Property;")
        		|| desc.equals("Lorg/apache/felix/ipojo/annotations/Requires;")){
    		return null;
        }
    	else{
    		return super.visitParameterAnnotation(parameter+1, desc, visible);
    	}

returning super.visitParameterAnnotation with parameter index incremented by 1, because InstanceManager
is added to the first position in argument list. Then we can remove the code i added to the
ClassChecker.AnnotationCollector.visitParameterAnnotation() safely.
                
> Re-manipulation with annotated component produces corrupted MANIFEST
> --------------------------------------------------------------------
>
>                 Key: FELIX-3461
>                 URL: https://issues.apache.org/jira/browse/FELIX-3461
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>            Reporter: Göktürk Gezer
>              Labels: ipojo-manipulator
>         Attachments: org.apache.felix.ipojo.manipulator.patch
>
>
> As the manipulation process alters the annotations of original classes on generated ones.
It leaves it in inconsistent state for re-manipulation. While re-manipulation process does
not touch classes, re-manipulated bundle is unable to function because of a corrupted MANIFEST.
> Broken MANIFEST is missing some handler declarations because of the filters and have
entries in manipulation section those should have been hided.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message