code: public void restore(BackupChainLog log, String repositoryName, WorkspaceEntry workspaceEntry, boolean asynchronous)
        throws BackupOperationException, BackupConfigurationException, RepositoryException,
        RepositoryConfigurationException
     {
        if (workspaceEntry == null)
        {
           if (!log.getBackupConfig().getRepository().equals(repositoryName))
           {
              throw new WorkspaceRestoreException(
                 "If workspaceEntry is null, so will be restored with original configuration. "
                    + "The repositoryName (\"" + repositoryName + "\")  should be equals original repository name (\""
                    + log.getBackupConfig().getRepository() + "\"). ");
           }
  
           if (log.getOriginalWorkspaceEntry() == null)
           {
              throw new RepositoryRestoreExeption("The backup log is not contains original repository log : "
                 + log.getLogFilePath());
           }
  
           this.restore(log, log.getBackupConfig().getRepository(), log.getOriginalWorkspaceEntry(), asynchronous);
           return;
        }
  
        if (asynchronous)
        {
           JobWorkspaceRestore jobRestore =
              new JobWorkspaceRestore(repoService, this, repositoryName, new File(log.getLogFilePath()), workspaceEntry);
           restoreJobs.add(jobRestore);
           jobRestore.start();
        }
        else
        {
           this.restoreOverInitializer(log, repositoryName, workspaceEntry);
        }
     }
docs: {@inheritDoc}