[
https://issues.apache.org/jira/browse/FELIX-3962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13600031#comment-13600031
]
Richard S. Hall commented on FELIX-3962:
----------------------------------------
Technically, from this resolver's perspective, returning a resolved host
capability is invalid. However, if we want to patch it so that it filters it so
that it doesn't lead to strange errors, then we can do that.
> Resolver does not handle it well if the ResolveContext hands back hosts
> capabilities that are already resolved
> --------------------------------------------------------------------------------------------------------------
>
> Key: FELIX-3962
> URL: https://issues.apache.org/jira/browse/FELIX-3962
> Project: Felix
> Issue Type: Bug
> Components: Resolver
> Reporter: Thomas Watson
>
> I was running into some very strange uses constraint violations if my resolve
> context handed back host capabilities from resources that already have
> wirings (already resolved). It is hard to pin point all the issues, but the
> end result was that when checking for consistencies I found the compare being
> done between WrappedCapability and the raw Capability and failing. I think
> this was happening because of some inconsistencies for when a WrappedResource
> is created.
> I easily worked around the issue in my ResolveContext implementation by not
> returning host capabilities for already resolved resources. But I think the
> resolver impl should be more robust if this happens and weed out the host
> capabilities from resolved hosts if the resolver does not support attaching
> fragments to already resolved hosts.
> I also would like to understand if the intention of the code is to only
> create WrappedResource objects for resources that have no wiring. I know
> WrappedRequirement and WrappedCapability objects can get created for already
> resolved resources that have reqs and caps from attached fragments, but my
> understanding is that WrappedResource objects are only to be created for
> resources that are unresolved (no wirings). If not then there are a whole
> bunch of calls to ResolveContext.getWirings().get(...) that we need to check
> because currently the code will pass WrappedResource objects to this. That
> probably is not correct anyway, but it is dead wrong if the resource being
> wrapped really has wirings according to the ResolveContext.
--
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