This seems a little odd. You get the space, cache it, then return it, but if for some reason you cached null you new up a new WebSpaces object? I would expect that if you hit the "new WebSpaces()" logic you'd want to save that value so you don't have to new up a new one every time.

But I'm willing to be convinced this is correct, not a lot of context in a 7-line diff.