Loading src/main/java/com/inteligr8/rs/OAuthAuthorizationFilter.java +29 −3 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { private String accessToken; private long expiration; private String refreshToken; private Long refreshTokenExpiration; /** * This constructor creates an OAuth-based authorization filter using the Loading Loading @@ -99,8 +100,29 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { */ @Override public void filter(ClientRequestContext requestContext) { if (this.accessToken == null || System.currentTimeMillis() > this.expiration) if (this.accessToken == null) { this.requestToken(); } else if (System.currentTimeMillis() >= this.expiration) { this.logger.trace("Access token expired; retrieving new one with refresh token"); if (this.refreshTokenExpiration != null && System.currentTimeMillis() >= this.refreshTokenExpiration.longValue()) { this.logger.debug("Refresh token expired; performing full authentication"); this.refreshToken = null; this.requestToken(); } else { try { this.requestToken(); } catch (WebApplicationException wae) { if (wae.getResponse().getStatusInfo().getFamily() == Family.CLIENT_ERROR) { this.logger.debug("Received OAuth response {} using refresh token; performing full authentication", wae.getResponse().getStatus()); this.refreshToken = null; this.requestToken(); } else { throw wae; } } } } requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Bearer " + this.accessToken); } Loading Loading @@ -140,6 +162,8 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { .build(); WebTarget target = client.target(this.tokenUrl); long requestSendTime = System.currentTimeMillis(); Response response = target.request().post(entity); this.logger.debug("Received OAuth response: {}", response.getStatus()); Loading @@ -160,8 +184,10 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { } this.accessToken = (String)responseMap.get("access_token"); this.expiration = System.currentTimeMillis() + ((Number)responseMap.get("expires_in")).longValue() * 1000L; this.expiration = requestSendTime + ((Number)responseMap.get("expires_in")).longValue() * 1000L; this.refreshToken = (String)responseMap.get("refresh_token"); if (responseMap.containsKey("refresh_token_expires_in")) this.refreshTokenExpiration = requestSendTime + ((Number)responseMap.get("refresh_token_expires_in")).longValue() * 1000L; } protected Form createRefreshForm() { Loading Loading
src/main/java/com/inteligr8/rs/OAuthAuthorizationFilter.java +29 −3 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { private String accessToken; private long expiration; private String refreshToken; private Long refreshTokenExpiration; /** * This constructor creates an OAuth-based authorization filter using the Loading Loading @@ -99,8 +100,29 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { */ @Override public void filter(ClientRequestContext requestContext) { if (this.accessToken == null || System.currentTimeMillis() > this.expiration) if (this.accessToken == null) { this.requestToken(); } else if (System.currentTimeMillis() >= this.expiration) { this.logger.trace("Access token expired; retrieving new one with refresh token"); if (this.refreshTokenExpiration != null && System.currentTimeMillis() >= this.refreshTokenExpiration.longValue()) { this.logger.debug("Refresh token expired; performing full authentication"); this.refreshToken = null; this.requestToken(); } else { try { this.requestToken(); } catch (WebApplicationException wae) { if (wae.getResponse().getStatusInfo().getFamily() == Family.CLIENT_ERROR) { this.logger.debug("Received OAuth response {} using refresh token; performing full authentication", wae.getResponse().getStatus()); this.refreshToken = null; this.requestToken(); } else { throw wae; } } } } requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Bearer " + this.accessToken); } Loading Loading @@ -140,6 +162,8 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { .build(); WebTarget target = client.target(this.tokenUrl); long requestSendTime = System.currentTimeMillis(); Response response = target.request().post(entity); this.logger.debug("Received OAuth response: {}", response.getStatus()); Loading @@ -160,8 +184,10 @@ public abstract class OAuthAuthorizationFilter implements AuthorizationFilter { } this.accessToken = (String)responseMap.get("access_token"); this.expiration = System.currentTimeMillis() + ((Number)responseMap.get("expires_in")).longValue() * 1000L; this.expiration = requestSendTime + ((Number)responseMap.get("expires_in")).longValue() * 1000L; this.refreshToken = (String)responseMap.get("refresh_token"); if (responseMap.containsKey("refresh_token_expires_in")) this.refreshTokenExpiration = requestSendTime + ((Number)responseMap.get("refresh_token_expires_in")).longValue() * 1000L; } protected Form createRefreshForm() { Loading