angela created SLING-7198:
-----------------------------

             Summary: Duplicated lookup for mapping without subserviceName
                 Key: SLING-7198
                 URL: https://issues.apache.org/jira/browse/SLING-7198
             Project: Sling
          Issue Type: Bug
          Components: Service User Mapper
            Reporter: angela
            Priority: Minor


[~kpauls] If I am not mistaken there is an extra lookup in the following method:

{code}
    private Iterable<String> internalGetPrincipalNames(final String 
serviceName, final String subServiceName) {
        log.debug(
                "internalGetPrincipalNames: {} active mappings, looking for 
mapping for {}/{}",
                new Object[] { this.activeMappings.length, serviceName, 
subServiceName });

        for (final Mapping mapping : this.activeMappings) {
            final Iterable<String> principalNames = 
mapping.mapPrincipals(serviceName, subServiceName);
            if (principalNames != null) {
                log.debug("Got principalNames [{}] from {}/{}", new Object[] 
{principalNames, serviceName, subServiceName });
                return principalNames;
            }
        }

        for (Mapping mapping : this.activeMappings) {
            final Iterable<String> principalNames = 
mapping.mapPrincipals(serviceName, null);
            if (principalNames != null) {
                log.debug("Got principalNames [{}] from {}/{}", new Object[] 
{principalNames, serviceName });
                return principalNames;
            }
        }

        // second round without serviceInfo
        log.debug(
                "internalGetPrincipalNames: {} active mappings, looking for 
mapping for {}/<no subServiceName>",
                this.activeMappings.length, serviceName);

        for (Mapping mapping : this.activeMappings) {
            final Iterable<String> principalNames = 
mapping.mapPrincipals(serviceName, null);
            if (principalNames != null) {
                log.debug("Got principalNames [{}] from {}/<no 
subServiceName>", principalNames, serviceName);
                return principalNames;
            }
        }

        log.debug("internalGetPrincipalNames: no mapping found.");
        return null;
    }
{code}

If I read the code properly the lookup that is logged by being the 'second 
round' is actually the third perform once again the lookup without 
'subServiceName'. If that is correct I would suggest to remove the following 
code:

{code}
for (Mapping mapping : this.activeMappings) {
            final Iterable<String> principalNames = 
mapping.mapPrincipals(serviceName, null);
            if (principalNames != null) {
                log.debug("Got principalNames [{}] from {}/{}", new Object[] 
{principalNames, serviceName });
                return principalNames;
            }
        }
{code}

or the third one that is called the second round ;-)

But please double check to make sure I didn't just overlook some subtle diff :-)






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to