@Override
  public void updateWorkspace(UpdateWorkspaceRequest request)
      throws UserNotFoundException, WorkspaceNotUpdatedException {
    logger.debug(request);

    User user = new User();
    user.setId(request.getUserId());
    Item item = new Item(request.getParentItemId());

    Workspace workspace = new Workspace(request.getWorkspaceId());
    workspace.setName(request.getWorkspaceName());
    workspace.setParentItem(item);

    getHandler().doUpdateWorkspace(user, workspace);

    // Create notification
    UpdateWorkspaceNotification notification =
        new UpdateWorkspaceNotification(
            workspace.getId(), workspace.getName(), workspace.getParentItem().getId());
    notification.setRequestId(request.getRequestId());

    // Send notification to owner
    RemoteClient client;
    try {
      client = broker.lookupMulti(user.getId().toString(), RemoteClient.class);
      client.notifyUpdateWorkspace(notification);
    } catch (RemoteException e1) {
      logger.error(String.format("Could not notify user: '******'", user.getId()), e1);
    }
  }
  @Override
  public void createShareProposal(ShareProposalRequest request)
      throws ShareProposalNotCreatedException, UserNotFoundException {

    logger.debug(request);

    User user = new User();
    user.setId(request.getUserId());

    Item item = new Item(request.getItemId());

    // Create share proposal
    Workspace workspace =
        getHandler().doShareFolder(user, request.getEmails(), item, request.isEncrypted());

    // Create notification
    ShareProposalNotification notification =
        new ShareProposalNotification(
            workspace.getId(),
            workspace.getName(),
            item.getId(),
            workspace.getOwner().getId(),
            workspace.getOwner().getName(),
            workspace.getSwiftContainer(),
            workspace.getSwiftUrl(),
            workspace.isEncrypted());

    notification.setRequestId(request.getRequestId());

    // Send notification to owner
    RemoteClient client;
    try {
      client = broker.lookupMulti(user.getId().toString(), RemoteClient.class);
      client.notifyShareProposal(notification);
    } catch (RemoteException e1) {
      logger.error(String.format("Could not notify user: '******'", user.getId()), e1);
    }

    // Send notifications to users
    for (User addressee : workspace.getUsers()) {
      try {
        client = broker.lookupMulti(addressee.getId().toString(), RemoteClient.class);
        client.notifyShareProposal(notification);
      } catch (RemoteException e) {
        logger.error(String.format("Could not notify user: '******'", addressee.getId()), e);
      }
    }
  }