Re: [xwiki-devs] [xwiki-notifications] r15982 - in platform/core/trunk/xwiki-rendering: xwiki-rendering-api/src/main/java/org/xwiki/rendering/block xwiki-rendering-macros/xwiki-rendering-macro-toc xwiki-rendering-macros/xwiki-rendering-macro-toc/src/main/java/org/xwiki/rendering/internal/macro/toc xwiki-rendering-macros/xwiki-rendering-macro-toc/src/test/java/org/xwiki/rendering
I think you commented out too many tests in this commit... :) -Vincent On Jan 31, 2009, at 7:22 PM, tmortagne (SVN) wrote:
Author: tmortagne Date: 2009-01-31 19:22:16 +0100 (Sat, 31 Jan 2009) New Revision: 15982
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/AbstractBlock.java platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/Block.java platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/pom.xml platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/main/java/org/xwiki/rendering/internal/macro/ toc/TocMacro.java platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/test/java/org/xwiki/rendering/ RenderingTests.java Log: XWIKI-3174: Rename current SectionBlock to HeaderBlock and make SectionBlock represent the whole section content * improve toc macro execution based on new section block
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-api/ src/main/java/org/xwiki/rendering/block/AbstractBlock.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/AbstractBlock.java 2009-01-31 18:02:32 UTC (rev 15981) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/AbstractBlock.java 2009-01-31 18:22:16 UTC (rev 15982) @@ -20,18 +20,18 @@ package org.xwiki.rendering.block;
import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Collections;
import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder;
/** - * Implementation for Block operations. All blocks should extend this class. Supports the notion of parameters - * which can be added to a block (see {@link #setParameter(String, Object)} for more details). + * Implementation for Block operations. All blocks should extend this class. Supports the notion of parameters which can + * be added to a block (see {@link #setParameter(String, Object)} for more details). * * @version $Id$ * @since 1.5M2 @@ -70,7 +70,7 @@ { this.parameters.putAll(parameters); } - + /** * {@inheritDoc} * @@ -194,15 +194,15 @@ }
/** - * Set a parameter on the current block. A parameter is any semantic data associated with a block. - * It can be used for various purposes and provide additional information to the renderers/listeners. - * For example you can pass style information such as <code>style="color:red"</code> (in that example - * the name would be <code>style</code> and the value <code>"color:red"</code>) to indicate that the - * current block should be displayed in red. + * Set a parameter on the current block. A parameter is any semantic data associated with a block. It can be used + * for various purposes and provide additional information to the renderers/listeners. For example you can pass + * style information such as <code>style="color:red"</code> (in that example the name would be <code>style</code> + * and the value <code>"color:red"</code>) to indicate that the current block should be displayed in red. + * <p> + * Note that there are currently no well-defined known parameter names and you'll need to check what the different + * renderers/listeners support to know what to use. + * </p> * - * <p>Note that there are currently no well-defined known parameter names and you'll need to check what - * the different renderers/listeners support to know what to use.</p> - * * @param name the parameter's name * @param value the parameter's value */ @@ -285,7 +285,7 @@
for (int i = index - 1; i >= 0; --i) { Block previousBlock = blocks.get(i); - if (previousBlock instanceof HeaderBlock) { + if (blockClass.isAssignableFrom(previousBlock.getClass())) { return (T) previousBlock; } } @@ -317,6 +317,7 @@
/** * {@inheritDoc} + * * @see Object#clone() */ @Override @@ -330,7 +331,7 @@ throw new RuntimeException("Failed to clone object", e); } block.parameters = new LinkedHashMap<String, String>(getParameters()); - // Clone all children blocks. Note that we cannot use an iterator since we're going to change the objects + // Clone all children blocks. Note that we cannot use an iterator since we're going to change the objects // themselves. Using an iterator would lead to a ConcurrentModificationException Object[] objectArray = getChildren().toArray(); block.childrenBlocks = new ArrayList<Block>();
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-api/ src/main/java/org/xwiki/rendering/block/Block.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/Block.java 2009-01-31 18:02:32 UTC (rev 15981) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ java/org/xwiki/rendering/block/Block.java 2009-01-31 18:22:16 UTC (rev 15982) @@ -84,7 +84,7 @@ * @param newBlocks the new blocks to replace the current block with */ void replace(List<Block> newBlocks); - + /** * Get the parent block. All blocks have a parent and the top level parent is the {@link XDOM} object. * @@ -126,7 +126,7 @@ <T extends Block> List<T> getChildrenByType(Class<T> blockClass, boolean recurse);
/** - * Look forward to find a block which inherit or s provided type. + * Look forward to find a block which inherit or is provided type. * * @param <T> the class of the Blocks to return * @param blockClass the block class to look for @@ -135,9 +135,10 @@ * @since 1.6M1 */ <T extends Block> T getPreviousBlockByType(Class<T> blockClass, boolean recurse); - + /** * {@inheritDoc} + * * @see Object#clone() */ Block clone();
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/ xwiki-rendering-macro-toc/pom.xml =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/pom.xml 2009-01-31 18:02:32 UTC (rev 15981) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/pom.xml 2009-01-31 18:22:16 UTC (rev 15982) @@ -43,11 +43,11 @@ </includes> </configuration> </plugin> - <!-- plugin> - Apply the Checkstyle configurations defined in the top level pom.xml file + <plugin> + <!-- Apply the Checkstyle configurations defined in the top level pom.xml file --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> - </plugin> --> + </plugin> </plugins> </build> </project>
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/ xwiki-rendering-macro-toc/src/main/java/org/xwiki/rendering/internal/ macro/toc/TocMacro.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/main/java/org/xwiki/rendering/internal/macro/ toc/TocMacro.java 2009-01-31 18:02:32 UTC (rev 15981) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/main/java/org/xwiki/rendering/internal/macro/ toc/TocMacro.java 2009-01-31 18:22:16 UTC (rev 15982) @@ -31,6 +31,7 @@ import org.xwiki.rendering.block.ListItemBlock; import org.xwiki.rendering.block.NumberedListBlock; import org.xwiki.rendering.block.HeaderBlock; +import org.xwiki.rendering.block.SectionBlock; import org.xwiki.rendering.internal.util.EnumConverter; import org.xwiki.rendering.listener.Link; import org.xwiki.rendering.macro.AbstractMacro; @@ -108,26 +109,30 @@ // Get the root block from scope parameter
Block root; - HeaderBlock rootSectionBlock = null;
- if (parameters.getScope() == Scope.LOCAL && context.getCurrentMacroBlock() != null) { + if (parameters.getScope() == Scope.LOCAL) { root = context.getCurrentMacroBlock().getParent(); - rootSectionBlock = context .getCurrentMacroBlock().getPreviousBlockByType(HeaderBlock.class, true); } else { root = context.getXDOM(); }
// Get the list of sections in the scope
- List<HeaderBlock> sections = root.getChildrenByType(HeaderBlock.class, true); + List<HeaderBlock> headers = root.getChildrenByType(HeaderBlock.class, true);
- if (!sections.isEmpty()) { - // Construct table of content from sections list - Block rootBlock = - generateTree(sections, parameters.getStart(), parameters.getDepth(), parameters.isNumbered(), - rootSectionBlock); + if (!headers.isEmpty()) { + // If the root block is a section, remove it's header block for the list of header blocks + if (root instanceof SectionBlock) { + Block block = root.getChildren().get(0);
- return Arrays.asList(rootBlock); + if (block instanceof HeaderBlock) { + headers.remove(block); + } + } + + // Construct table of content from sections list + return Arrays.asList(generateTree(headers, parameters.getStart(), parameters.getDepth(), parameters + .isNumbered())); }
return Collections.emptyList(); @@ -142,47 +147,31 @@ }
/** - * Convert sections into list block tree. + * Convert headers into list block tree. * - * @param sections the sections to convert. + * @param headers the headers to convert. * @param start the "start" parameter value. * @param depth the "depth" parameter value. * @param numbered the "numbered" parameter value. - * @param rootSectionBlock the section where the toc macro search for children sections. * @return the root block of generated block tree. */ - private Block generateTree(List<HeaderBlock> sections, int start, int depth, boolean numbered, - HeaderBlock rootSectionBlock) + private Block generateTree(List<HeaderBlock> headers, int start, int depth, boolean numbered) { - int rootSectionLevel = rootSectionBlock != null ? rootSectionBlock.getLevel().getAsInt() : 0; - boolean rootSectionFound = false; - int currentLevel = 0; Block currentBlock = null; - for (HeaderBlock sectionBlock : sections) { - int sectionLevel = sectionBlock.getLevel().getAsInt(); + for (HeaderBlock headerBlock : headers) { + int headerLevel = headerBlock.getLevel().getAsInt();
- if (rootSectionBlock != null) { - if (rootSectionBlock == sectionBlock) { - rootSectionFound = true; - continue; - } else if (rootSectionBlock.getParent() == sectionBlock.getParent() && sectionLevel <= rootSectionLevel) { - break; - } - } else { - rootSectionFound = true; - } + if (headerLevel >= start && headerLevel <= depth) { + ListItemBlock itemBlock = createTocEntry(headerBlock);
- if (rootSectionFound && sectionLevel >= start && sectionLevel <= depth) { - ListItemBlock itemBlock = createTocEntry(sectionBlock); + // Move to next header in toc tree
- // Move to next section in toc tree - - while (currentLevel < sectionLevel) { + while (currentLevel < headerLevel) { currentBlock = createChildListBlock(numbered, currentBlock); ++currentLevel; } - while (currentLevel > sectionLevel) { + while (currentLevel > headerLevel) { currentBlock = currentBlock.getParent(); --currentLevel; }
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/ xwiki-rendering-macro-toc/src/test/java/org/xwiki/rendering/ RenderingTests.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/test/java/org/xwiki/rendering/ RenderingTests.java 2009-01-31 18:02:32 UTC (rev 15981) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki- rendering-macro-toc/src/test/java/org/xwiki/rendering/ RenderingTests.java 2009-01-31 18:22:16 UTC (rev 15982) @@ -37,12 +37,14 @@ { RenderingTestSuite suite = new RenderingTestSuite("Test Toc Macro");
- suite.addTestsFromResource("macrotoc1", true); + /*suite.addTestsFromResource("macrotoc1", true); suite.addTestsFromResource("macrotoc2", true); suite.addTestsFromResource("macrotoc3", true); suite.addTestsFromResource("macrotoc4", true); - suite.addTestsFromResource("macrotoc5", true); + suite.addTestsFromResource("macrotoc5", true);*/
+ suite.addTestsFromResource("macrotoc4", true); + return new RenderingPlexusTestSetup(suite); } }
participants (1)
-
Vincent Massol