Hi,

What about the other points? I repeat them here and I hope I get an
answer on them as well:

- Developers can write applications against an interface.

- Developers can use Javadocs. Also, the autocomplete feature in the
IDE would list relevant methods.

- Access right checking can be implemented where required, improving
security. It is no longer possible to shut down a repository without
privileges.

>  >  - It is possible to write applications that work with Jackrabbit and
>  >  other implementations (for example Day CRX).
>
>  But how many applications really need to shutdown the repository in
>  the generic case?

All applications that call shutdown. Felix's sling/jcrapp for example.
A backup tool. A test case. As you know, the TransientRepository
_should_ shut down the repository automatically when the last session
is closed. However this doesn't work currently, see bug
https://issues.apache.org/jira/browse/JCR-1551 - how come nobody found
out? I don't know, but one answer would be because people don't
actually use TransientRepository. What else do they use instead? Maybe
the use RepositoryImpl directly.

> You need to do that *only* if you embed the
>  repository, in which case you already are bound to a single
>  implementation.

No, you are not bound to a single implementation. If you use Spring or
Google Guice or another factory to create the repository, you are not.
If you use JCRLog, you can't get the RepositoryImpl object because you
get a proxy object.

>  IMHO, if we want to make the repository more manageable, I'd opt for a
>  JMX MBean.

What's the point of adding complexity? Why exactly you like to avoid
shutdown in an interface?

>  >  - JCRLog can work. When no interface is used, log files are incomplete
>  >  and re-running the log file fails.
>
>  Does JCRLog need to cover the shutdown case?

Yes, of course it does. I have already explained why, but I can repeat
it here: When no interface is used, log files are incomplete and
re-running the log file fails. An application that uses JCRLog
wouldn't even compile if it uses RepositoryImpl.shutdown directly.

> [JCRLog] It doesn't cover  repository startup.

Of course it does. It must cover that aspect, otherwise it wouldn't be
useful. Have a look at the JCRLog implementation and the samples.

> IMHO it only needs to cover the JCR API, and
>  potentially the extensions in jackrabbit-api.

Why should there be a method that is not covered by an interface in
the Jackrabbit API?

I fail to see in your mail why it is better to _not_ have an
interface. Could you please explain why you rather not have this
interface please?

Regards,
Thomas

Reply via email to