/**
  * Create or overwrite a revision.
  *
  * <p>This method doesn't check site id because ProjectControl interface is avaiable only if
  * site is is valid.
  */
 @Override
 public StoredRevision insertRevision(int projId, Revision revision)
     throws ResourceConflictException {
   int revId =
       catchConflict(
           () ->
               dao.insertRevision(
                   projId,
                   revision.getName(),
                   revision.getDefaultParams(),
                   revision.getArchiveType().getName(),
                   revision.getArchiveMd5().orNull(),
                   revision.getArchivePath().orNull(),
                   revision.getUserInfo()),
           "revision=%s in project id=%d",
           revision.getName(),
           projId);
   try {
     return requiredResource(dao.getRevisionById(siteId, revId), "revision id=%d", revId);
   } catch (ResourceNotFoundException ex) {
     throw new IllegalStateException("Database state error", ex);
   }
 }