Skip to content

Commit e088e57

Browse files
Merge pull request #61 from exadel-inc/feature/ELI-60
[ELI_60] Cache refactoring
2 parents 1fb849d + a242df6 commit e088e57

File tree

12 files changed

+32
-691
lines changed

12 files changed

+32
-691
lines changed

core/src/main/java/com/exadel/etoolbox/linkinspector/core/models/ui/PaginationModel.java

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.exadel.etoolbox.linkinspector.core.models.ui;
22

3-
import com.exadel.etoolbox.linkinspector.core.services.cache.GridResourcesCache;
4-
import com.exadel.etoolbox.linkinspector.core.services.data.models.GridResource;
3+
import com.exadel.etoolbox.linkinspector.core.services.data.DataFeedService;
4+
import com.exadel.etoolbox.linkinspector.core.services.data.models.DataFilter;
55
import org.apache.commons.lang.StringUtils;
66
import org.apache.commons.lang.math.NumberUtils;
77
import org.apache.sling.api.SlingHttpServletRequest;
88
import org.apache.sling.api.request.RequestParameter;
9+
import org.apache.sling.api.resource.Resource;
910
import org.apache.sling.api.resource.ResourceResolver;
1011
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
1112
import org.apache.sling.models.annotations.Model;
@@ -15,7 +16,6 @@
1516

1617
import javax.annotation.PostConstruct;
1718
import java.util.*;
18-
import java.util.stream.Collectors;
1919

2020
/**
2121
* Represents the model with pagination logic.
@@ -33,7 +33,7 @@ public class PaginationModel {
3333
private static final int DEFAULT_PAGE_SIZE = 500;
3434

3535
@OSGiService
36-
private GridResourcesCache cache;
36+
private DataFeedService dataFeedService;
3737

3838
@SlingObject
3939
private ResourceResolver resourceResolver;
@@ -57,12 +57,8 @@ private void init() {
5757
String type = requestParameterToString(request.getRequestParameter(REQUEST_PARAMETER_TYPE));
5858
String substring = requestParameterToString(request.getRequestParameter(REQUEST_PARAMETER_SUBSTRING));
5959

60-
List<GridResource> resources = cache
61-
.getGridResourcesList()
62-
.stream()
63-
.filter(gridResource -> StringUtils.isBlank(type) || StringUtils.equals(gridResource.getLink().getType(), type))
64-
.filter(gridResource -> StringUtils.isBlank(substring) || gridResource.getLink().getHref().contains(substring))
65-
.collect(Collectors.toList());
60+
List<Resource> resources = dataFeedService
61+
.dataFeedToResources(new DataFilter(type, substring));
6662

6763
size = resources.size() / DEFAULT_PAGE_SIZE + (resources.size() % DEFAULT_PAGE_SIZE == 0 ? 0 : 1);
6864
}

core/src/main/java/com/exadel/etoolbox/linkinspector/core/services/cache/GridResourcesCache.java

-15
This file was deleted.

core/src/main/java/com/exadel/etoolbox/linkinspector/core/services/cache/impl/GridResourcesCacheImpl.java

-50
This file was deleted.

core/src/main/java/com/exadel/etoolbox/linkinspector/core/services/data/DataFeedService.java

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.util.List;
2323
import java.util.Map;
24+
import java.util.concurrent.CopyOnWriteArrayList;
2425

2526
/**
2627
* Provides the service responsible for managing the data feed based on the set of resources generated

core/src/main/java/com/exadel/etoolbox/linkinspector/core/services/data/impl/DataFeedServiceImpl.java

+25-11
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import com.adobe.granite.ui.components.ds.ValueMapResource;
1818
import com.exadel.etoolbox.linkinspector.core.models.ui.GridViewItem;
19-
import com.exadel.etoolbox.linkinspector.core.services.cache.GridResourcesCache;
2019
import com.exadel.etoolbox.linkinspector.core.services.data.DataFeedService;
2120
import com.exadel.etoolbox.linkinspector.core.services.data.GridResourcesGenerator;
2221
import com.exadel.etoolbox.linkinspector.core.services.data.models.DataFilter;
@@ -48,6 +47,7 @@
4847
import java.io.IOException;
4948
import java.nio.charset.StandardCharsets;
5049
import java.util.*;
50+
import java.util.concurrent.CopyOnWriteArrayList;
5151
import java.util.concurrent.TimeUnit;
5252
import java.util.stream.Collectors;
5353
import java.util.stream.Stream;
@@ -60,6 +60,8 @@
6060
public class DataFeedServiceImpl implements DataFeedService {
6161
private static final Logger LOG = LoggerFactory.getLogger(DataFeedServiceImpl.class);
6262

63+
private final CopyOnWriteArrayList<GridResource> GRID_RESOURCE = new CopyOnWriteArrayList<>();
64+
6365
@Reference
6466
private RepositoryHelper repositoryHelper;
6567

@@ -69,9 +71,6 @@ public class DataFeedServiceImpl implements DataFeedService {
6971
@Reference
7072
private LinkHelper linkHelper;
7173

72-
@Reference
73-
private GridResourcesCache gridResourcesCache;
74-
7574
/**
7675
* The sling resource type of grid row items
7776
*/
@@ -115,7 +114,7 @@ public void generateDataFeed() {
115114
}
116115
Optional.ofNullable(gridResourcesGenerator.generateGridResources(GRID_RESOURCE_TYPE, resourceResolver))
117116
.ifPresent(gridResources -> {
118-
gridResourcesCache.setGridResourcesList(gridResources);
117+
setGridResourcesList(gridResources);
119118
gridResourcesToDataFeed(gridResources, resourceResolver);
120119
generateCsvReport(gridResources, resourceResolver);
121120
});
@@ -134,11 +133,11 @@ public List<Resource> dataFeedToResources(DataFilter filter) {
134133
LOG.warn("ResourceResolver is null, data feed to resources conversion is stopped");
135134
return Collections.emptyList();
136135
}
137-
if (CollectionUtils.isEmpty(gridResourcesCache.getGridResourcesList())) {
138-
gridResourcesCache.setGridResourcesList(dataFeedToGridResources(serviceResourceResolver));
136+
if (CollectionUtils.isEmpty(getGridResourcesList())) {
137+
setGridResourcesList(dataFeedToGridResources(serviceResourceResolver));
139138
}
140139
List<Resource> resources = toSlingResourcesStream(
141-
doFiltering(gridResourcesCache.getGridResourcesList(), filter),
140+
doFiltering(getGridResourcesList(), filter),
142141
repositoryHelper.getThreadResourceResolver())
143142
.collect(Collectors.toList());
144143
LOG.info("EToolbox Link Inspector - the number of items shown is {}", resources.size());
@@ -162,7 +161,7 @@ public List<GridResource> dataFeedToGridResources() {
162161

163162
@Override
164163
public void modifyDataFeed(Map<String, String> valuesMap) {
165-
List<GridResource> gridResources = gridResourcesCache.getGridResourcesList();
164+
List<GridResource> gridResources = getGridResourcesList();
166165
try (ResourceResolver serviceResourceResolver = repositoryHelper.getServiceResourceResolver()) {
167166
for (GridResource gridResource : gridResources) {
168167
String propertyAddress = gridResource.getResourcePath() +"@" + gridResource.getPropertyName();
@@ -178,7 +177,7 @@ public void modifyDataFeed(Map<String, String> valuesMap) {
178177
gridResource.setLink(link);
179178
});
180179
}
181-
gridResourcesCache.setGridResourcesList(gridResources);
180+
setGridResourcesList(gridResources);
182181
gridResourcesToDataFeed(gridResources, serviceResourceResolver);
183182
}
184183
}
@@ -189,14 +188,29 @@ public void deleteDataFeed() throws DataFeedException {
189188
removePreviousDataFeed(serviceResourceResolver);
190189
removeCsvReport(serviceResourceResolver);
191190
removePendingNode(serviceResourceResolver);
192-
gridResourcesCache.clearCache();
191+
clearStaticDataFeed();
193192
serviceResourceResolver.commit();
194193
} catch (PersistenceException e) {
195194
LOG.error("Failed to delete data feed", e);
196195
throw new DataFeedException("Exception Deleting Data Feed");
197196
}
198197
}
199198

199+
private List<GridResource> getGridResourcesList() {
200+
return GRID_RESOURCE;
201+
}
202+
203+
private void setGridResourcesList(List<GridResource> gridResources) {
204+
synchronized (this) {
205+
GRID_RESOURCE.clear();
206+
GRID_RESOURCE.addAll(gridResources);
207+
}
208+
}
209+
210+
private void clearStaticDataFeed() {
211+
GRID_RESOURCE.clear();
212+
}
213+
200214
private List<GridResource> dataFeedToGridResources(ResourceResolver resourceResolver) {
201215
List<GridResource> gridResources = new ArrayList<>();
202216
JSONArray jsonArray = JsonUtil.getJsonArrayFromFile(JSON_FEED_PATH, resourceResolver);

core/src/main/java/com/exadel/etoolbox/linkinspector/core/servlets/FixBrokenLinkServlet.java

-139
This file was deleted.

0 commit comments

Comments
 (0)