jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Moseley <...@osafoundation.org>
Subject Re: checkins to jcr-server
Date Fri, 09 Dec 2005 19:12:00 GMT
Angela Schreiber wrote:

> on the other hand there is are a couple of methods, that
> are just there for improving code readability ('getDavName'),
> others that i think contain really internal stuff such
> as 'isLocked', 'isFilteredItem' or 'isJsrLockable'.

let's say i'm implementing a dav extension that defines a new http 
method. my new method is sort of like DavResource.addMember but not 
quite the same, and i can't cleanly override or otherwise reuse 
DavResourceImpl.addMember, so i have to add a method that looks a lot 
like it. suddenly i need access to isLocked, potentially isFilteredItem, 

this is exactly what happened when i needed to implement MKCALENDAR for 
caldav. of course, with the latest revision of jcr-server, the 
import/export facility meets my needs and i don't need a specialized 
method resource method anymore. but what's to say some sort of situation 
like this couldn't happen again?

> this is the point about private methods from my point of
> view. since it's an opensource project, i will
> not know (and i should not know) about subclasses. but
> i must pay attention and respect potential subclasses,
> if a mark a method protected.

well yeah. there is a happy medium. for a method where you don't have a 
strong reason to keep it private, make it protected and let subclassers 
decide whether or not they will use it.

> just one more example: the 'setIsCollection' method in the 
> DavResourceImpl. this one is a hack from my point of view.
> since i wanted to complete my modifications i left it...
> but i don't like it a all and i would not want this to
> be protected.

it's totally a hack, but one that is required since we're using the same 
class to model resources that already exist in the repository as well as 
ones that are being created in the current request. you'll see i had to 
do the same thing in CosmoDavResourceImpl, with a setIsCalendarCollection.

i have briefly considered making a new implementation of DavResource for 
resources which are in the process of being created, but i haven't 
looked at specifically how to do it yet.

View raw message