fix some comments

Signed-off-by: zhiqiand <zhiqian@fb.com>
This commit is contained in:
zhiqiand
2022-10-04 13:44:51 -07:00
parent 343fc7b6ee
commit 52dae760d8
4 changed files with 32 additions and 18 deletions

View File

@@ -172,7 +172,7 @@ public class ConfigManager implements Runnable {
} }
} }
client.refreshAccessToken(); client.refreshAccessToken();
// Fetch device list // Fetch device list
List<DeviceWithStatus> devices = client.getDevices(); List<DeviceWithStatus> devices = client.getDevices();
if (devices == null) { if (devices == null) {

View File

@@ -219,7 +219,7 @@ public class DataCollector implements Runnable {
} }
} }
client.refreshAccessToken(); client.refreshAccessToken();
// Fetch device list // Fetch device list
List<DeviceWithStatus> devices = client.getDevices(); List<DeviceWithStatus> devices = client.getDevices();
if (devices == null) { if (devices == null) {

View File

@@ -239,7 +239,7 @@ public class Modeler implements Runnable {
} }
} }
client.refreshAccessToken(); client.refreshAccessToken();
// TODO: backfill data from database? // TODO: backfill data from database?
// Fetch state from uCentralGw // Fetch state from uCentralGw

View File

@@ -142,9 +142,6 @@ public class UCentralClient {
*/ */
private WebTokenResult accessToken; private WebTokenResult accessToken;
/** Time window before expiry (6 hours) in secondes */
private final int TOKEN_REFRESH_WINDOW_S = 21600;
/** /**
* Constructor. * Constructor.
* @param rrmEndpoint advertise this RRM endpoint to the SDK * @param rrmEndpoint advertise this RRM endpoint to the SDK
@@ -210,7 +207,10 @@ public class UCentralClient {
logger.debug("Response body: {}", response.getBody()); logger.debug("Response body: {}", response.getBody());
return false; return false;
} }
if (token == null || token.access_token == null || token.access_token.isEmpty()) { if (
token == null || token.access_token == null ||
token.access_token.isEmpty()
) {
logger.error("Login failed: Missing access token"); logger.error("Login failed: Missing access token");
logger.debug("Response body: {}", response.toString()); logger.debug("Response body: {}", response.toString());
return false; return false;
@@ -224,25 +224,39 @@ public class UCentralClient {
return loadSystemEndpoints(); return loadSystemEndpoints();
} }
/** /**
* when use public endpoints, refresh the access token if it's expired. * when use public endpoints, refresh the access token if it's expired.
*/ */
public synchronized void refreshAccessToken(){ public synchronized void refreshAccessToken() {
if(usePublicEndpoints){ if (usePublicEndpoints) {
accessToken = getAccessToken(); accessToken = getAccessToken();
} }
} }
/**
* Check if the token is completely expired even if
* for a token refresh request
*
* @return true if the refresh token is expired
*/
private boolean isRefreshTokenExpired() {
if (accessToken == null) {
return true;
}
return accessToken.created + accessToken.expires_in <
Instant.now().getEpochSecond();
}
/** /**
* Check if an access token is expired. * Check if an access token is expired.
* *
* @return true if the access token is expired * @return true if the access token is expired
*/ */
private boolean isAccessTokenExpired() { private boolean isAccessTokenExpired() {
if(accessToken == null){ if (accessToken == null) {
return true; return true;
} }
return accessToken.created + TOKEN_REFRESH_WINDOW_S < return accessToken.created + accessToken.idle_timeout <
Instant.now().getEpochSecond(); Instant.now().getEpochSecond();
} }
@@ -254,10 +268,10 @@ public class UCentralClient {
* @return a valid access token ({@code WebTokenResult}) * @return a valid access token ({@code WebTokenResult})
*/ */
private WebTokenResult getAccessToken() { private WebTokenResult getAccessToken() {
if (!usePublicEndpoints){ if (!usePublicEndpoints) {
return null; return null;
} }
if (accessToken == null) { if (isRefreshTokenExpired()) {
logger.info("Token is expired, login again"); logger.info("Token is expired, login again");
if (login()) { if (login()) {
return accessToken; return accessToken;
@@ -285,7 +299,7 @@ public class UCentralClient {
* @return valid access token if success, otherwise return null. * @return valid access token if success, otherwise return null.
*/ */
private WebTokenResult refreshToken() { private WebTokenResult refreshToken() {
if(accessToken == null){ if (accessToken == null) {
return null; return null;
} }
WebTokenRefreshRequest refreshRequest = new WebTokenRefreshRequest(); WebTokenRefreshRequest refreshRequest = new WebTokenRefreshRequest();
@@ -430,7 +444,7 @@ public class UCentralClient {
.connectTimeout(connectTimeoutMs) .connectTimeout(connectTimeoutMs)
.socketTimeout(socketTimeoutMs); .socketTimeout(socketTimeoutMs);
if (usePublicEndpoints) { if (usePublicEndpoints) {
if (accessToken != null) { if (!isRefreshTokenExpired()) {
req.header( req.header(
"Authorization", "Authorization",
"Bearer " + accessToken.access_token "Bearer " + accessToken.access_token
@@ -483,7 +497,7 @@ public class UCentralClient {
req.queryString(parameters); req.queryString(parameters);
} }
if (usePublicEndpoints) { if (usePublicEndpoints) {
if (accessToken != null) { if (!isRefreshTokenExpired()) {
req.header( req.header(
"Authorization", "Authorization",
"Bearer " + accessToken.access_token "Bearer " + accessToken.access_token