Dan Diephouse wrote:
I just took a look at the refactoring. Overall I like it.
Good to hear.
Some comments:
Most of my comments have to do with the ext package. I like the
interfaces for the most part in the top level package. But I think to
some degree the separation which has occurred inside the ext/basic
packages is unecessary.
Agreed.
AbstractProvider already includes the concepts of CollectionAdapter &
WorkspaceManager. So why have so many derivative implementations? There
is AbstractProivder, AbstractWorkspaceManagerProvider, BasicProvider,
ExtendedProvider. They are all slight variations on the same thing and
should all be combined into one thing IMO. I was kind of on the fence
before, but after seeing the class proliferation, think its a bad idea
to have a provider implement CollectionAdapter & WorkspaceManager. It
creates an overly complex code base and will be confusing for users -
i.e. which Provider do I use? Lets make the typical answer to that
question just one answer unless they have to override some advanced
functionality. Then the process of writing a server becomes conceptually
simpler:
- Write a CollectionAdapter
- If necessary write a workspace manager
- Glue it together with a ServiceContext and a provider
See how this eliminates a step and confusion from the process?
Along these lines:
- ExtendedWorkspaceManager -> WorkspaceManagerImpl, SimpleWorkspaceInfo
-> WorkspaceImpl (I personally like Impl better, but whatever)
- Collapse NamedCollectionAdapter into CollectionAdapter
- Delete AbstractWorkspaceManagerProvider,
AbstractNamedCollectionAdapter, redundant Basic* stuff, etc
And see how many classes can be removed? :-)
Again agreed. I would have combined much of this stuff already but I
wanted to keep the various approaches separate in this first revision
and then start iterating to simplify things. Mainly, I'm still not
convinced that there is a need for the BasicAdapter interface. I
understand what the feed-server stuff is doing but I think the
additional interfaces causes more difficulty than it is worth.
Other comments:
- Can we please move to TestNG or JUnit4? The test code to deal with
servers is fairly hackish and this would alleviate that.
- I find the code style a little unreadable. I'm hesitant to bring it up
though as its a neverending battle. If I had two wishes though they
would be that we don't break constrcutor/method lines unless necessary
and we move to 4 spaces :-)
I have more thoughts, but I need to hop on a plane. Nice work James and
looking forward to digging in more soon.
- Dan
--
Dan Diephouse
MuleSource
http://mulesource.com | http://netzooid.com/blog