### Eclipse Workspace Patch 1.0 #P xwiki-core-parent Index: xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroFactory.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroFactory.java (revision 27262) +++ xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroFactory.java (working copy) @@ -191,7 +191,8 @@ String parameterDescription = macroParameter.getStringValue(PARAMETER_DESCRIPTION_PROPERTY); boolean parameterMandatory = (macroParameter.getIntValue(PARAMETER_MANDATORY_PROPERTY) == 0) ? false : true; - + String parameterDefaultValue = macroParameter.getStringValue(PARAMETER_DEFAULT_VALUE_PROPERTY); + // Verify parameter name. if (StringUtils.isEmpty(parameterName)) { throw new WikiMacroException(String.format( @@ -203,10 +204,15 @@ String errorMessage = "Incomplete macro definition in [%s], macro parameter description is empty"; getLogger().debug(String.format(errorMessage, documentReference)); } + + // If field empty, assume no default value was provided. + if (StringUtils.isEmpty(parameterDefaultValue)) { + parameterDefaultValue = null; + } // Create the parameter descriptor. parameterDescriptors.add(new WikiMacroParameterDescriptor(parameterName, parameterDescription, - parameterMandatory)); + parameterMandatory, parameterDefaultValue)); } } Index: xwiki-core/src/main/java/com/xpn/xwiki/internal/WikiMacroConstants.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/internal/WikiMacroConstants.java (revision 27222) +++ xwiki-core/src/main/java/com/xpn/xwiki/internal/WikiMacroConstants.java (working copy) @@ -111,4 +111,10 @@ * Constant for representing parameter mandatory property. */ String PARAMETER_MANDATORY_PROPERTY = "mandatory"; + + /** + * Constant for representing parameter defaultValue property. + * @since 2.3M1 + */ + String PARAMETER_DEFAULT_VALUE_PROPERTY = "defaultValue"; } Index: xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-wikibridge/src/main/java/org/xwiki/rendering/macro/wikibridge/WikiMacroParameterDescriptor.java =================================================================== --- xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-wikibridge/src/main/java/org/xwiki/rendering/macro/wikibridge/WikiMacroParameterDescriptor.java (revision 27222) +++ xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-wikibridge/src/main/java/org/xwiki/rendering/macro/wikibridge/WikiMacroParameterDescriptor.java (working copy) @@ -54,6 +54,11 @@ private boolean mandatory; /** + * Default value of the parameter. + */ + private Object defaultValue; + + /** * Creates a new {@link WikiMacroParameterDescriptor} instance. * * @param id parameter identifier. @@ -68,6 +73,23 @@ } /** + * Creates a new {@link WikiMacroParameterDescriptor} instance. + * + * @param id parameter identifier. + * @param description parameter description. + * @param mandatory if the parameter is mandatory. + * @param defaultValue parameter default value. + * @since 2.3M1 + */ + public WikiMacroParameterDescriptor(String id, String description, boolean mandatory, Object defaultValue) + { + this.id = id; + this.description = description; + this.mandatory = mandatory; + this.defaultValue = defaultValue; + } + + /** * {@inheritDoc} */ public String getId() @@ -106,7 +128,7 @@ */ public Object getDefaultValue() { - return null; + return this.defaultValue; } /** Index: xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroInitializer.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroInitializer.java (revision 27222) +++ xwiki-core/src/main/java/com/xpn/xwiki/internal/DefaultWikiMacroInitializer.java (working copy) @@ -235,6 +235,7 @@ needsUpdate |= bclass.addTextField(PARAMETER_NAME_PROPERTY, "Parameter name", 30); needsUpdate |= bclass.addTextAreaField(PARAMETER_DESCRIPTION_PROPERTY, "Parameter description", 40, 5); needsUpdate |= bclass.addBooleanField(PARAMETER_MANDATORY_PROPERTY, "Parameter mandatory", "yesno"); + needsUpdate |= bclass.addTextField(PARAMETER_DEFAULT_VALUE_PROPERTY, "Parameter default value", 30); if (needsUpdate) { update(doc);