Refactor GadgetServer to take a configuration class in the ctor.
----------------------------------------------------------------

                 Key: SHINDIG-33
                 URL: https://issues.apache.org/jira/browse/SHINDIG-33
             Project: Shindig
          Issue Type: Improvement
          Components: Gadgets Server - Java
            Reporter: Kevin Brown
            Assignee: Kevin Brown


GadgetServer is currently easy to configure incorrectly. This should be 
resolved by introducing a GadgetConfig class. Prototype as follows:

class GadgetConfig () {
private RemoteContentFetcher fetcher;
public setRemoteContentFetcher(RemoteContentFetcher fetcher) {
  this.fetcher = fetcher;
   return this;
}
...other injectable classes here...

Change GadgetServer's ctor to this:
public GadgetServer(GadgetConfig config) {
if (config.getRemoteContentFetcher() == null) { throw new GadgetException(...)}
.. check other injectable classes...

This solves two problems:

- Moving all the necessary config to the ctor causes the ctor to take 9 or 10 
parameters, which hurts readability and makes distinguishing parameters 
difficult.
- Keeping the various set* methods on GadgetServer makes it too easy to forget 
to do something, and you won't find out until process() is called (can't check 
at startup)

The creation call can now look like this:

GadgetServer s = new GadgetServer(new GadgetConfig()
    .setRemoteContentFetcher(...)
    .setGadgetCache(...)
    .setMessageBundleCache(...));

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to