[
https://issues.apache.org/jira/browse/FELIX-2996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Clement Escoffier closed FELIX-2996.
------------------------------------
> iPOJO doesn't generate Import-Package correctly
> -----------------------------------------------
>
> Key: FELIX-2996
> URL: https://issues.apache.org/jira/browse/FELIX-2996
> Project: Felix
> Issue Type: Bug
> Components: iPOJO
> Affects Versions: iPOJO-1.6.0
> Reporter: Rémy Masson
> Assignee: Clement Escoffier
> Labels: import, manifest, package
>
> We're having troubles with generating a manifest using BND and iPOJO. The
> problem resides in iPOJO not adding referred packages (from @Provides
> annotations in components in our case) to the imported packages of the
> manifest.
> I noticed the iPOJO task is supposed to be adding them, and by checking the
> code implementation, I found the issue in the Pojoization class which is
> called during manipulation. When fetching referred packages, it looks for the
> "specification" attribute instead of looking for the "specifications"
> attribute, which results in failing to find any referred package.
> However fixing that doesn't completely solve our problem. We encountered
> another issue (after fixing the issue locally in Pojoization.java): imports
> are added naked, and it doesn't seem possible to add attribute such as the
> "version=x.x.x" which we need.
> BND however implements such a mechanism - when told to process a given
> bundle, it will take a .bnd file. The .bnd file may then contain attributes,
> such as "im.an.example.*;version=6.6.6". It will, for packages which fit the
> wildcard, use the provided version for added package imports. Could that be
> implemented in some sort of way in iPOJO?
> I looked into why BND wasn't adding the package of the @Provided interfaces
> to the imported packages: the issue lies into the @Provide annotation having
> a CLASS retention policy. BND will only consider RUNTIME retained
> annotations, which kind of makes sense to me. Could it be possible to have
> that annotation retained at runtime?
> The annotation solution definitely looks simpler to do than implementing an
> attribute mechanism. It implies that tools such as BND will be able to tell
> which packages are needed at runtime. However, the existing implementation
> ("specification" instead of "specifications" and import overwriting) would
> still need fixing.
> For reference, here are the code excerpts showing the introduced existing
> problems:
> ## Pojoization.getReferredPackages()
> [..]
> String att = elems[j].getAttribute("specification");
> [..]
> ## I also noticed another issue with the Pojoization.setImports(Attribute)
> method, which overrides any existing package import with a blank one:
> // Add referred imports from the metadata
> for (int i = 0; i < m_referredPackages.size(); i++) {
> String pack = (String) m_referredPackages.get(i);
> imports.put(pack, new TreeMap());
> }
> ... meaning any previously existing import with specific pieces of
> information such as the package version will get deleted.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira