code: Map<CmsPrincipalBean, String> getResponsibles(CmsObject cms, CmsResource res) {
  
          Map<CmsPrincipalBean, String> result = new HashMap<CmsPrincipalBean, String>();
          List<CmsResource> parentResources = new ArrayList<CmsResource>();
          // get all parent folders of the current file
          try {
              parentResources = cms.readPath(res, CmsResourceFilter.IGNORE_EXPIRATION);
          } catch (CmsException e) {
              LOG.error(e.getLocalizedMessage(), e);
          }
  
          for (CmsResource resource : parentResources) {
              String storedSiteRoot = cms.getRequestContext().getSiteRoot();
              String sitePath = cms.getRequestContext().removeSiteRoot(resource.getRootPath());
              try {
                  cms.getRequestContext().setSiteRoot("/");
                  List<CmsAccessControlEntry> entries = cms.getAccessControlEntries(resource.getRootPath(), false);
                  for (CmsAccessControlEntry ace : entries) {
                      if (ace.isResponsible()) {
                          I_CmsPrincipal principal = cms.lookupPrincipal(ace.getPrincipal());
                          if (principal != null) {
                              CmsPrincipalBean prinBean = new CmsPrincipalBean(
                                  principal.getName(),
                                  principal.getDescription(),
                                  principal.isGroup());
                              if (!resource.getRootPath().equals(res.getRootPath())) {
                                  if (resource.getRootPath().startsWith(storedSiteRoot)) {
                                      result.put(prinBean, sitePath);
                                  } else {
                                      result.put(prinBean, resource.getRootPath());
                                  }
                              } else {
                                  result.put(prinBean, null);
                              }
                          }
                      }
                  }
              } catch (CmsException e) {
                  LOG.info(
                      "Problem with reading responsible users for "
                          + resource.getName()
                          + " : "
                          + e.getLocalizedMessage(),
                      e);
              } finally {
                  cms.getRequestContext().setSiteRoot(storedSiteRoot);
              }
          }
          return result;
      }
docs: Returns the responsibles.<p>
  
  @param cms the cms context
  @param res the resource
  
  @return the responsibles