}
final Pair<ObjectId, VersionCorrection> key = Pair.of(objectId, versionCorrection);
final Element e = _portfolioCache.get(key);
if (e != null) {
s_logger.debug("getPortfolioByObjectId: EHCache hit on {}/{}", objectId, versionCorrection);
Portfolio portfolio = (Portfolio) e.getObjectValue();
f = _frontCacheByUID.putIfAbsent(versionCorrection, portfolio.getUniqueId(), portfolio);
if (f instanceof Portfolio) {
s_logger.debug("getPortfolioByObjectId: Late front cache hit on {}/{}", objectId, versionCorrection);
portfolio = (Portfolio) f;
_frontCacheByOID.put(versionCorrection, objectId, portfolio);
return portfolio;
} else {
portfolio = addToFrontCache(portfolio, versionCorrection);
_frontCacheByOID.put(versionCorrection, objectId, portfolio);
return portfolio;
}
} else {
s_logger.debug("getPortfolioByObjectId: Cache miss on {}/{}", objectId, versionCorrection);
Portfolio portfolio = getUnderlying().getPortfolio(objectId, versionCorrection);
f = _frontCacheByUID.putIfAbsent(versionCorrection, portfolio.getUniqueId(), portfolio);
if (f instanceof Portfolio) {
s_logger.debug("getPortfolioByObjectId: Late front cache hit on {}/{}", objectId, versionCorrection);
portfolio = (Portfolio) f;
_frontCacheByOID.put(versionCorrection, objectId, portfolio);
return portfolio;
} else {
portfolio = addToFrontCache(portfolio, versionCorrection);
_frontCacheByOID.put(versionCorrection, objectId, portfolio);
_portfolioCache.put(new Element(key, portfolio));
_portfolioCache.put(new Element(Pair.of(portfolio.getUniqueId(), versionCorrection), portfolio));
return portfolio;
}
}
}