dIon, thanks for taking care of this.

-Vincent

> -----Original Message-----
> From: dIon Gillard [mailto:[EMAIL PROTECTED]]
> Sent: 17 February 2002 23:10
> To: Jakarta Commons Developers List
> Subject: Re: [httpclient] New change to Cookie.java breaks Cactus
> 
> dIon Gillard wrote:
> 
> > Definitely. But the place it is breaking is on the compare, which is
> > used for sorting the cookies. Should null always match a domain?
> > Should it always be less than another domain? I need to think this
one
> > through.
> 
> Must be mad, replying to myself, but null domains will break the
matches
> method. So I think we need to fix a few things on the null side as
well.
> 
> >> Perhaps we should add unit tests for processing null domains,
paths,
> >> etc.,
> >> just to document this contract.
> >>
> > Definitely.
> >
> >> The typical browser behavior, which I think is specified by the old
> >> "netscape" cookie spec, is to assume a default path of "/" and a
> default
> >> domain of the full-specified domain used in the request.  I'm
pretty
> >> sure
> >> that's the behavior Cookie used to have.
> >>
> > Then we should probably codify this assumption, and in the get
method
> > for path, if the value is null, return "/".
> >
> >> - Rod
> >
>  From the RFC "If multiple cookies satisfy the criteria above, they
are
> ordered in the Cookie header such that those with more specific Path
> attributes precede those with less specific. Ordering with respect to
> other attributes (e.g., Domain) is unspecified.". So given this, I
I'll
> change the compare method so it only uses path. My current version
looks
> like this:
> 
>         if (!(o1 instanceof Cookie)) {
>             throw new ClassCastException(o1.getClass().getName());
>         }
>         if (!(o2 instanceof Cookie)) {
>             throw new ClassCastException(o2.getClass().getName());
>         }
>         Cookie c1 = (Cookie)o1;
>         Cookie c2 = (Cookie)o2;
>         if (c1.getPath() == null && c2.getPath() == null) {
>             return 0;
>         } else if (c1.getPath() == null) {
>             // null is assumed to be "/"
>             if (c2.getPath().equals("/")) {
>                 return 0;
>             } else {
>                 return -1;
>             }
>         } else if (c2.getPath() == null) {
>             if (c1.getPath().equals("/")) {
>                 return 0;
>             } else {
>                 return 1;
>             }
>         } else {
>             return stringCollator.compare(c1.getPath(), c2.getPath());
>         }
> 
> If this is ok, let me know and I'll commit it. We still need to fix
null
> domains, however.
> 
> I'll file this as a bug report.
> 
> --
> dIon Gillard, Multitask Consulting
> http://www.multitask.com.au/developers
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:commons-dev-
> [EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:commons-dev-
> [EMAIL PROTECTED]>
> 




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to