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 { 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); } }