package foundation.icall;
|
|
import foundation.dao.preload.Bucket;
|
import foundation.data.mapping.Mappings;
|
import foundation.data.meta.MetaMonitor;
|
import foundation.data.meta.ReloadCheckResult;
|
|
public class MappingsBucket extends Bucket<Mappings> {
|
|
private static MappingsBucket instance;
|
private MetaMonitor monitor;
|
|
private MappingsBucket() {
|
monitor = new MetaMonitor("getICallMappingsLastUpdateTime");
|
}
|
|
public static synchronized MappingsBucket getInstance() {
|
if (instance != null) {
|
return instance;
|
}
|
|
instance = new MappingsBucket();
|
return instance;
|
}
|
|
@Override
|
public Mappings get(String mappingId) {
|
try {
|
monitor.setParam("parentId", mappingId);
|
ReloadCheckResult checkResult = monitor.getReloadCheckResult();
|
|
if (checkResult.isNeedReload()) {
|
synchronized (this) {
|
Mappings mappings = super.get(mappingId);
|
|
mappings = ICallLoader.loadOneMappings(mappingId, mappings);
|
loadOne(mappingId, mappings);
|
|
return mappings;
|
}
|
}
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return super.get(mappingId);
|
}
|
|
}
|