@Override
  public ExtRepositoryFolderAdapter updateFolder(
      long folderId, String name, String description, ServiceContext serviceContext)
      throws PortalException {

    String extRepositoryFolderKey = getExtRepositoryObjectKey(folderId);

    ExtRepositoryFolder extRepositoryFolder =
        _extRepository.getExtRepositoryObject(
            ExtRepositoryObjectType.FOLDER, extRepositoryFolderKey);

    ExtRepositoryFolder parentExtRepositoryFolder =
        _extRepository.getExtRepositoryParentFolder(extRepositoryFolder);

    ExtRepositoryFolder newExtRepositoryFolder =
        _extRepository.moveExtRepositoryObject(
            ExtRepositoryObjectType.FOLDER,
            extRepositoryFolderKey,
            parentExtRepositoryFolder.getExtRepositoryModelKey(),
            name);

    ExtRepositoryAdapterCache extRepositoryAdapterCache = ExtRepositoryAdapterCache.getInstance();

    extRepositoryAdapterCache.remove(extRepositoryFolderKey);

    return _toExtRepositoryObjectAdapter(
        ExtRepositoryObjectAdapterType.FOLDER, newExtRepositoryFolder);
  }
  @Override
  public FileEntry updateFileEntry(
      long userId,
      long fileEntryId,
      String sourceFileName,
      String mimeType,
      String title,
      String description,
      String changeLog,
      boolean majorVersion,
      InputStream inputStream,
      long size,
      ServiceContext serviceContext)
      throws PortalException {

    String extRepositoryFileEntryKey = getExtRepositoryObjectKey(fileEntryId);

    ExtRepositoryFileEntry extRepositoryFileEntry =
        _extRepository.getExtRepositoryObject(
            ExtRepositoryObjectType.FILE, extRepositoryFileEntryKey);

    boolean needsCheckIn = false;

    if (!isCheckedOut(extRepositoryFileEntry)) {
      _extRepository.checkOutExtRepositoryFileEntry(extRepositoryFileEntryKey);

      needsCheckIn = true;
    }

    if (inputStream != null) {
      extRepositoryFileEntry =
          _extRepository.updateExtRepositoryFileEntry(
              extRepositoryFileEntryKey, mimeType, inputStream);
    }

    if (!title.equals(extRepositoryFileEntry.getTitle())) {
      ExtRepositoryFolder folder =
          _extRepository.getExtRepositoryParentFolder(extRepositoryFileEntry);

      extRepositoryFileEntry =
          _extRepository.moveExtRepositoryObject(
              ExtRepositoryObjectType.FILE,
              extRepositoryFileEntryKey,
              folder.getExtRepositoryModelKey(),
              title);

      ExtRepositoryAdapterCache extRepositoryAdapterCache = ExtRepositoryAdapterCache.getInstance();

      extRepositoryAdapterCache.remove(extRepositoryFileEntryKey);
    }

    if (needsCheckIn) {
      _extRepository.checkInExtRepositoryFileEntry(
          extRepositoryFileEntryKey, majorVersion, changeLog);
    }

    return _toExtRepositoryObjectAdapter(
        ExtRepositoryObjectAdapterType.FILE, extRepositoryFileEntry);
  }
  @Override
  public ExtRepositoryFolderAdapter moveFolder(
      long userId, long folderId, long newParentFolderId, ServiceContext serviceContext)
      throws PortalException {

    String extRepositoryFolderKey = getExtRepositoryObjectKey(folderId);

    ExtRepositoryFolder extRepositoryFolder =
        _extRepository.getExtRepositoryObject(
            ExtRepositoryObjectType.FOLDER, extRepositoryFolderKey);

    String extRepositoryNewParentFolderKey = getExtRepositoryObjectKey(newParentFolderId);

    ExtRepositoryFolder moveExtRepositoryFolder =
        _extRepository.moveExtRepositoryObject(
            ExtRepositoryObjectType.FOLDER,
            extRepositoryFolderKey,
            extRepositoryNewParentFolderKey,
            extRepositoryFolder.getName());

    return _toExtRepositoryObjectAdapter(
        ExtRepositoryObjectAdapterType.FOLDER, moveExtRepositoryFolder);
  }