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)