Author: asiri
Date: 2009-10-23 13:11:30 +0200 (Fri, 23 Oct 2009)
New Revision: 24669
Added:
platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/wikimacro2.test
Removed:
platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/META-INF/components.txt
Modified:
platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
RenderingTests.java
platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
internal/macro/wikibridge/MockWikiMacro.java
platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/wikimacro1.test
Log:
XWIKI-4520: Not possible to generate inline content from wiki macros
when the macro body starts with another macro.
* Added a test case to exploit the issue.
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
xwiki-rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
RenderingTests.java
===================================================================
--- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
RenderingTests.java 2009-10-23 10:23:04 UTC (rev 24668)
+++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
RenderingTests.java 2009-10-23 11:11:30 UTC (rev 24669)
@@ -20,6 +20,9 @@
package org.xwiki.rendering;
+import java.util.ArrayList;
+import java.util.List;
+
import junit.framework.Test;
import junit.framework.TestCase;
@@ -28,6 +31,13 @@
import org.xwiki.bridge.DocumentAccessBridge;
import org.xwiki.component.descriptor.DefaultComponentDescriptor;
import org.xwiki.component.embed.EmbeddableComponentManager;
+import
org.xwiki.rendering.internal.macro.wikibridge.DefaultWikiMacro;
+import org.xwiki.rendering.internal.macro.wikibridge.MockWikiMacro;
+import org.xwiki.rendering.macro.descriptor.DefaultContentDescriptor;
+import org.xwiki.rendering.macro.wikibridge.WikiMacro;
+import org.xwiki.rendering.macro.wikibridge.WikiMacroDescriptor;
+import org.xwiki.rendering.macro.wikibridge.WikiMacroManager;
+import
org.xwiki.rendering.macro.wikibridge.WikiMacroParameterDescriptor;
import org.xwiki.rendering.scaffolding.RenderingTestSuite;
import org.xwiki.test.ComponentManagerTestSetup;
@@ -50,6 +60,7 @@
RenderingTestSuite suite = new RenderingTestSuite("Test Wiki
Macro Bridge");
suite.addTestsFromResource("wikimacro1", true);
+ suite.addTestsFromResource("wikimacro2", true);
ComponentManagerTestSetup testSetup = new
ComponentManagerTestSetup(suite);
setUpMocks(testSetup.getComponentManager());
@@ -67,9 +78,35 @@
new DefaultComponentDescriptor<DocumentAccessBridge>();
descriptorDAB.setRole(DocumentAccessBridge.class);
componentManager.registerComponent(descriptorDAB,
mockDocumentAccessBridge);
+
+ // Register mock wiki macros.
+ WikiMacroManager wikiMacroManager =
componentManager.lookup(WikiMacroManager.class);
+
+ // Mock wiki macro - 1.
+ WikiMacroParameterDescriptor param1 = new
WikiMacroParameterDescriptor("param1", "This is param1", true);
+ WikiMacroParameterDescriptor param2 = new
WikiMacroParameterDescriptor("param2", "This is param2", true);
+ List<WikiMacroParameterDescriptor> params = new
ArrayList<WikiMacroParameterDescriptor>();
+ params.add(param1);
+ params.add(param2);
+ WikiMacroDescriptor descriptor = new
WikiMacroDescriptor("Mock Wiki Macro - 1", "Description",
"Test",
+ new DefaultContentDescriptor(false), params);
+ WikiMacro wikiMacro = new MockWikiMacro(new
DefaultWikiMacro("xwiki:Main.MockWikiMacro1", "mockwikimacro1",
+ true, descriptor, "This is **mockwikimacro1**", "xwiki/
2.0", componentManager), componentManager);
+
wikiMacroManager.registerWikiMacro("xwiki:Main.MockWikiMacro1",
wikiMacro);
+
+ // Mock wiki macro - 2.
+ params = new ArrayList<WikiMacroParameterDescriptor>();
+ descriptor = new WikiMacroDescriptor("Mock Wiki Macro - 2",
"Description", "Test",
+ new DefaultContentDescriptor(false), params);
+ wikiMacro = new MockWikiMacro(new
DefaultWikiMacro("xwiki:Main.MockWikiMacro2", "mockwikimacro2",
+ true, descriptor, "{{mockwikimacro1 param1=\"p1\"
param2=\"p2\"/}}", "xwiki/2.0", componentManager),
+ componentManager);
+
wikiMacroManager.registerWikiMacro("xwiki:Main.MockWikiMacro2",
wikiMacro);
+
context.checking(new Expectations() {{
-
oneOf
(mockDocumentAccessBridge).getDocument("xwiki:Main.TestWikiMacro");
will(returnValue(null));
+
allowing
(mockDocumentAccessBridge).getDocument("xwiki:Main.MockWikiMacro1");
will(returnValue(null));
+
allowing
(mockDocumentAccessBridge).getDocument("xwiki:Main.MockWikiMacro2");
will(returnValue(null));
}});
}
}
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
xwiki-rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
internal/macro/wikibridge/MockWikiMacro.java
===================================================================
--- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
internal/macro/wikibridge/MockWikiMacro.java 2009-10-23 10:23:04 UTC
(rev 24668)
+++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
internal/macro/wikibridge/MockWikiMacro.java 2009-10-23 11:11:30 UTC
(rev 24669)
@@ -20,72 +20,48 @@
package org.xwiki.rendering.internal.macro.wikibridge;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import org.xwiki.component.annotation.Component;
-import org.xwiki.component.annotation.Requirement;
+import org.xwiki.component.manager.ComponentLookupException;
import org.xwiki.component.manager.ComponentManager;
-import org.xwiki.component.phase.Initializable;
-import org.xwiki.component.phase.InitializationException;
import org.xwiki.context.Execution;
import org.xwiki.rendering.block.Block;
import org.xwiki.rendering.macro.Macro;
import org.xwiki.rendering.macro.MacroExecutionException;
-import org.xwiki.rendering.macro.descriptor.DefaultContentDescriptor;
import org.xwiki.rendering.macro.descriptor.MacroDescriptor;
-import org.xwiki.rendering.macro.wikibridge.WikiMacroDescriptor;
-import
org.xwiki.rendering.macro.wikibridge.WikiMacroParameterDescriptor;
+import org.xwiki.rendering.macro.wikibridge.WikiMacro;
import org.xwiki.rendering.macro.wikibridge.WikiMacroParameters;
import org.xwiki.rendering.transformation.MacroTransformationContext;
/**
- * A wrapper macro used for testing a {@link DefaultWikiMacro}
instance.
+ * A wrapper macro used for testing wiki macros.
*
* @version $Id$
* @since 2.0M2
*/
-@Component("testwikimacro")
-public class MockWikiMacro implements Macro<WikiMacroParameters>,
Initializable
+public class MockWikiMacro implements WikiMacro
{
/**
- * The internal {@link DefaultWikiMacro} instance.
+ * The internal wiki macro instance.
*/
- private DefaultWikiMacro wikiMacro;
+ private WikiMacro wikiMacro;
/**
* The {@link ComponentManager} component.
*/
- @Requirement
private ComponentManager componentManager;
-
+
/**
- * The {@link Execution} component.
+ * Creates a new mock wiki macro encapsulating the given wiki
macro instance.
+ *
+ * @param wikiMacro encapsulated wiki macro instance.
+ * @param componentManager component manager.
*/
- @Requirement
- private Execution execution;
-
- /**
- * {@inheritDoc}
- */
- public void initialize() throws InitializationException
+ public MockWikiMacro(WikiMacro wikiMacro, ComponentManager
componentManager)
{
- // Require two parameters, one mandatory and one optional.
- WikiMacroParameterDescriptor param1 = new
WikiMacroParameterDescriptor("param1", "This is param1", true);
- WikiMacroParameterDescriptor param2 = new
WikiMacroParameterDescriptor("param2", "This is param2", true);
- List<WikiMacroParameterDescriptor> params = new
ArrayList<WikiMacroParameterDescriptor>();
- params.add(param1);
- params.add(param2);
-
- // Initialize the internal WikiMacro instance.
- WikiMacroDescriptor descriptor = new
WikiMacroDescriptor("Test Wiki Macro", "Description",
"Test",
- new DefaultContentDescriptor(false), params);
- this.wikiMacro = new
DefaultWikiMacro("xwiki:Main.TestWikiMacro", "testwikimacro", true,
descriptor,
- "This is **testwikimacro**", "xwiki/2.0",
componentManager);
-
- // Set a dummy XWikiContext.
- execution.getContext().setProperty("xwikicontext", new
HashMap<String, Object>());
+ this.wikiMacro = wikiMacro;
+ this.componentManager = componentManager;
}
/**
@@ -94,10 +70,26 @@
public List<Block> execute(WikiMacroParameters parameters,
String content, MacroTransformationContext context)
throws MacroExecutionException
{
+ // Use a dummy XWikiContext.
+ try {
+ Execution execution =
componentManager.lookup(Execution.class);
+ execution.getContext().setProperty("xwikicontext", new
HashMap<String, Object>());
+ } catch (ComponentLookupException ex) {
+ throw new MacroExecutionException(ex.getMessage(), ex);
+ }
+
return this.wikiMacro.execute(parameters, content, context);
}
/**
+ * {@inheritDoc}
+ */
+ public String getId()
+ {
+ return this.wikiMacro.getId();
+ }
+
+ /**
* {@inheritDoc}
*/
public MacroDescriptor getDescriptor()
Deleted: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
xwiki-rendering-macro-wikibridge/src/test/resources/META-INF/
components.txt
===================================================================
--- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/META-INF/
components.txt 2009-10-23 10:23:04 UTC (rev 24668)
+++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/META-INF/
components.txt 2009-10-23 11:11:30 UTC (rev 24669)
@@ -1 +0,0 @@
-org.xwiki.rendering.internal.macro.wikibridge.MockWikiMacro
\ No newline at end of file
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
xwiki-rendering-macro-wikibridge/src/test/resources/wikimacro1.test
===================================================================
--- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/wikimacro1.test
2009-10-23 10:23:04 UTC (rev 24668)
+++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/wikimacro1.test
2009-10-23 11:11:30 UTC (rev 24669)
@@ -1,20 +1,20 @@
.#-----------------------------------------------------
.input|xwiki/2.0
.#-----------------------------------------------------
-{{testwikimacro param1="val1" param2="val2"/}}
+{{mockwikimacro1 param1="val1" param2="val2"/}}
.#-----------------------------------------------------
.expect|event/1.0
.#-----------------------------------------------------
beginDocument
-beginMacroMarkerStandalone [testwikimacro] [param1=val1|param2=val2]
+beginMacroMarkerStandalone [mockwikimacro1] [param1=val1|param2=val2]
beginParagraph
onWord [This]
onSpace
onWord [is]
onSpace
beginFormat [BOLD]
-onWord [testwikimacro]
+onWord [mockwikimacro1]
endFormat [BOLD]
endParagraph
-endMacroMarkerStandalone [testwikimacro] [param1=val1|param2=val2]
+endMacroMarkerStandalone [mockwikimacro1] [param1=val1|param2=val2]
endDocument
\ No newline at end of file
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
xwiki-rendering-macro-wikibridge/src/test/resources/wikimacro2.test
===================================================================
--- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/
wikimacro2.test (rev 0)
+++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
rendering-macro-wikibridge/src/test/resources/wikimacro2.test
2009-10-23 11:11:30 UTC (rev 24669)
@@ -0,0 +1,8 @@
+.#-----------------------------------------------------
+.input|xwiki/2.0
+.#-----------------------------------------------------
+Hello! {{mockwikimacro2/}}
+.#-----------------------------------------------------
+.expect|xhtml/1.0
+.#-----------------------------------------------------
+<p>Hello! This is <strong>mockwikimacro1</strong></p>
\ No newline at end of file
_______________________________________________
notifications mailing list
notifications(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/notifications
_______________________________________________
devs mailing list
devs(a)xwiki.org