Well I don't think patching it is simple. This because looking at the request and response implementations, I see these are kinda of wrappers too. It's like a hybrid. These implementations provide a constructor that accepts the original (container managed) request or response and they do delegate most of the calls to the managed request/response. I think the main problem is that webdav is http and they need to support some extensions on this. Like, new status codes, being stateful (I'm seeing a webdav session), supporting the http SEARCH method and more, low level additions to the http request and response. From my point of view I don't see something a wrapper couldn't handle. But implementing servlet request/response is so unusual that I guess I'm missing something, there must be more serious reasons for this.
@Ard: yes using the dev-list sounds like a very good idea. Thnx Regards, Minos On Thu, Mar 1, 2012 at 9:12 AM, Ard Schrijvers <[email protected]>wrote: > @Minos : Perhaps you can re-send it, with Ate's comments included to > the dev list. Hopefully someone on that list more familiar with the > webdav module can inform us. > > Would it be hard to create a patch containing the fix as suggested by Ate? > > Regards Ard > > On Wed, Feb 29, 2012 at 5:40 PM, Minos Chatzidakis > <[email protected]> wrote: > > No, no comment yet on the question. > > > > I agree it's very weird (and the first time I see it) implementing the > > servlet Request/Response. I suppose it was easier this way to support the > > http SEARCH method.. > > A wrapper though could manage it quite as well... > > > > Anyway, thnx for looking into this > > > > > > On Wed, Feb 29, 2012 at 5:13 PM, Ate Douma <[email protected]> wrote: > > > >> Any comment on this question? > >> > >> Looking just briefly at the code it seems odd to me in the first place > >> that jackrabbit-webdav itself implements the ServletRequest class, > whereas > >> these interfaces are supposed to be container managed and implemented. > >> > >> Why isn't a HttpServletRequestWrapper used as base class instead? > >> Now this WebdavRequestImpl is missing methods added to Servlet API 2.4+, > >> as could/should have been anticipated. > >> The current solution seems an anti-pattern to me. > >> > >> By the way: same thing for WebdavResponseImpl too. > >> > >> Ate > >> > >> > >> On 02/27/2012 01:30 PM, Minos Chatzidakis wrote: > >> > >>> Hello Jackrabbit users, > >>> > >>> This email is > >>> about class org.apache.jackrabbit.webdav.**WebdavRequestImpl from maven > >>> module jackrabbit-webdav, a module bundled with the default jackrabbit > >>> distribution. Class WebdavRequestImpl implements HttpServletRequest. > >>> Extending this class I noticed that it misses 4 methods of the servlet > >>> request spec. These are methods that were added from servlet-api > version > >>> 2.4 and onward. I'm using jackrabbit version 2.2.9 which was compiled > >>> against servlet-api 2.3, so it makes sense that those methods are > missing. > >>> I expected however that updating my jackrabbit dependency to a later > >>> version would solve my issue, but then I found out that: > >>> > >>> *Jackrabbit 2.3.6 is compiled against servlet-api 2.3*, as it can be > seen > >>> > >>> here: > >>> > >>> http://svn.apache.org/repos/**asf/jackrabbit/tags/2.3.6/** > >>> jackrabbit-parent/pom.xml< > http://svn.apache.org/repos/asf/jackrabbit/tags/2.3.6/jackrabbit-parent/pom.xml > > > >>> > >>> This means that even if I update my jackrabbit-webdav dependency, > >>> class org.apache.jackrabbit.webdav.**WebdavRequestImpl will still be > >>> missing > >>> the 4 ServletRequest methods that were added in servlet-api 2.4 and > >>> onward. > >>> > >>> Is there a specific reason that latest jackrabbit versions still use > >>> servlet-api 2.3 ? > >>> Is there a plan to change this? > >>> > >>> Thanks, > >>> > >>> Minos Chatzidakis > >>> > >>> > >> > > > > > > -- > > With kind regards/Met vriendelijke groet, > > Minos Chatzidakis > > > > Amsterdam - Oosteinde 11, 1017 WT Amsterdam > > Boston - 1 Broadway, Cambridge, MA 02142 > > > > US +1 877 414 4776 (toll free) > > Europe +31(0)20 522 4466 > > www.onehippo.com > > > > -- > Amsterdam - Oosteinde 11, 1017 WT Amsterdam > Boston - 1 Broadway, Cambridge, MA 02142 > > US +1 877 414 4776 (toll free) > Europe +31(0)20 522 4466 > www.onehippo.com > -- With kind regards/Met vriendelijke groet, Minos Chatzidakis Amsterdam - Oosteinde 11, 1017 WT Amsterdam Boston - 1 Broadway, Cambridge, MA 02142 US +1 877 414 4776 (toll free) Europe +31(0)20 522 4466 www.onehippo.com
