Do you actually encounter a problem, besides the error in the logs ?
I believe those logs are generated when you call getRenderedContent on
your blog article, so I maintain they have nothing to do with your
notification class.
Which version of XWiki Enterprise are you using ?
Jerome.
Dan Svoboda wrote:
> Hi,
>
> See below
>
> Dan Svoboda wrote:
>> Hi,
>>
>> I'm trying to use the notification system to trigger the sending of
>> email whenever a comment is added to a blog article. I'm patterning my
>> groovy class after the pircbot example on the xwiki snippets site.
>>
>> My system is xwiki workspaces as a virtual xwiki under xem. The
>> platform version is 1.5.2.
>>
>> Here's my groovy class (XWSNotify.BlogMailNotificationGroovyClass):
>>
>> /* Groovy Class #* */
>>
>> import com.xpn.xwiki.api.XWiki;
>> import com.xpn.xwiki.XWikiContext;
>> import com.xpn.xwiki.notify.XWikiDocChangeNotificationInterface;
>> import com.xpn.xwiki.notify.DocObjectChangedRule;
>> import com.xpn.xwiki.notify.XWikiNotificationRule;
>> import com.xpn.xwiki.doc.XWikiDocument;
>>
>> public class BlogMailNotificationGroovyClass implements \
>>
>> XWikiDocChangeNotificationInterface
>>
>> {
>> def xwiki;
>> def rule;
>> def name;
>>
>> public void initClasses(XWikiContext context)
>> {
>> this.xwiki = context.getWiki();
>> // listen to notifications
>> this.rule = DocObjectChangedRule(this);
>>
>> context.getWiki().getNotificationManager().addGeneralRule(rule);
>> }
>>
>> public void notify(XWikiNotificationRule rule, XWikiDocument
>> newdoc, \
>> XWikiDocument olddoc, int event, XWikiContext
>> context)
>> {
>> def length = newdoc.getSpace().length();
>> def lastFour = length - 4;
>> if(newdoc.getSpace().substring(lastFour) == "Blog") {
>>
>> def ms = xwiki.getPlugin("mailsender");
>> def nb = ms.sendHtmlMessage(context.getUser(),
>> "[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>> ", \
>> context.get("ccrecipients"),
>> context.get("bccrecipients"), \
>> context.get("subject"),
>> newdoc.getRenderedContent(), \
>> newdoc.getContent(),
>> newdoc.getAttachments());
>> }
>> }
>> }
>>
>> /* *# */
>>
>> Here's a velocity script I'm using to initialize/test:
>>
>> #set($sc = $context.getContext().getEngineContext().getServletContext())
>> $sc.getAttribute("blgmailnotif")<br/>
>> #set($blgmlnotif =
>> $xwiki.parseGroovyFromPage("XWSNotify.BlogMailNotificationGroovyClass"))
>> #set($ok = $sc.setAttribute("blgmailnotif", $blgmlnotif))
>> #set($blgmailnotif = $sc.getAttribute("blgmailnotif"))
>> $sc.getAttribute("blgmailnotif")<br/>
>> #set($ok = $blgmlnotif.initClasses($context))
>> #set($ok = $blgmlnotif.notify($blgmlnotif.rule,$newdoc,$newdoc,
>> 3,$context))
>>
>> Here's the output from the velocity script:
>>
>> [EMAIL PROTECTED]
>> [EMAIL PROTECTED]
>>
>> So, the groovy class gets initialized to a new reference successfully
>> each time parseGroovyFromPage is called.
>>
>> Here's what appears in the log after running the velocity script:
>>
>> [ERROR] Left side ($request.title) of '!=' operation has null value.
>> Operation not possible. [line 53, column 43]
>> [WARNING] Cannot retrieve method notify from object of class
>> BlogMailNotificationGroovyClass due to security restrictions.
>>
>> If I alter the velocity script to:
>>
>> #set($sc = $context.getContext().getEngineContext().getServletContext())
>> $sc.getAttribute("blgmailnotif")<br/>
>>
>> Here's what appears in the log:
>>
>> [ERROR] Left side ($request.title) of '!=' operation has null value.
>> Operation not possible. [line 53, column 43]
>>
>> So, the [WARNING] is the only log entry pertaining to the groovy class.
>>
>> If I add a comment to a Blog article (with or without the
>> BlogMailNotificationGroovyClass initialized), the following appears in
>> the log:
>>
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>> [ERROR] Left side ($index) of addition operation has null value.
>> Operation not possible. [line 20, column 25]
>>
>> The number of lines corresponds to the number of comments present in
>> the Blog article. There's nothing in the log pertaining to the groovy
>> class.
>
> Indeed, this has nothing to do with your groovy notification. This is
> generated by the velocity engine.
> Is your skin customized ? Is the blog application modified ? (The log
> says that somewhere a variable $index is trying to add something to
> "null". Might be the pagination of blog articles ?)
>
> Jerome.
>
> I can't find a variable $index in any arithmetical expression in any
> velocity script anywhere on the site.
>
> The skin is customized only to the extent of some inconsequential
> tweaks. Same with blog app.
>
> There's no pagination of blog articles.
>
> Would someone please review the basic mechanics of how groovy classes
> work, particularly as it pertains to my notification class?
>
> Also, I see by reading source that there's a newer way of monitoring
> events through the "observation manager". Would someone please review
> how to use this system?
>
> Thanks,
>
> Dan
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users