@Override public ClientTemplateModel getClientTemplateById(String id, RealmModel realm) { if (!cache.isEnabled()) return getDelegate().getClientTemplateById(id, realm); CachedClientTemplate cached = cache.getClientTemplate(id); if (cached != null && !cached.getRealm().equals(realm.getId())) { cached = null; } if (cached == null) { ClientTemplateModel model = getDelegate().getClientTemplateById(id, realm); if (model == null) return null; if (clientTemplateInvalidations.contains(id)) return model; cached = new CachedClientTemplate(cache, getDelegate(), realm, model); cache.addCachedClientTemplate(cached); } else if (clientTemplateInvalidations.contains(id)) { return getDelegate().getClientTemplateById(id, realm); } else if (managedClientTemplates.containsKey(id)) { return managedClientTemplates.get(id); } ClientTemplateModel adapter = new ClientTemplateAdapter(realm, cached, this, cache); managedClientTemplates.put(id, adapter); return adapter; }