[jira] [Commented] (FELIX-3962) Resolver does not handle it well if the ResolveContext hands back hosts capabilities that are already resolved

2013-03-12 Thread Richard S. Hall (JIRA)

[ 
https://issues.apache.org/jira/browse/FELIX-3962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=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


[jira] [Commented] (FELIX-3962) Resolver does not handle it well if the ResolveContext hands back hosts capabilities that are already resolved

2013-03-12 Thread Richard S. Hall (JIRA)

[ 
https://issues.apache.org/jira/browse/FELIX-3962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13600039#comment-13600039
 ] 

Richard S. Hall commented on FELIX-3962:


Regarding your last concern, WrappedResource is only intended to be used to 
wrap unresolved hosts so that we can merge fragments into them; this gives us 
the single place to calculate the host's eventual class space with uses 
constraints. For resolved hosts, we don't need this since we don't need to 
fully calculate their class space and even for the calculation we do perform, 
it is done using their wires.

 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