/**
 * \brief Update dispatcher function.
 *
 * \param u The Update to update this object with.
 */
void UpdatableSOAdapter::update(const Update& u)
{
     switch (u.getType()) {
     case Update::eAdd:
          debug("Adding object " << u.getReference());
          addObject(*u.getObject(), u.getInitiator());
          break;
     case Update::eRemove:
          debug("Removing object " << u.getReference());
          removeObject(u.getReference(), u.getInitiator());
          break;
     case Update::eReplace:
          debug("Replacing object " << u.getReference());
          replaceObject(*u.getObject(), u.getInitiator());
          break;
     case Update::eModify:
          debug("Modifying object " << u.getReference());
          modify(*u.getObject());
          break;
     default:
          Error e;
          e << "Unknown update type " << u.getType() << " for update with target ";
          throw e;
     }
}