use of org.xwiki.rendering.block.MacroBlock in project xwiki-platform by xwiki.
the class DefaultLinkedResourceHelper method getResourceType.
@Override
public ResourceType getResourceType(Block block) {
// Determine the reference string and reference type for each block type.
ResourceType resourceType = null;
if (block instanceof LinkBlock) {
LinkBlock linkBlock = (LinkBlock) block;
ResourceReference linkReference = linkBlock.getReference();
resourceType = linkReference.getType();
} else if (block instanceof MacroBlock) {
// We still have to look at the reference string to see if it is a valid include (i.e. non-recursive).
String referenceString = block.getParameter(REFERENCE_MACRO_PARAMETER);
if (StringUtils.isBlank(referenceString)) {
referenceString = block.getParameter(DOCUMENT_MACRO_PARAMETER);
}
if (StringUtils.isBlank(referenceString)) {
// Skip it.
return null;
}
// FIXME: this may be SPACE once we start hiding "WebHome" from macro reference parameters.
resourceType = ResourceType.DOCUMENT;
}
return resourceType;
}
use of org.xwiki.rendering.block.MacroBlock in project xwiki-platform by xwiki.
the class DefaultLinkedResourceHelper method getResourceReferenceString.
@Override
public String getResourceReferenceString(Block block) {
// Determine the reference string and reference type for each block type.
String referenceString = null;
if (block instanceof LinkBlock) {
LinkBlock linkBlock = (LinkBlock) block;
ResourceReference linkReference = linkBlock.getReference();
referenceString = linkReference.getReference();
} else if (block instanceof MacroBlock) {
referenceString = block.getParameter(REFERENCE_MACRO_PARAMETER);
if (StringUtils.isBlank(referenceString)) {
referenceString = block.getParameter(DOCUMENT_MACRO_PARAMETER);
}
if (StringUtils.isBlank(referenceString)) {
// If the reference is not set or is empty, we have a recursive include which is not valid anyway.
// Skip it.
referenceString = null;
}
}
return referenceString;
}
use of org.xwiki.rendering.block.MacroBlock in project xwiki-platform by xwiki.
the class IncludeMacroTest method createMacroTransformationContext.
private MacroTransformationContext createMacroTransformationContext(String documentName, boolean isInline) {
MacroTransformationContext context = new MacroTransformationContext();
MacroBlock includeMacro = new MacroBlock("include", Collections.singletonMap("reference", documentName), isInline);
context.setCurrentMacroBlock(includeMacro);
return context;
}
use of org.xwiki.rendering.block.MacroBlock in project xwiki-platform by xwiki.
the class ContextMacroTest method executeOk.
@Test
public void executeOk() throws Exception {
MacroBlock macroBlock = new MacroBlock("context", Collections.<String, String>emptyMap(), false);
MacroTransformationContext macroContext = new MacroTransformationContext();
macroContext.setSyntax(Syntax.XWIKI_2_0);
macroContext.setCurrentMacroBlock(macroBlock);
DocumentReferenceResolver<String> resolver = this.mocker.getInstance(DocumentReferenceResolver.TYPE_STRING, "macro");
DocumentReference referencedDocumentReference = new DocumentReference("wiki", "space", "page");
when(resolver.resolve("wiki:space.page", macroBlock)).thenReturn(referencedDocumentReference);
DocumentAccessBridge dab = this.mocker.getInstance(DocumentAccessBridge.class);
DocumentModelBridge dmb = mock(DocumentModelBridge.class);
when(dab.getTranslatedDocumentInstance(referencedDocumentReference)).thenReturn(dmb);
MacroContentParser parser = this.mocker.getInstance(MacroContentParser.class);
XDOM xdom = new XDOM(Arrays.asList((Block) new ParagraphBlock(Arrays.asList((Block) new LinkBlock(Collections.emptyList(), new ResourceReference("", ResourceType.DOCUMENT), false)))));
when(parser.parse(eq(""), same(macroContext), eq(false), any(MetaData.class), eq(false))).thenReturn(xdom);
ContextMacroParameters parameters = new ContextMacroParameters();
parameters.setDocument("wiki:space.page");
// Note: we're not testing the returned value here since this is done in integation tests.
this.mocker.getComponentUnderTest().execute(parameters, "", macroContext);
}
use of org.xwiki.rendering.block.MacroBlock in project xwiki-platform by xwiki.
the class ContextMacroTest method executeWithReferencedDocumentHavingProgrammingRightsAndCallingDocumentToo.
@Test
public void executeWithReferencedDocumentHavingProgrammingRightsAndCallingDocumentToo() throws Exception {
MacroBlock macroBlock = new MacroBlock("context", Collections.<String, String>emptyMap(), false);
MacroTransformationContext macroContext = new MacroTransformationContext();
macroContext.setSyntax(Syntax.XWIKI_2_0);
macroContext.setCurrentMacroBlock(macroBlock);
DocumentReferenceResolver<String> resolver = this.mocker.getInstance(DocumentReferenceResolver.TYPE_STRING, "macro");
DocumentReference referencedDocumentReference = new DocumentReference("wiki", "space", "page");
when(resolver.resolve("wiki:space.page", macroBlock)).thenReturn(referencedDocumentReference);
DocumentAccessBridge dab = this.mocker.getInstance(DocumentAccessBridge.class);
when(dab.hasProgrammingRights()).thenReturn(true).thenReturn(true);
DocumentModelBridge dmb = mock(DocumentModelBridge.class);
when(dab.getTranslatedDocumentInstance(referencedDocumentReference)).thenReturn(dmb);
MacroContentParser parser = this.mocker.getInstance(MacroContentParser.class);
when(parser.parse(eq(""), same(macroContext), eq(false), any(MetaData.class), eq(false))).thenReturn(new XDOM(Collections.emptyList()));
ContextMacroParameters parameters = new ContextMacroParameters();
parameters.setDocument("wiki:space.page");
this.mocker.getComponentUnderTest().execute(parameters, "", macroContext);
}
Aggregations