On 4/23/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
ant elder wrote: > Currently o.a.t.assembly.Implementation is extending > o.a.t.assembly.ComponentType, is there a reason for this, I guess I > though > an Implementation would have a ComponentType rather than be a > ComponentType? > > ...ant > Yes there is a reason for this. The current assembly model is designed to be a logical model, a logical representation of the concepts of component, componentType, constrainingType, independent of any syntax used to describe them in XML, annotations or other artifacts. So in a logical model, IMO a Component is an instance of a ComponentType (in other words a Component has a ComponentType). An Implementation exposes Services, requires References, declares Properties, and is a (concrete) ComponentType. The fact that aspects of the componentType are partly described in the implementation artifact itself and (sometimes) in a separate .componentType file does not change the Implementation -> ComponentType relationship to a has-a instead of an is-a relationship. Actually, if we were going to change the relationship to a has-a type relationship we would realize quickly that both ends of the relationship always have 1..1 cardinality, which shows that it wouldn't be right. Is there a specific issue with the fact that Implementation extends ComponentType instead of pointing to it?
No specific issue, was just trying to understand what was there. You email has clarified it, thanks :) ...ant
