Waldhoff, Rodney wrote: >>so under the current code, I can do this: >>// uncompiled untested code >>Date d = new Date(); >>cookie.setExpiryDate(d); >>d.setTime(System.currentTimeMillis()); >> >>and based on the current code set, I expect >>the expiry date of the cookie to have >>changed. >> > >>The patch is effectively a >>change in the implied contract >>between httpclient and the >>user >> > >Agreed. > >>....Comments? >> > >I think I lean toward Sean's view of the world. > Makes two of us, but given the code, it's not how it works :)
>Personally, as a user of most any library when I do this: > >Date d = new Date(); >cookie.setExpiryDate(d); >d.setTime(System.currentTimeMillis()); > >I think I would expect the cookie.date to remain unchanged, but I probably >wouldn't do it for fear of undefined behavior. > If I ever coded the above stuff, I'd smack myself first, and then read the docs. But take a look at various collections (vector etc.)...they work that way, e.g. Date d = new Date(); Vector v = new Vector(); v.add(d); d.setTime(System.currentTimeMillis()); >I especially wouldn't do this: > >Date d = cookie.getExpiryDate(); >d.setTime(System.currentTimeMillis()); > >and expect it to work the same as > >cookie.setExpiryDate(new Date())). > >I'm a little concerned at the performance and garbage collection >implications here (how often do we invoke getDate() and the like?), but at >the very least we should document some policy: e.g.,: that client's should >treat the result of getDate as immutable, or that the behavior is undefined >if they change it, etc. (I actually believe that would be sufficient for >now.) > >Perhaps we could/should just use the long value? > My call would be to document that the class assumes the provided Date is immutable, and any changes to the object are at the user's peril (insert peril sensitive keyboard here). -- dIon Gillard, Multitask Consulting http://www.multitask.com.au/developers -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
