code: public CmsUser readUser(CmsDbContext dbc, String username) throws CmsDataAccessException {
  
          CmsUser user = m_monitor.getCachedUser(username);
          if (user == null) {
              user = getUserDriver(dbc).readUser(dbc, username);
              m_monitor.cacheUser(user);
          }
          // important: do not return the cached user object, but a clone to avoid unwanted changes on cached objects
          return user.clone();
      }
docs: Returns a user object.<p>
  
  @param dbc the current database context
  @param username the name of the user that is to be read
  
  @return user read
  
  @throws CmsDataAccessException if operation was not successful