private ExtRepositoryFileVersionAdapter _toExtRepositoryFileVersionAdapter(
      ExtRepositoryFileEntryAdapter extRepositoryFileEntryAdapter,
      ExtRepositoryFileVersion extRepositoryFileVersion)
      throws PortalException {

    ExtRepositoryAdapterCache extRepositoryAdapterCache = ExtRepositoryAdapterCache.getInstance();

    String extRepositoryModelKey = extRepositoryFileVersion.getExtRepositoryModelKey();

    ExtRepositoryFileVersionAdapter extRepositoryVersionAdapter =
        extRepositoryAdapterCache.get(extRepositoryModelKey);

    if (extRepositoryVersionAdapter == null) {
      RepositoryEntry repositoryEntry = getRepositoryEntry(extRepositoryModelKey);

      extRepositoryVersionAdapter =
          new ExtRepositoryFileVersionAdapter(
              this,
              repositoryEntry.getRepositoryEntryId(),
              repositoryEntry.getUuid(),
              extRepositoryFileEntryAdapter,
              extRepositoryFileVersion);

      extRepositoryAdapterCache.put(extRepositoryVersionAdapter);
    }

    return extRepositoryVersionAdapter;
  }
  @Override
  public void revertFileEntry(
      long userId, long fileEntryId, String version, ServiceContext serviceContext)
      throws PortalException {

    String extRepositoryFileEntryKey = getExtRepositoryObjectKey(fileEntryId);

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

    ExtRepositoryFileVersion extRepositoryFileVersion = null;

    List<ExtRepositoryFileVersion> extRepositoryFileVersions =
        _extRepository.getExtRepositoryFileVersions(extRepositoryFileEntry);

    for (ExtRepositoryFileVersion curExtRepositoryFileVersion : extRepositoryFileVersions) {

      String curVersion = curExtRepositoryFileVersion.getVersion();

      if (curVersion.equals(version)) {
        extRepositoryFileVersion = curExtRepositoryFileVersion;

        break;
      }
    }

    if (extRepositoryFileVersion != null) {
      InputStream inputStream = _extRepository.getContentStream(extRepositoryFileVersion);

      boolean needsCheckIn = false;

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

          needsCheckIn = true;
        } catch (UnsupportedOperationException uoe) {
        }
      }

      _extRepository.updateExtRepositoryFileEntry(
          extRepositoryFileEntryKey, extRepositoryFileVersion.getMimeType(), inputStream);

      String changeLog =
          LanguageUtil.format(serviceContext.getLocale(), "reverted-to-x", version, false);

      if (needsCheckIn) {
        try {
          _extRepository.checkInExtRepositoryFileEntry(extRepositoryFileEntryKey, true, changeLog);
        } catch (UnsupportedOperationException uoe) {
        }
      }
    } else {
      throw new NoSuchFileVersionException(
          "No file version with {extRepositoryModelKey="
              + extRepositoryFileEntry.getExtRepositoryModelKey()
              + ", version: "
              + version
              + "}");
    }
  }