code: public CmsHistoryPrincipal readHistoricalPrincipal(CmsRequestContext context, CmsUUID principalId)
      throws CmsException {
  
          CmsDbContext dbc = m_dbContextFactory.getDbContext(context);
          CmsHistoryPrincipal result = null;
          try {
              result = m_driverManager.readHistoricalPrincipal(dbc, principalId);
          } catch (Exception e) {
              dbc.report(null, Messages.get().container(Messages.ERR_READ_HISTORY_PRINCIPAL_1, principalId), e);
          } finally {
              dbc.clear();
          }
          return result;
      }
docs: Reads a principal (an user or group) from the historical archive based on its ID.<p>
  
  @param context the current request context
  @param principalId the id of the principal to read
  
  @return the historical principal entry with the given id
  
  @throws CmsException if something goes wrong, ie. {@link CmsDbEntryNotFoundException}
  
  @see CmsObject#readUser(CmsUUID)
  @see CmsObject#readGroup(CmsUUID)
  @see CmsObject#readHistoryPrincipal(CmsUUID)