[EMAIL PROTECTED] wrote:
I'm thinking the ArtifactDatabase interface and its implementation which I just checked in will beget another discussion. Take a look at the return type of the getArtifactAttributes method in that interface.
I just did - this is 100% SPI content. You and I have some api/spi refactoring to do.
Yeah but do me a favor and define your notion of API and SPI for me. I want to make sure we are inline before we begin.
API - defines the contract for the client
SPI - defines the contract through which you modify the the implementation behind the API
IMPL defines the implementation
How does this work in practice? Components only see APIs. Extensions in the container space see SPIs but don't see IMPL classes. The Merlin system sees IMPL classes.
ie.:
API - for the client SPI - for extensions IMPL - for the system
How does this relate to the repository?
At bootstrap - the bootstrap code is accessing SPI classes to define the implementation of a repository. This means that there is a *boostrap* category that has prior knowledge of a current API, SPI and IMPL and uses this knowlege to construct the environment request by its client. This bootstrap category knows all about the releationships between the api version, the spi version and a particular impl version - but it is only there to provide support for the instantiation of another version. This means:
repository/api <-------------- client view
repository/spi <--------------- extended contract
repository/impl <--------------- default solution relative to api/spi version
repository/bootstrap <---------- solution to activate an alternative implemetation
using the classic implementation
BTW - this addition implies a JRE 1.3 dependency. Does anyone have a problem with that?
Not me. BTW if the implementation switches from using Property file artifacts for attributes to hitting an LDAP server the SUN JNDI provider is available out of the box with JDK1.3 and up. Hence it will not add weight to the bootstrapping jar - just a heck of a lot of power in a small package.
I am perfectly happy with a 1.3 dep.
Stephen.
--
Stephen J. McConnell mailto:[EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
