package com.huawei.dew.csms.cache;
import com.google.gson.Gson;
import com.huawei.dew.csms.model.SecretInfo;
import com.huawei.dew.csms.model.SecretInfoCacheObject;
import java.util.Map;
public class DefaultRefreshStrategy implements RefreshStrategy {
private Gson GSON = new Gson();
* 凭据上次轮转时间
*/
private final static String ROTATION_PERIOD = "rotation_period";
@Override
public long getNextRotateTime(long period, long lastRotationTime) {
long currentTimeMillis = System.currentTimeMillis();
if (lastRotationTime + period > currentTimeMillis) {
return lastRotationTime + period;
}
return currentTimeMillis + period;
}
@Override
public long parseNextRotateTime(SecretInfoCacheObject secretInfoCacheObject) {
SecretInfo secretInfo = secretInfoCacheObject.getSecretInfo();
long period = parsePeriod(secretInfo);
if (period <= 0) {
return period;
}
return getNextRotateTime(period, secretInfoCacheObject.getRefreshTimeStamp());
}
@Override
public long parsePeriod(SecretInfo secretInfo) {
try {
Map<String, Object> map = GSON.fromJson(secretInfo.getValue(), Map.class);
return ((Double) map.get(ROTATION_PERIOD)).longValue();
} catch (Exception e) {
return -1;
}
}
}