I'll take a look later tonight or early in the morning and let you know
my thoughts. No need to rush to write something up for me as the code is
probably OK for now.
- Dan
James M Snell wrote:
Ok, many changes. Later this evening (after the kids are in bed) I
will write up a note summarizing the changes and will take a first
stab at a brief server implementation guide based on the revised code.
Please take a look and let me know your thoughts.
- James
Dan Diephouse wrote:
I just took a look at the refactoring. Overall I like it.
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.
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? :-)
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
--
Dan Diephouse
MuleSource
http://mulesource.com | http://netzooid.com/blog