docs: public void afterPropertiesSet() throws Exception {
          Resource portletXml = resourceLoader.getResource("/WEB-INF/portlet.xml");
          Document doc = getDocument(portletXml.getInputStream());
          
          final XPathExpression roleNamesExpression;
          if (portletConfig == null) {
          	final XPathFactory xPathFactory = XPathFactory.newInstance();
          	
          	final XPath xPath = xPathFactory.newXPath();
          	roleNamesExpression = xPath.compile("/portlet-app/portlet/security-role-ref/role-name");
          }
          else {
          	final XPathFactory xPathFactory = XPathFactory.newInstance();
              xPathFactory.setXPathVariableResolver(new XPathVariableResolver() {
                  @Override
                  public Object resolveVariable(QName variableName) {
                      if ("portletName".equals(variableName.getLocalPart())) {
                          return portletConfig.getPortletName();
                      }
  
                      return null;
                  }
              });
              final XPath xPath = xPathFactory.newXPath();
          	roleNamesExpression = xPath.compile("/portlet-app/portlet[portlet-name=$portletName]/security-role-ref/role-name");
          }
          
          final NodeList securityRoles = (NodeList)roleNamesExpression.evaluate(doc, XPathConstants.NODESET);
          final Set<String> roleNames = new HashSet<String>();
  
          for (int i=0; i < securityRoles.getLength(); i++) {
              Element secRoleElt = (Element) securityRoles.item(i);
              String roleName = secRoleElt.getTextContent().trim();
              roleNames.add(roleName);
              logger.info("Retrieved role-name '" + roleName + "' from portlet.xml");
          }
          
          if (roleNames.isEmpty()) {
          	logger.info("No security-role-ref elements found in " + portletXml + (portletConfig == null ? "" : " for portlet " + portletConfig.getPortletName()));
          }
  
          mappableAttributes = Collections.unmodifiableSet(roleNames);
      }