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

David Jencks commented on FELIX-4785:
-------------------------------------

>>Now, in addition, it seems 1.8.2 has some bugs that are fixed in 2.0.0 - (it 
>>seems there are cases where a change to a factory config is not causing a 
>>reactivation of the component); so again updating to get just that fix is not 
>>possible.

The spec behavior is clearly wrong and caused by failure to notice that a 
section needed to be updated for 1.1, but apparently we could only have the 
correct behavior in 1.3 specced components.  No one has objected in practice to 
the correct but non-spec behavior that the last couple of releases have had.  
If someone does we could release a 1.8.4 with just that fix.  Actually from 
your note it almost sounds like you would be ok with releasing 1.8.4 based on 
our last release with this wrong spec-required behavior present and the old api 
deprecated, and of course without any 1.3 features, and then as soon as the 
spec is finalized releasing current trunk as 2.0.0.  Since spec approval is 
still some months off, we could do this easily and it would give users several 
months of warning.

If you or someone wants to provide an additional bundle or fragment 
implementing the old api in terms of DTOs I won't object as long as the current 
behavior of the main bundle classes doesn't change.  The two Items I am totally 
against breaking to provide alleged compatible old behavior are:

1. The operations in the old api operate on the ComponentConfigurationDTO layer 
whereas the operations in the spec api operate on the ComponentDescriptionDTO 
layer.  Providing operations that operate on the ComponentConfigurationDTO 
layer is not acceptable, it cannot be made consistent with the spec API.

2. The component objects in the old api basically correspond to 
ComponentConfigurationDTOs.  However, since there is no 
ComponentConfigurationDTO, a bogus ComponentConfigurationDTO-like-object is 
provided whenever there is no actual ComponentConfigurationDTO, to represent 
the ComponentDescriptionDTO.  This is why a reimplementation of the old api 
needs to use objects independent of the runtime classes (e.g. 
SingleComponentManager which more or less corresponds to a 
ComponentDescriptionDTO).  We can't add a bogus ComponentManager in to 
represent the missing object modeling the ComponentDescriptionDTO.  However, 
I'd be ok with an entirely new set of objects backing the old api, where the 
"always present" component is constructed based on either the 
ComponentDescriptionDTO (if there are no ComponentConfigurationDTOs) or the 
"first" ComponentConfigurationDTO.

> Incompatible SCR API
> --------------------
>
>                 Key: FELIX-4785
>                 URL: https://issues.apache.org/jira/browse/FELIX-4785
>             Project: Felix
>          Issue Type: Bug
>    Affects Versions: scr-2.0.0
>            Reporter: Carsten Ziegeler
>            Assignee: Carsten Ziegeler
>             Fix For: scr-2.0.0
>
>
> Current trunk contains version 2.0.0 of the org.apache.felix.scr API package. 
> While this is a logical step, this makes the new implementation unusable as a 
> drop-in replacement into existing installations which might use the 1.x 
> version of that API.
> I think we should go a more moderate way, leave the 1.x version in but 
> deprecate it and also provide the replacement API (if any). Then in one of 
> the further versions along the road, we can remove the API. This gives our 
> users a chance to migrate slowly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to