Search in sources :

Example 21 with Item

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());
}
Also used : DecoratedStoreAdapterContext(org.craftercms.engine.util.store.decorators.DecoratedStoreAdapterContext) Context(org.craftercms.core.service.Context) Item(org.craftercms.core.service.Item) CachingOptions(org.craftercms.core.service.CachingOptions) DecoratedStoreAdapterContext(org.craftercms.engine.util.store.decorators.DecoratedStoreAdapterContext) Test(org.junit.Test)

Example 22 with Item

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());
}
Also used : SiteContext(org.craftercms.engine.service.context.SiteContext) Context(org.craftercms.core.service.Context) Item(org.craftercms.core.service.Item) CachingOptions(org.craftercms.core.service.CachingOptions) ContentStoreAdapter(org.craftercms.core.store.ContentStoreAdapter) MergeableDescriptor(org.craftercms.core.xml.mergers.MergeableDescriptor) Document(org.dom4j.Document) Test(org.junit.Test)

Example 23 with Item

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);
                }
            }
        }
    }
}
Also used : Item(org.craftercms.core.service.Item)

Example 24 with Item

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));
}
Also used : DecoratedStoreAdapterContext(org.craftercms.engine.util.store.decorators.DecoratedStoreAdapterContext) Context(org.craftercms.core.service.Context) Item(org.craftercms.core.service.Item) StopWatch(org.apache.commons.lang3.time.StopWatch)

Example 25 with Item

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);
}
Also used : Item(org.craftercms.core.service.Item) Test(org.junit.Test)

Aggregations

Item (org.craftercms.core.service.Item)55 Test (org.junit.Test)21 Context (org.craftercms.core.service.Context)19 CachingOptions (org.craftercms.core.service.CachingOptions)8 Document (org.dom4j.Document)8 ArrayList (java.util.ArrayList)7 ContentStoreAdapter (org.craftercms.core.store.ContentStoreAdapter)7 CachingAwareList (org.craftercms.core.util.cache.impl.CachingAwareList)5 InheritLevelsMergeStrategyTest (org.craftercms.core.xml.mergers.impl.strategies.InheritLevelsMergeStrategyTest)4 DecoratedStoreAdapterContext (org.craftercms.engine.util.store.decorators.DecoratedStoreAdapterContext)4 PathNotFoundException (org.craftercms.core.exception.PathNotFoundException)3 TextMetaDataExtractingProcessor (org.craftercms.core.processors.impl.TextMetaDataExtractingProcessor)3 Content (org.craftercms.core.service.Content)3 ContentStoreService (org.craftercms.core.service.ContentStoreService)3 Tree (org.craftercms.core.service.Tree)3 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)3 StoreException (org.craftercms.core.exception.StoreException)2 ItemProcessor (org.craftercms.core.processors.ItemProcessor)2 ItemProcessorPipeline (org.craftercms.core.processors.impl.ItemProcessorPipeline)2 TextMetaDataCollectionExtractingProcessor (org.craftercms.core.processors.impl.TextMetaDataCollectionExtractingProcessor)2