You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ss...@apache.org on 2012/06/18 23:11:05 UTC
svn commit: r1351488 -
/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java
Author: ssievers
Date: Mon Jun 18 21:11:04 2012
New Revision: 1351488
URL: http://svn.apache.org/viewvc?rev=1351488&view=rev
Log: (empty)
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java?rev=1351488&r1=1351487&r2=1351488&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/BasicOAuth2Request.java Mon Jun 18 21:11:04 2012
@@ -52,6 +52,8 @@ public class BasicOAuth2Request implemen
private static final FilteredLogger LOG = FilteredLogger
.getFilteredLogger(BasicOAuth2Request.LOG_CLASS);
+ private static final short MAX_ATTEMPTS = 3;
+
private OAuth2Accessor internalAccessor;
private OAuth2Arguments arguments;
@@ -82,6 +84,8 @@ public class BasicOAuth2Request implemen
private final OAuth2RequestParameterGenerator requestParameterGenerator;
+ private short attemptCounter = 0;
+
/**
* @param fetcherConfig
* configuration options for the fetcher
@@ -175,18 +179,20 @@ public class BasicOAuth2Request implemen
response = this.sendErrorResponse(null, OAuth2Error.FETCH_INIT_PROBLEM,
"accessor is null", "");
} else {
- accessor.setRedirecting(false);
+ synchronized (accessor) {
+ accessor.setRedirecting(false);
- final Map<String, String> requestParams = this.requestParameterGenerator
- .generateParams(this.realRequest);
- accessor.setAdditionalRequestParams(requestParams);
+ final Map<String, String> requestParams = this.requestParameterGenerator
+ .generateParams(this.realRequest);
+ accessor.setAdditionalRequestParams(requestParams);
+
+ HttpResponseBuilder responseBuilder = null;
+ if (!accessor.isErrorResponse()) {
+ responseBuilder = this.attemptFetch(accessor);
+ }
- HttpResponseBuilder responseBuilder = null;
- if (!accessor.isErrorResponse()) {
- responseBuilder = this.attemptFetch(accessor);
+ response = this.processResponse(accessor, responseBuilder);
}
-
- response = this.processResponse(accessor, responseBuilder);
}
}
} catch (final Throwable t) {
@@ -228,6 +234,12 @@ public class BasicOAuth2Request implemen
new Object[] { accessor });
}
+ this.attemptCounter++;
+
+ if (isLogging) {
+ BasicOAuth2Request.LOG.log("attempt number {0}", this.attemptCounter);
+ }
+
HttpResponseBuilder ret = null;
if (accessor.isErrorResponse()) {
@@ -236,7 +248,8 @@ public class BasicOAuth2Request implemen
} else {
if (BasicOAuth2Request.haveAccessToken(accessor) != null) {
// We have an access_token, use it and stop!
- ret = this.fetchData(accessor);
+ // Don't try more than three times
+ ret = this.fetchData(accessor, this.attemptCounter > BasicOAuth2Request.MAX_ATTEMPTS);
} else {
// We don't have an access token, we need to try and get one.
// First step see if we have a refresh token
@@ -493,7 +506,7 @@ public class BasicOAuth2Request implemen
return true;
}
- private HttpResponseBuilder fetchData(final OAuth2Accessor accessor) {
+ private HttpResponseBuilder fetchData(final OAuth2Accessor accessor, final boolean lastAttempt) {
final boolean isLogging = BasicOAuth2Request.LOG.isLoggable();
if (isLogging) {
BasicOAuth2Request.LOG.entering(BasicOAuth2Request.LOG_CLASS, "fetchData", accessor);
@@ -502,7 +515,7 @@ public class BasicOAuth2Request implemen
HttpResponseBuilder ret = null;
try {
- final HttpResponse response = this.fetchFromServer(accessor, this.realRequest);
+ final HttpResponse response = this.fetchFromServer(accessor, this.realRequest, lastAttempt);
if (response != null) {
ret = new HttpResponseBuilder(response);
@@ -521,12 +534,12 @@ public class BasicOAuth2Request implemen
return ret;
}
- private HttpResponse fetchFromServer(final OAuth2Accessor accessor, final HttpRequest request)
- throws OAuth2RequestException {
+ private HttpResponse fetchFromServer(final OAuth2Accessor accessor, final HttpRequest request,
+ final boolean lastAttempt) throws OAuth2RequestException {
final boolean isLogging = BasicOAuth2Request.LOG.isLoggable();
if (isLogging) {
BasicOAuth2Request.LOG.entering(BasicOAuth2Request.LOG_CLASS, "fetchFromServer",
- new Object[] { accessor, "only log request once" });
+ new Object[] { accessor, "only log request once", lastAttempt });
}
HttpResponse ret;
@@ -538,7 +551,6 @@ public class BasicOAuth2Request implemen
final long expiresAt = accessToken.getExpiresAt();
if (expiresAt != 0) {
if (currentTime >= expiresAt) {
- accessToken = null;
if (BasicOAuth2Request.LOG.isLoggable()) {
BasicOAuth2Request.LOG.log("accessToken has expired at {0}", expiresAt);
}
@@ -548,8 +560,11 @@ public class BasicOAuth2Request implemen
throw new OAuth2RequestException(OAuth2Error.MISSING_SERVER_RESPONSE,
"error removing access_token", null);
}
+ accessToken = null;
accessor.setAccessToken(null);
- return null;
+ if (!lastAttempt) {
+ return null;
+ }
}
}
}
@@ -559,7 +574,6 @@ public class BasicOAuth2Request implemen
final long expiresAt = refreshToken.getExpiresAt();
if (expiresAt != 0) {
if (currentTime >= expiresAt) {
- refreshToken = null;
if (BasicOAuth2Request.LOG.isLoggable()) {
BasicOAuth2Request.LOG.log("refreshToken has expired at {0}", expiresAt);
}
@@ -569,8 +583,11 @@ public class BasicOAuth2Request implemen
throw new OAuth2RequestException(OAuth2Error.MISSING_SERVER_RESPONSE,
"error removing refresh_token", null);
}
+ refreshToken = null;
accessor.setRefreshToken(null);
- return null;
+ if (!lastAttempt) {
+ return null;
+ }
}
}
}
@@ -629,7 +646,9 @@ public class BasicOAuth2Request implemen
accessor.setAccessToken(null);
}
- ret = null;
+ if (!lastAttempt) {
+ ret = null;
+ }
}
if (isLogging) {