On Fri, Jul 10, 2009 at 09:44, Vincent Massol<[email protected]> wrote:
> I like this. Shouldn't we also remove the automatic creation of Tag
> objects in all documents by default?
+1
>
> I have never understood why we do this for Tags and not for Rights,
> and all other objects. For me the objects should be created only when
> required and not by default.
>
> Thanks
> -Vincent
>
> On Jul 4, 2009, at 5:22 PM, sdumitriu (SVN) wrote:
>
>> Author: sdumitriu
>> Date: 2009-07-04 17:22:41 +0200 (Sat, 04 Jul 2009)
>> New Revision: 21818
>>
>> Modified:
>> platform/xwiki-plugins/trunk/tag/src/main/java/com/xpn/xwiki/
>> plugin/tag/TagPlugin.java
>> Log:
>> XATAG-20: Adding tags fails when there is no Tag object attached to
>> the document
>> Fixed.
>>
>> Modified: platform/xwiki-plugins/trunk/tag/src/main/java/com/xpn/
>> xwiki/plugin/tag/TagPlugin.java
>> ===================================================================
>> --- platform/xwiki-plugins/trunk/tag/src/main/java/com/xpn/xwiki/
>> plugin/tag/TagPlugin.java 2009-07-04 15:22:34 UTC (rev 21817)
>> +++ platform/xwiki-plugins/trunk/tag/src/main/java/com/xpn/xwiki/
>> plugin/tag/TagPlugin.java 2009-07-04 15:22:41 UTC (rev 21818)
>> @@ -29,12 +29,18 @@
>>
>> import org.apache.commons.collections.CollectionUtils;
>> import org.apache.commons.lang.StringUtils;
>> +import org.apache.commons.logging.Log;
>> +import org.apache.commons.logging.LogFactory;
>>
>> import com.xpn.xwiki.XWikiContext;
>> import com.xpn.xwiki.XWikiException;
>> import com.xpn.xwiki.api.Api;
>> import com.xpn.xwiki.doc.XWikiDocument;
>> +import com.xpn.xwiki.objects.BaseObject;
>> import com.xpn.xwiki.objects.BaseProperty;
>> +import com.xpn.xwiki.objects.DBStringListProperty;
>> +import com.xpn.xwiki.objects.classes.BaseClass;
>> +import com.xpn.xwiki.objects.classes.PropertyClass;
>> import com.xpn.xwiki.plugin.XWikiDefaultPlugin;
>> import com.xpn.xwiki.plugin.XWikiPluginInterface;
>>
>> @@ -45,6 +51,9 @@
>> */
>> public class TagPlugin extends XWikiDefaultPlugin implements
>> XWikiPluginInterface
>> {
>> + /** Logging helper object. */
>> + public static final Log LOG = LogFactory.getLog(TagPlugin.class);
>> +
>> /**
>> * The identifier for this plugin; used for accessing the plugin
>> from velocity, and as the action returning the
>> * extension content.
>> @@ -116,10 +125,40 @@
>> private void setDocumentTags(XWikiDocument document,
>> List<String> tags, XWikiContext context)
>> {
>> BaseProperty prop = (BaseProperty)
>> document.getObject(TAG_CLASS, true, context).safeget(TAG_PROPERTY);
>> + // Properties aren't added to an object unless a value is
>> specified either from the Web or from an XML.
>> + if (prop == null) {
>> + prop = createTagProperty(document.getObject(TAG_CLASS,
>> true, context), context);
>> + }
>> prop.setValue(tags);
>> }
>>
>> /**
>> + * Create and add the main tag property to the provided tag
>> object. The new property corresponds to the definition
>> + * in the tag class, but in case of an error, the default type
>> is a relational-stored list.
>> + *
>> + * @param tagObject the target tag object
>> + * @param context the current request context
>> + * @return the created property
>> + * @see #TAG_PROPERTY
>> + */
>> + private BaseProperty createTagProperty(BaseObject tagObject,
>> XWikiContext context)
>> + {
>> + BaseProperty tagProperty;
>> + try {
>> + BaseClass tagClass =
>> context.getWiki().getClass(TAG_CLASS, context);
>> + PropertyClass tagPropertyDefinition = (PropertyClass)
>> tagClass.getField(TAG_PROPERTY);
>> + tagProperty = tagPropertyDefinition.newProperty();
>> + } catch (XWikiException ex) {
>> + LOG.warn("Failed to properly create tag property for
>> the tag object, creating a default one");
>> + tagProperty = new DBStringListProperty();
>> + }
>> + tagProperty.setName(TAG_PROPERTY);
>> + tagProperty.setObject(tagObject);
>> + tagObject.safeput(TAG_PROPERTY, tagProperty);
>> + return tagProperty;
>> + }
>> +
>> + /**
>> * Get all tags within the wiki.
>> *
>> * @param context XWiki context.
>>
>> _______________________________________________
>> notifications mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/notifications
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
--
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs