public String getUsername()

in java/ws-server/src/main/java/com/epam/deltix/tbwg/webapp/services/oid/UserInfoServiceImpl.java [88:132]


    public String getUsername(String token, String subStr, long exp) {
        // 1. Check cache
        // 2. Insert cache(sub)
        final Sub sub;
        synchronized (sync) {
            long it = cachedSub.locateOrReserve(token);
            if (it == cachedSub.getReservedSpace()) {
                sub = new Sub(subStr, exp);
                cachedSub.setKeyAt(it, token);
                cachedSub.setValueAt(it, sub);
            } else {
                sub = cachedSub.getValueAt(it);
            }
            final UserName username = cachedUserNames.get(sub.getSub());
            if (username != null)
                return username.getUsername();
        }

        // 3. Check userinfo
        LOG.debug().append("/userinfo request: ").append(token).commit();
        String usernameStr = openIdAuthProvider.getUsername(token);
        if (usernameStr == null)
            throw new IllegalStateException("Couldn't extract username from token.");

        // 4. Insert cache(username)
        synchronized (sync) {
            final UserName username;
            long it = cachedUserNames.locateOrReserve(sub.getSub());
            if (it == cachedUserNames.getReservedSpace()) {
                try {
                    username = new UserName(usernameStr, exp);
                } catch (Throwable ex) {
                    cachedUserNames.removeAt(it);
                    throw ex;
                }
                cachedUserNames.setKeyAt(it, sub.getSub());
                cachedUserNames.setValueAt(it, username);
            } else {
                username = cachedUserNames.getValueAt(it);
                if (exp > username.getExpiration())
                    username.setExpiration(exp);
            }
            return username.getUsername();
        }
    }