use of com.enonic.xp.site.Site in project xp by enonic.
the class ContentResolverTest method resolve_found_by_path_edit_mode.
@Test
void resolve_found_by_path_edit_mode() {
final Content content = newContent();
final Site site = newSite();
final PortalRequest request = new PortalRequest();
request.setMode(RenderMode.EDIT);
request.setContentPath(ContentPath.from("/c8da0c10-0002-4b68-b407-87412f3e45c8"));
when(this.contentService.getById(ContentId.from("c8da0c10-0002-4b68-b407-87412f3e45c8"))).thenThrow(new ContentNotFoundException(ContentId.from("c8da0c10-0002-4b68-b407-87412f3e45c8"), null));
when(this.contentService.getByPath(ContentPath.from("/c8da0c10-0002-4b68-b407-87412f3e45c8"))).thenReturn(content);
when(this.contentService.getNearestSite(ContentId.from("c8da0c10-0002-4b68-b407-87412f3e45c8"))).thenReturn(site);
final ContentResolverResult result = new ContentResolver(contentService).resolve(request);
assertSame(content, result.getContent());
assertSame(site, result.getNearestSite());
assertEquals("/landing-page", result.getSiteRelativePath());
}
use of com.enonic.xp.site.Site in project xp by enonic.
the class ComponentHandlerWorker method execute.
@Override
public PortalResponse execute() throws Exception {
final ContentResolverResult resolvedContent = contentResolver.resolve(this.request);
final Content content = resolvedContent.getContentOrElseThrow();
final Site site = resolvedContent.getNearestSiteOrElseThrow();
Page page = content.getPage();
final PageResolverResult resolvedPage = pageResolver.resolve(request.getMode(), content, site);
Component component = null;
if (content.getType().isFragment()) {
// fragment content, try resolving component path in Layout fragment
final Component fragmentComponent = page.getFragment();
if (this.componentPath.isEmpty()) {
component = fragmentComponent;
} else if (fragmentComponent instanceof LayoutComponent) {
component = ((LayoutComponent) fragmentComponent).getComponent(this.componentPath);
}
}
final Page effectivePage;
if (component == null) {
effectivePage = inlineFragments(resolvedPage.getEffectivePage(), this.componentPath);
component = effectivePage.getRegions().getComponent(this.componentPath);
} else {
effectivePage = resolvedPage.getEffectivePage();
}
if (component == null) {
throw WebException.notFound(String.format("Page component for [%s] not found", this.componentPath));
}
final Content effectiveContent = Content.create(content).page(effectivePage).build();
final DescriptorKey controller = resolvedPage.getController();
this.request.setSite(site);
this.request.setContent(effectiveContent);
this.request.setComponent(component);
this.request.setApplicationKey(controller != null ? controller.getApplicationKey() : null);
final Trace trace = Tracer.current();
if (trace != null) {
trace.put("componentPath", component.getPath());
trace.put("type", component.getType().toString());
}
final PortalResponse response = rendererDelegate.render(component, this.request);
return this.postProcessor.processResponseInstructions(this.request, response);
}
use of com.enonic.xp.site.Site in project xp by enonic.
the class LocalizeFunctionTest method setupTest.
@BeforeEach
public final void setupTest() {
Site site = Site.create().description("This is my site").name("my-content").parentPath(ContentPath.ROOT).language(Locale.ENGLISH).build();
this.portalRequest.setSite(site);
PortalRequestAccessor.set(this.portalRequest);
}
use of com.enonic.xp.site.Site in project xp by enonic.
the class ContentRelativePathResolverTest method site_wildcard.
@Test
public void site_wildcard() throws Exception {
final Site parentSite = Site.create().parentPath(ContentPath.from("/mySitePath")).name("test").build();
final String resolvedWildcardOption1 = ContentRelativePathResolver.resolveWithSite(ContentRelativePathResolver.SITE_WILDCARD, parentSite);
final String resolvedWildcardOption2 = ContentRelativePathResolver.resolveWithSite(ContentRelativePathResolver.SITE_WILDCARD + "/somepath/", parentSite);
assertEquals("/mySitePath/test*", resolvedWildcardOption1);
assertEquals("/mySitePath/test/somepath/*", resolvedWildcardOption2);
}
use of com.enonic.xp.site.Site in project xp by enonic.
the class PageHandlerWorker method execute.
@Override
public PortalResponse execute() throws Exception {
final ContentResolverResult resolvedContent = contentResolver.resolve(this.request);
final Content content = resolvedContent.getContentOrElseThrow();
if (content.getType().isShortcut()) {
return renderShortcut(content);
}
final Site site = resolvedContent.getNearestSiteOrElseThrow();
final PageResolverResult resolvedPage = pageResolver.resolve(request.getMode(), content, site);
final Content effectiveContent = Content.create(content).page(resolvedPage.getEffectivePage()).build();
final DescriptorKey pageDescriptorKey = resolvedPage.getController();
this.request.setSite(site);
this.request.setContent(effectiveContent);
this.request.setApplicationKey(pageDescriptorKey != null ? pageDescriptorKey.getApplicationKey() : null);
this.request.setPageDescriptor(pageDescriptorKey != null ? this.pageDescriptorService.getByKey(pageDescriptorKey) : null);
final Trace trace = Tracer.current();
if (trace != null) {
trace.put("contentPath", effectiveContent.getPath().toString());
trace.put("type", "page");
}
return rendererDelegate.render(effectiveContent, this.request);
}
Aggregations