On Aug 9, 2009, at 9:12 PM, asiri (SVN) wrote:

> Author: asiri
> Date: 2009-08-09 21:12:30 +0200 (Sun, 09 Aug 2009)
> New Revision: 22449
>
> Modified:
>   platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ 
> java/org/xwiki/rendering/internal/macro/ 
> DefaultMacroCategoriesManager.java
>   platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/test/ 
> java/org/xwiki/rendering/internal/macro/ 
> DefaultMacroCategoriesManagerTest.java
> Log:
> XWIKI-4131: Add support for organizing macros by category
>
> * getMacroNames() should return only macro names, not macro hints.
> * Fixed a NPE possibility.
> * Added one more test case.
>
> Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-api/ 
> src/main/java/org/xwiki/rendering/internal/macro/ 
> DefaultMacroCategoriesManager.java
> ===================================================================
> --- platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ 
> java/org/xwiki/rendering/internal/macro/ 
> DefaultMacroCategoriesManager.java    2009-08-09 14:04:29 UTC (rev 22448)
> +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/ 
> java/org/xwiki/rendering/internal/macro/ 
> DefaultMacroCategoriesManager.java    2009-08-09 19:12:30 UTC (rev 22449)
> @@ -19,25 +19,25 @@
>  */
> package org.xwiki.rendering.internal.macro;
>
> +import java.util.Collections;
> +import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.Map;
> +import java.util.Properties;
> +import java.util.Set;
> +
> import org.xwiki.component.annotation.Component;
> import org.xwiki.component.annotation.Requirement;
> import org.xwiki.component.logging.AbstractLogEnabled;
> import org.xwiki.component.manager.ComponentLookupException;
> import org.xwiki.component.manager.ComponentManager;
> +import org.xwiki.rendering.configuration.RenderingConfiguration;
> import org.xwiki.rendering.macro.Macro;
> import org.xwiki.rendering.macro.MacroCategoriesManager;
> import org.xwiki.rendering.macro.MacroLookupException;
> import org.xwiki.rendering.macro.MacroManager;
> import org.xwiki.rendering.parser.Syntax;
> -import org.xwiki.rendering.configuration.RenderingConfiguration;
>
> -import java.util.Set;
> -import java.util.Collections;
> -import java.util.Map;
> -import java.util.HashMap;
> -import java.util.Properties;
> -import java.util.HashSet;
> -
> /**
>  * Default implementation of {...@link MacroCategoriesManager}.
>  *
> @@ -115,7 +115,7 @@
>                 return true;
>             }
>         }).get(category);
> -        return Collections.unmodifiableSet(macros);
> +        return (null != macros) ?  
> Collections.unmodifiableSet(macros) : Collections.<String>emptySet();
>     }
>
>     /**
> @@ -131,7 +131,7 @@
>                 return macroManager.exists(macroName, syntax);
>             }
>         }).get(category);
> -        return Collections.unmodifiableSet(macros);
> +        return (null != macros) ?  
> Collections.unmodifiableSet(macros) : Collections.<String>emptySet();
>     }
>
>     /**
> @@ -152,8 +152,21 @@
>
>         // Loop through all the macros and categorize them.
>         Properties categories =  
> this.configuration.getMacroCategories();
> -        for (Map.Entry<String, Macro> entry : allMacros.entrySet()) {
> -            if (matcher.match(entry.getKey())) {
> +        for (Map.Entry<String, Macro> entry : allMacros.entrySet()) {
> +            // Extract macro name.
> +            String [] hintParts = entry.getKey().split("/");
> +            String macroName = null;
> +            if (hintParts.length > 0) {
> +                macroName = hintParts[0];
> +            } else {
> +                // Question: Will we ever reach this code?
> +                getLogger().warn("Invalid macro hint : [" +  
> entry.getKey() + "]");
> +                // Skip this macro.
> +                continue;
> +            }

This can be improved by sharing code with the MacroManager, by  
creating some kind of macro syntax parser or factory.

Another solution is to rethink they way we register a macro for a  
given syntax.

[snip]

Thanks
-Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to