private Session createServiceSession()

in src/main/java/org/apache/sling/jcr/base/AbstractSlingRepository2.java [160:179]


    private Session createServiceSession(Bundle usingBundle, String subServiceName, String workspaceName) throws RepositoryException {
        final ServiceUserMapper serviceUserMapper = this.getSlingRepositoryManager().getServiceUserMapper();
        if (serviceUserMapper != null) {
            Session session = null;
            final Iterable<String> principalNames = serviceUserMapper.getServicePrincipalNames(usingBundle, subServiceName);
            if (principalNames != null) {
                session = createServiceSession(principalNames, workspaceName);
            } else {
                final String userName = serviceUserMapper.getServiceUserID(usingBundle, subServiceName);
                if (userName != null) {
                    session = createServiceSession(userName, workspaceName);
                }
            }
            if (session != null) {
                Repository repository = getRepository();
                return repository instanceof ProxyRepository ? ((ProxyRepository) repository).wrap(session) : session;
            }
        }
        return null;
    }