Hi, On Wed, Apr 16, 2008 at 11:24 AM, Thomas Mueller <[EMAIL PROTECTED]> wrote: > A) I think that when using libraries, programming against interfaces > is better than programming against fixed implementation classes.
Sure, but Jackrabbit is a server not a library. Sure, you can use Jackrabbit as an embedded repository like you'd use Derby or hsqldb as an embedded database, but the standard deployment is already jackrabbit-webapp and IMHO our goal for Jackrabbit should be to make it even more like a standalone server like PostgreSQL, MySQL, or Oracle in the database world. > B) The "security" argument is invalid. Isn't it strange to remove the > interface JackrabbitRepository because "shutdown" is "not save", but a > Model 1 application has to call "shutdown" to close the repository? Model 2 and 3 clients should not be able shutdown the repository, as the repository lifecycle is managed by the server. And since all model 1 applications in any case have a direct Jackrabbit dependency, I don't see why we couldn't expect them to use the direct RepositoryImpl.shutdown() method. > D) How about other implementations (RMI, CRX)? If there is no > interface, things will get complicated. If there is no interface, an > application needs to have three ways to shutdown a repository. > Wouldn't it be cool to only have one way? RMI clients should never shutdown the repository. CRX has it's own repository lifecycle. > E) And again, JCRLog is impossible. Why is that? A client should never call shutdown in the first place, so why would JCRLog need to cover that? BR, Jukka Zitting