Corey Jewett wrote:

>Trying to follow what's going on here it seems to me that Stephen wants
>an ObjectConfiguration under the name Context. 
>  
>
Nope!

What Stephen wants is to provide support for any component consitent 
with the component model.  I'm not concerned with what the component 
does with infortantion supplied to it.  

I am concerned about a fault in the containerkit architecture which if 
not corrected will result in continued non-portability of components.

I'll try and explain.  I working on a container - basically an 
application that automates the creation, deployment and decommissioning 
of one or more components (without concern for an component implementers 
idea of what is good, bad, appropriate or otherwise). A container that 
has an objective of running any component has to be able to provide the 
information that the component declares that it needs.  But this 
requires synchronizing three different viewpoints - the *component* 
model itself (stable and something that represents a fixed point in this 
equation), the specifications and implementations of resources through 
which a component can declare *constraints* (this is the content of the 
containerkit metainfo model), and thirdly - the *criteria* within a 
metadata model that is used to describe how information to be passed 
between a container and a component is created.  Typically, the approach 
to metadata creation is container specific - however, container kit 
provides some basic structures on which different contains can share 
common foundations.

If your look at the component model in Avalon it is defined though a set 
of patterns and interfaces. Six of these interface actually declare 
state that maybe required by a component - these include the LogEnabled, 
Configurable, Parameterizable, Contextulizable and the 
Serviceable/Composable interfaces. Of these, the Contextualizable and 
Serviceable/Composable interfaces present a significantly higher level 
of container/component interaction than the rest. In the case of the 
Composable/Serviceable interfaces the metainfo model appears reasonably 
complete in both metainfo and metadata.  The model provides support for 
declaration of the association of types services that are keyed relative 
to the container scoped names.  The model does not dictate how the 
associations are derived (that's a container concern). In general is a 
level of abstraction I'm very comfortable with.  However, if we look at 
the same picture from the point of view of managing Contextualization of 
a component - the containerkit framework is either (a) incomplete or (b) 
inconsistent.  What we have in containerkit is the full definition of 
the metainfo (ability to describe the context constraints), but nothing 
on the metadata side.

Some suggestions have been put forward stating that validation of 
component metadata is impossible.  Other information has been provided 
that shown that this is possible, already available, and has been in use 
for some time.  However, much of the discussion on this thread has 
focussed on discussing that mechanisms to deal with a broader set of 
context requirements based on existing and current cases of context 
usage (which is primary reference point). An important consideration 
here is that the containerkit framework does not need to include the 
mechanisms for context directives, directive validation or even creation 
- all of those things can be handled by a container implementation.  

The issue is that the current definition of the metadata type that 
effectively represents the set of information to be used in establishing 
the state of a component does not include an operation to get the 
context instance.  If you look at the component ComponentMetaData class 
in containerkit you will find operations enabling access to instances of 
Parameters, Configuration but nothing for Context.  

The solution is to add a single method to ComponentMetaData:

  /**
   * Returns the context object for the component.
   * @param parent the parent context
   * @return the context object to be supplied
   */
   public Context getContext( Context parent )
   {
       return context;
   }

Simple!

But the impact is significant.  It means that services that I develop 
that extend ComponentMetaData can override this method to provide 
complete support for the standard component model and metainfo 
constraints.  This means I can say to customers that the container I 
provide is capable of delivering complete support for the component 
contact.  Beyond this, we will be able to deliver a validation tool that 
checks component integrity - its then the obligation for the container 
authors to provide nothing less that 100% compliance with a component 
contract or document non-compliance.

One last point - why is this important?  If Context is not provided 
through the ComponentMetaData class, then the ComponentMetaData clas is 
not a reference point for portability (because container developers will 
handle the context issue in different ways).  This simply means that a 
lot of potential for component reusability disappears and the value of 
containerkit diminishes.

Hope that clarifies things.

Cheers, Steve.

-- 

Stephen J. McConnell

OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to