use of org.craftercms.core.service.Item in project engine by craftercms.
the class TargetedContentStoreAdapterDecoratorTest method testFindItem.
@Test
public void testFindItem() throws Exception {
Context context = new DecoratedStoreAdapterContext(mock(Context.class), storeAdapter);
CachingOptions cachingOptions = CachingOptions.DEFAULT_CACHING_OPTIONS;
Item item = storeAdapter.findItem(context, cachingOptions, "/site/website/en", true);
assertNotNull(item);
assertEquals("en", item.getName());
assertEquals("/site/website/en", item.getUrl());
item = storeAdapter.findItem(context, cachingOptions, "/site/website/ja_jp_jp", true);
assertNotNull(item);
assertEquals("en", item.getName());
assertEquals("/site/website/en", item.getUrl());
item = storeAdapter.findItem(context, cachingOptions, "/site/website/ja_jp_jp/index.xml", true);
assertNotNull(item);
assertEquals("index.xml", item.getName());
assertEquals("/site/website/en/index.xml", item.getUrl());
item = storeAdapter.findItem(context, cachingOptions, "/site/website/index.xml", true);
assertNotNull(item);
assertEquals("index.xml", item.getName());
assertEquals("/site/website/index.xml", item.getUrl());
item = storeAdapter.findItem(context, cachingOptions, "/static-assets/css/main.css", true);
assertNotNull(item);
assertEquals("main.css", item.getName());
assertEquals("/static-assets/css/main.css", item.getUrl());
}
use of org.craftercms.core.service.Item in project engine by craftercms.
the class TargetedContentDescriptorMergeStrategyTest method testGetDescriptors.
@Test
public void testGetDescriptors() throws Exception {
Item item = mock(Item.class);
when(item.getDescriptorDom()).thenReturn(mock(Document.class));
ContentStoreAdapter storeAdapter = mock(ContentStoreAdapter.class);
when(storeAdapter.findItem(any(Context.class), any(CachingOptions.class), anyString(), anyBoolean())).thenReturn(item);
Context context = mock(Context.class);
when(context.getStoreAdapter()).thenReturn(storeAdapter);
List<MergeableDescriptor> descriptors = mergeStrategy.getDescriptors(context, CachingOptions.DEFAULT_CACHING_OPTIONS, "/site/website/es_cr/products/index.xml", mock(Document.class), false);
assertNotNull(descriptors);
assertEquals(12, descriptors.size());
assertEquals("/crafter-level-descriptor.level.xml", descriptors.get(0).getUrl());
assertEquals("/site/crafter-level-descriptor.level.xml", descriptors.get(1).getUrl());
assertEquals("/site/website/crafter-level-descriptor.level.xml", descriptors.get(2).getUrl());
assertEquals("/site/website/en/crafter-level-descriptor.level.xml", descriptors.get(3).getUrl());
assertEquals("/site/website/en/products/crafter-level-descriptor.level.xml", descriptors.get(4).getUrl());
assertEquals("/site/website/en/products/index.xml", descriptors.get(5).getUrl());
assertEquals("/site/website/es/crafter-level-descriptor.level.xml", descriptors.get(6).getUrl());
assertEquals("/site/website/es/products/crafter-level-descriptor.level.xml", descriptors.get(7).getUrl());
assertEquals("/site/website/es/products/index.xml", descriptors.get(8).getUrl());
assertEquals("/site/website/es_cr/crafter-level-descriptor.level.xml", descriptors.get(9).getUrl());
assertEquals("/site/website/es_cr/products/crafter-level-descriptor.level.xml", descriptors.get(10).getUrl());
assertEquals("/site/website/es_cr/products/index.xml", descriptors.get(11).getUrl());
}
use of org.craftercms.core.service.Item in project engine by craftercms.
the class ContentStoreAdapterPreloadedFoldersBasedCacheWarmer method preloadFolderChildren.
protected void preloadFolderChildren(Context context, String path, int depth, boolean contentOnly, Set<String> preloadedPaths) {
if (depth == ContentStoreService.UNLIMITED_TREE_DEPTH || depth >= 1) {
if (depth >= 1) {
depth--;
}
List<Item> children = context.getStoreAdapter().findItems(context, null, path);
if (CollectionUtils.isNotEmpty(children)) {
for (Item item : children) {
String childPath = item.getUrl();
if (item.isFolder()) {
logger.debug("Preloading folder [{}]", childPath);
if (!contentOnly) {
context.getStoreAdapter().findItem(context, null, childPath, true);
}
preloadedPaths.add(childPath);
preloadFolderChildren(context, childPath, depth, contentOnly, preloadedPaths);
} else if (contentOnly) {
logger.debug("Preloading content [{}]", childPath);
context.getStoreAdapter().findContent(context, null, childPath);
preloadedPaths.add(childPath);
} else {
logger.debug("Preloading item [{}]", childPath);
context.getStoreAdapter().findItem(context, null, childPath, true);
preloadedPaths.add(childPath);
}
}
}
}
}
use of org.craftercms.core.service.Item in project engine by craftercms.
the class ContentStoreAdapterPreloadedFoldersBasedCacheWarmer method preloadFolder.
protected void preloadFolder(PreloadedFoldersAwareContext contextWrapper, String path, int depth, boolean contentOnly, List<PreloadedFolder> preloadedFolders) {
path = ContentStoreUtils.normalizePath(path);
Context actualContext = contextWrapper.getActualContext();
StopWatch stopWatch = new StopWatch();
logger.info("Starting preload of folder [{}] with depth {}", path, depth);
stopWatch.start();
Item rootFolder = actualContext.getStoreAdapter().findItem(actualContext, null, path, true);
if (rootFolder == null || !rootFolder.isFolder()) {
throw new IllegalStateException("Can't preload folder " + path + ": it doesn't exist or is not a folder");
}
Set<String> preloadedDescendants = new TreeSet<>();
try {
preloadFolderChildren(actualContext, path, depth, contentOnly, preloadedDescendants);
preloadedFolders.add(new PreloadedFolder(path, depth, preloadedDescendants));
} catch (Exception e) {
logger.error("Error while preloading folder [{}]", path, e);
}
stopWatch.stop();
logger.info("Preload of folder [{}] with depth {} completed in {} secs", path, depth, stopWatch.getTime(TimeUnit.SECONDS));
}
use of org.craftercms.core.service.Item in project engine by craftercms.
the class RejectIndexFilesItemFilterTest method testFilter.
@Test
public void testFilter() throws Exception {
List<Item> emptyItemList = Collections.emptyList();
Item item = new Item();
item.setName("index.xml");
boolean accepted = filter.accepts(item, emptyItemList, emptyItemList, true);
assertFalse(accepted);
item.setName("index_en.xml");
accepted = filter.accepts(item, emptyItemList, emptyItemList, true);
assertFalse(accepted);
item.setName("index_en_US.xml");
accepted = filter.accepts(item, emptyItemList, emptyItemList, true);
assertFalse(accepted);
item.setName("about-us");
accepted = filter.accepts(item, emptyItemList, emptyItemList, true);
assertTrue(accepted);
}
Aggregations