Re: Options for making AT schemas more adaptive

whit <whit-UE+B0n23d/[email protected]> Tue, 02 May 2006 23:20:35 -0500
Newsgroups gmane.comp.web.zope.plone.archetypes.devel
Message-ID <[email protected]>
Rob Miller wrote:
> Dieter Maurer wrote:
>> Rob Miller wrote at 2006-5-2 11:07 -0700:
>>> ...
>>> the first step in this process, i'd say, would be to define 
>>> ISchemaConsumer and ISchemaProvider interfaces.
>>
>> Why do you need both "ISchemaConsumer" and "ISchemaProvider"?
> 
> i think it makes sense to have an interface that explicitly specifies 
> that a given object supports AT schemas.

what kind of usecase are you thinking of here?

>> What should an "ISchemaConsumer" be at all. Note that schemas are
>> not "consumed". At least, it is a very badly chosen term...
> 
> 
> i chose 'consumer' just because it seemed the right balance to 
> 'provider'.  i'm not attached to the name.  maybe ISchemaSupporter would 
> be better.  other suggestions welcome.
> 

this may be simplistic, but I also want to make sure I have the concepts 
clear.

I think the concept of provision, aggregation, etc needs to stay behind 
the contract of the schema itself. My reasoning is as follows:

 From the perspective of most interactions with a schema, all that 
anybody should be concerned with is getting an object that fufills 
ISchema.  we shouldn't concern ourselves with whether or not a context 
provides or supports beyond whether or not we get an object back when we 
attempt to adapt.

How that schema object gets constructed is completely separate can of 
worms.

Here, I can see the use of an ISchemaProvider interface in particular 
components used for schema aggregregation, particularily in situation 
where you were not directly aggregating object's schemata (like in 
ATSENG, where an object can have it's own schema, as well as holding the 
schema for objects it manages). iirc, the schemaprovider branch allowed 
for this sort of aggregration by reference or acquisition; interfaces 
provide a way to constrain what object contribute to an aggregation.

there is another side to this too...many times we need subsets of a 
schema in a way that creating an aggregate schema and then filtering it 
would be inefficient. I'm guessing using separate interfaces to return 
what is needed on a case by case basis is the sensible thing here ie. 
IMetadataSchema(obj) or ICustomSubschemaForView(obj).

-w



-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642