From: Jeff M. <je...@cu...> - 2003-07-17 15:45:34
|
Maybe a slightly better example is what happens when you do this. //test setup setAttribute("att", null); //actual code if(getAttribute("wrong att")==null){ // do something } On Thu, 2003-07-17 at 16:34, Jeff Martin wrote: > On Thu, 2003-07-17 at 16:06, Bill Lynch wrote: > > Nat et al, > > > > Thanks for the advice - I can change that code (I'm new to the class). I > > have a few more questions: > > > > 1) Why should I keep using a ReturnObjectBag as an internal object? In > > my example, does it its use benefit me, or can I use it in a better way? > Simplest (not best) example is this. How can you tell if your code is > doing this. > > for(int i=0;i<100000;i++){ > att = request.getAttribute("name"); > } > > or this > > att = request.getAttribute("name"); > > > > > 2) If I shouldn't mess with the internal Hashtable, why is it exposed? > > Seems like poor design then. > > Not bad design, just unusual environmental pressures, it's probably > vestigial by now. > > > > > 3) Any reason there's no Javadocs for any of these classes? :) Having > > better documentation would have steered me away from using the internal > > hashtable probably. > > > > cough, > http://mockobjects.sourceforge.net/javadoc/1.4/com/mockobjects/ReturnObjectBag.html > > > > > Cheers, > > --Bill > > > > Nat Pryce wrote: > > > > > Try using the putObjectToReturn and getNextReturnObject methods rather than > > > messing around with the ReturnObjectBag's internal hash table. > > > > > > Cheers, > > > Nat. > > > > > > ----- Original Message ----- > > > From: Bill Lynch > > > To: <moc...@li...> > > > Sent: Thursday, July 17, 2003 2:37 PM > > > Subject: Re: [MO-java-users] setting attributes in a mock request > > > > > >>Guys, > > >> > > >>I took Steve's advice and created my own extention to > > >>MockHttpServletRequest - my first attempt is below: > > >> > > >>private class MyMockHttpServletRequest extends MockHttpServletRequest { > > >> > > >> private Hashtable attributes; > > >> > > >> public JiveMockHttpServletRequest() { > > >> attributes = new Hashtable(); > > >> } > > >> > > >> public Object getAttribute(String s) { > > >> return attributes.get(s); > > >> } > > >> > > >> public Enumeration getAttributeNames() { > > >> return attributes.elements(); > > >> } > > >> > > >> public void setAttribute(String s, Object o) { > > >> attributes.put(s,o); > > >> } > > >>} > > >> > > >>After doing this and reading Jeff's mail I implemented it with a > > >>ReturnObjectBag - however, I don't see what that buys me: > > >> > > >>private class MyMockHttpServletRequest extends MockHttpServletRequest { > > >> > > >> private ReturnObjectBag attributes; > > >> > > >> public MyMockHttpServletRequest() { > > >> attributes = new ReturnObjectBag("attributes"); > > >> } > > >> > > >> public Object getAttribute(String s) { > > >> return attributes.getHashTable().get(s); > > >> } > > >> > > >> public Enumeration getAttributeNames() { > > >> return attributes.getHashTable().elements(); > > >> } > > >> > > >> public void setAttribute(String s, Object o) { > > >> attributes.getHashTable().put(s,o); > > >> } > > >>} > > >> > > >>Is there a benefit to either approach? Both work perfectly in my test > > >>case and I'm more inclined to go with the first approach just because > > >>it's simpler (and the ReturnObjectBag does nothing for me in this case). > > >> > > >>Cheers, > > >>--Bill > > >> > > >>Jeff Martin wrote: > > >> > > >>>Should probably be a ReturnObjectBag as this lets you setup a list of > > >>>return values for a key. > > >>> > > >>> > > >>>On Thu, 2003-07-17 at 08:47, Steve Freeman wrote: > > >>> > > >>> > > >>>>This implementation /is/ a little hazy. > > >>>> > > >>>>The idea is that you should preload your attributes in the order in > > >>>>which they are requested, and then they'll just be returned as the code > > >>>>runs. It's not actually doing a lookup. Checking which attributes are > > >>>>asked for is actually a separate concept and handled by a different > > >>>>expectation. There are some arguments for doing this but it does look a > > >>>>little clumsy. > > >>>> > > >>>>If you don't like this, I suggest you replace this part of the mock > > >>>>request with an ExpectationMap which might be closer to the behaviour > > >>>>you want. > > >>>> > > >>>>S. > > >>>> > > >>>>Bill Lynch wrote: > > >>>> > > >>>> > > >>>>>All, > > >>>>> > > >>>>>I haven't been able to figure out how to set attributes in a > > >>>>>MockHttpServletRequest. I searched the mailing list archives for clues, > > >>>>>but didn't find any (and there's no javadocs for that class!). > > >>>>> > > >>>>>The method that looks like it might work only takes one param: > > >>>>> > > >>>>>request.setupGetAttribute(Object) > > >>>>> > > >>>>>I'd expect that to be > > >>>>> > > >>>>>request.setupGetAttribute(String, Object) > > >>>>> > > >>>>>I've also tried passing in a vector of name/value pairs to that method, > > >>>>>but when I call getAttribute(String) on that request object I get this > > >>>>>error: > > >>>>> > > >>>>>There was 1 failure: > > >>>>>1) > > >> > > >>>>testGetAttribute(com.foo.util.MyTest)junit.framework.AssertionFailedError > > > > > > : > > > > > >>>>>attributes has run out of objects. > > >>>>> at > > >> > > >>>>com.mockobjects.ReturnObjectList.nextReturnObject(ReturnObjectList.java:6 > > > > > > 1) > > > > > >>>>> at > > >> > > >>>>com.mockobjects.servlet.MockHttpServletRequest.getAttribute(MockHttpServl > > > > > > etRequest.java:58) > > > > > > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: VM Ware > > With VMware you can run multiple operating systems on a single machine. > > WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the > > same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 > > _______________________________________________ > > Mockobjects-java-users mailing list > > Moc...@li... > > https://lists.sourceforge.net/lists/listinfo/mockobjects-java-users -- Jeff Martin Memetic Engineer http://www.custommonkey.org/ |