Javadoc
This class takes the work out of scheduling and queuing calls from the provisioner. Each provisioning
adapter can extend this class for this functionality. The ProvisioningAdapter Interface API methods are final so that
the child class cannot implement them and override the queuing... for what would be the point.
To use this class, have your provisioning adapter extend this abstract class. You see that you must
implement abstract methods.
To change the schedule, override the createScheduleForNode method and return a schedule suitable for
the node. In this base class, the same schedule is used for all nodes.
This class throws away duplicate node/operation tuples. This way you are guaranteed to only receive one node/operation
from the queue, until it is removed from the queue that is. This is the purpose of the initial delay. It is suspected
that the add/update/delete operations will not have any delay. Since there is only one thread per adapter, you will get
these in the order they're scheduled. Be sure that adds/updates/deletes use the same schedule to insure the proper
order.
TODO: Add logging
TODO: Verify correct Exception handling
TODO: Write tests (especially the equals method of the NodeOperation for proper queue handling)