From 6841a8e25deff35e5e3702749f6c3f7b71bb4869 Mon Sep 17 00:00:00 2001 From: madness-inc Date: Thu, 13 Jan 2022 09:38:22 +0100 Subject: [PATCH] MGR-132 avoid NPE --- .../application/manager/business/Cache.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/appng/application/manager/business/Cache.java b/src/main/java/org/appng/application/manager/business/Cache.java index 1b8259b..42e696f 100644 --- a/src/main/java/org/appng/application/manager/business/Cache.java +++ b/src/main/java/org/appng/application/manager/business/Cache.java @@ -122,11 +122,17 @@ public DataContainer getData(Site site, Application application, Environment env int endIdx = pageable.getOffset() + pageable.getPageSize(); while (elements.hasNext()) { javax.cache.Cache.Entry entry = elements.next(); - if (idx >= startIdx && idx < endIdx) { - cacheEntries.add(new CacheEntry(entry.getValue())); - } - if (idx++ >= endIdx) { - break; + CachedResponse cachedResponse = entry.getValue(); + // entry may have been removed meanwhile + if (null != cachedResponse) { + if (idx >= startIdx && idx < endIdx) { + cacheEntries.add(new CacheEntry(cachedResponse)); + } + if (idx++ >= endIdx) { + break; + } + } else { + endIdx++; } } @@ -147,12 +153,15 @@ public DataContainer getData(Site site, Application application, Environment env for (javax.cache.Cache.Entry entry : cache) { String entryId = entry.getKey(); CachedResponse cachedResponse = entry.getValue(); - boolean nameMatches = !filterName || FilenameUtils.wildcardMatch( - entryId.substring(entryId.indexOf('/')), entryName, IOCase.INSENSITIVE); - boolean typeMatches = !filterType || FilenameUtils - .wildcardMatch(cachedResponse.getContentType(), entryType, IOCase.INSENSITIVE); - if (nameMatches && typeMatches) { - cacheEntries.add(new CacheEntry(cachedResponse)); + // entry may have been removed meanwhile + if (null != cachedResponse) { + boolean nameMatches = !filterName || FilenameUtils.wildcardMatch( + entryId.substring(entryId.indexOf('/')), entryName, IOCase.INSENSITIVE); + boolean typeMatches = !filterType || FilenameUtils + .wildcardMatch(cachedResponse.getContentType(), entryType, IOCase.INSENSITIVE); + if (nameMatches && typeMatches) { + cacheEntries.add(new CacheEntry(cachedResponse)); + } } }