You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2014/07/21 17:45:21 UTC
[35/47] git commit: STREAMS 121 | Added javadoc comments
STREAMS 121 | Added javadoc comments
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/95f6d5d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/95f6d5d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/95f6d5d9
Branch: refs/heads/STREAMS-46
Commit: 95f6d5d9bc9069258717a9880e491ce55ae343e2
Parents: 7760393
Author: rebanks <re...@w2odigital.com>
Authored: Fri Jul 11 16:29:55 2014 -0500
Committer: rebanks <re...@w2odigital.com>
Committed: Fri Jul 11 16:29:55 2014 -0500
----------------------------------------------------------------------
.../provider/InstagramRecentMediaCollector.java | 32 +++++++++++++++++++-
.../provider/InstagramRecentMediaProvider.java | 6 +++-
2 files changed, 36 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/95f6d5d9/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaCollector.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaCollector.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaCollector.java
index 7eb3fcd..928ff9e 100644
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaCollector.java
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaCollector.java
@@ -13,6 +13,11 @@ import java.util.Queue;
import java.util.Set;
/**
+ * Executes on all of the Instagram requests to collect the media feed data.
+ *
+ * If errors/exceptions occur when trying to gather data for a particular user, that user is skipped and the collector
+ * move on to the next user. If a rate limit exception occurs it employs an exponential back off strategy for up to
+ * 5 attempts.
*
*/
public class InstagramRecentMediaCollector implements Runnable {
@@ -34,10 +39,19 @@ public class InstagramRecentMediaCollector implements Runnable {
this.isCompleted = false;
}
+ /**
+ * Set instagram client
+ * @param instagramClient
+ */
protected void setInstagramClient(Instagram instagramClient) {
this.instagramClient = instagramClient;
}
+ /**
+ * Gets the user ids from the {@link org.apache.streams.instagram.InstagramUserInformationConfiguration} and
+ * converts them to {@link java.lang.Long}
+ * @return
+ */
protected Set<Long> getUserIds() {
Set<Long> userIds = Sets.newHashSet();
for(String id : config.getUserIds()) {
@@ -50,6 +64,14 @@ public class InstagramRecentMediaCollector implements Runnable {
return userIds;
}
+ /**
+ * Determins the course of action to take when Instagram returns an exception to a request. If it is a rate limit
+ * exception, it implements an exponentional back off strategy. If it is anyother exception, it is logged and
+ * rethrown.
+ * @param instaExec exception to handle
+ * @param attempt number of attempts that have occured to pull this users information
+ * @throws InstagramException
+ */
protected void handleInstagramException(InstagramException instaExec, int attempt) throws InstagramException {
LOGGER.debug("RemainingApiLimitStatus: {}", instaExec.getRemainingLimitStatus());
if(instaExec.getRemainingLimitStatus() == 0) { //rate limit exception
@@ -66,6 +88,10 @@ public class InstagramRecentMediaCollector implements Runnable {
}
}
+ /**
+ * Gets the MediaFeedData for this particular user and adds it to the share queued.
+ * @param userId
+ */
private void getUserMedia(Long userId) {
MediaFeed feed = null;
int attempts = 0;
@@ -97,7 +123,7 @@ public class InstagramRecentMediaCollector implements Runnable {
LOGGER.error("User id, {}, returned a NULL media feed from instagram.", userId);
} else {
for(MediaFeedData data : userFeed.getData()) {
- synchronized (this.dataQueue) {
+ synchronized (this.dataQueue) { //unnecessary
while(!this.dataQueue.offer(data)) {
Thread.yield();
}
@@ -106,6 +132,10 @@ public class InstagramRecentMediaCollector implements Runnable {
}
}
+ /**
+ *
+ * @return true when the collector has queued all of available media feed data for the provided users.
+ */
public boolean isCompleted() {
return this.isCompleted;
}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/95f6d5d9/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaProvider.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaProvider.java
index 3354e54..e5fa464 100644
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaProvider.java
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/provider/InstagramRecentMediaProvider.java
@@ -17,7 +17,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
- * Created by rebanks on 7/9/14.
+ * Instagram {@link org.apache.streams.core.StreamsProvider} that provides the recent media data for a group of users
*/
public class InstagramRecentMediaProvider implements StreamsProvider {
@@ -44,6 +44,10 @@ public class InstagramRecentMediaProvider implements StreamsProvider {
this.executorService.submit(this.dataCollector);
}
+ /**
+ * EXPOSED FOR TESTING
+ * @return
+ */
protected InstagramRecentMediaCollector getInstagramRecentMediaCollector() {
return new InstagramRecentMediaCollector(this.mediaFeedQueue, this.config);
}