private static AzureADToken parseTokenFromStream()

in src/main/java/com/microsoft/azure/datalake/store/oauth2/AzureADAuthenticator.java [329:370]


    private static AzureADToken parseTokenFromStream(InputStream httpResponseStream) throws IOException {
        AzureADToken token = new AzureADToken();
        try {
            int expiryPeriodRelative = 0;
            long expiryPeriodActual = -1;
            JsonFactory jf = new JsonFactory();
            JsonParser jp = jf.createParser(httpResponseStream);
            String fieldName, fieldValue;
            jp.nextToken();
            while (jp.hasCurrentToken()) {
                if (jp.getCurrentToken() == JsonToken.FIELD_NAME) {
                    fieldName = jp.getCurrentName();
                    jp.nextToken();  // field value
                    fieldValue = jp.getText();

                    if (fieldName.equals("access_token")) token.accessToken = fieldValue;
                    if (fieldName.equals("expires_in")) expiryPeriodRelative = Integer.parseInt(fieldValue);
                    if (fieldName.equals("expires_on")) expiryPeriodActual = Integer.parseInt(fieldValue);
                }
                jp.nextToken();
            }
            jp.close();
            boolean expiresOn = false;
            if(expiryPeriodActual>0) {
                // convert expiryPeriodActual to milliseconds
                token.expiry = new Date(expiryPeriodActual*1000);
                expiresOn=true;
            }
            else {
                long expiry = System.currentTimeMillis();
                expiry = expiry + expiryPeriodRelative * 1000L; // convert expiryPeriod to milliseconds and add
                token.expiry = new Date(expiry);
            }
            log.debug("AADToken: fetched token with expiry " + token.expiry.toString() + " expiresOn passed: "+expiresOn);
        } catch (Exception ex) {
            log.debug("AADToken: got exception when parsing json token " + ex.toString());
            throw ex;
        } finally {
            httpResponseStream.close();
        }
        return token;
    }