package com.mediafire.sdk.config; import com.mediafire.sdk.token.ActionToken; public class DefaultActionStore implements MFStore<ActionToken> { private ActionToken token; private final Object lock = new Object(); private final long threshold; public DefaultActionStore(int thresholdMinutes) { this.threshold = 1000 * 60 * thresholdMinutes; } @Override public boolean available() { synchronized (lock) { if (token == null) { return false; } else if (token.isExpired()) { token = null; return false; } else if (token.isExpiringWithinMillis(threshold)) { token = null; return false; } else if (token.getToken() == null || token.getToken().isEmpty()) { token = null; return false; } else { return true; } } } @Override public ActionToken get() { synchronized (lock) { return token; } } @Override public void put(ActionToken actionToken) { synchronized (lock) { this.token = actionToken; } } @Override public void clear() { synchronized (lock) { this.token = null; } } @Override public int getAvailableCount() { return available() ? 1 : 0; } }