public void setFilePath(FileSelector fileSelector, String filePath)
      throws IOException, SecurityException {

    Log.i(TAG, "setFilePath#started");

    if (fileSelector == null) {
      throw new IllegalArgumentException("The fileSelector argument is null");
    }
    if (!iFileSelectorMap.containsKey(fileSelector.getFileId())) {
      throw new IllegalArgumentException(
          "The file indicated by the fileSelector argument was not included in this FilePullRequest");
    }
    // TODO IOException
    // TODO SecurityException

    IFileSelectorWrapper iFileSelectorWrapper = iFileSelectorMap.get(fileSelector.getFileId());

    iFileSelectorWrapper.pathSet();

    try {
      mFilePullRequest.setFilePath(iFileSelectorWrapper.getiFileSelector(), filePath);
    } catch (RemoteException e) {
      Log.e(TAG, e.getMessage(), e);
    }
    Log.i(TAG, "setFilePath#finished");
  }
  public void accept() throws ImsException {
    Log.i(TAG, "accept#started");

    if (isExpired()) {
      throw new IllegalStateException("The request has expired");
    }
    for (IFileSelectorWrapper wrapper : iFileSelectorMap.values()) {
      if (!wrapper.isPathSet()) {
        throw new ImsException(
            "A file path has not been set for all file selectors in the request");
      }
    }

    try {
      mFilePullRequest.accept();
    } catch (RemoteException e) {
      Log.e(TAG, e.getMessage(), e);
    }
    Log.i(TAG, "accept#finish");
  }