Yes. The problem is that no mail gets sent, which is the purpose of
the notification. I reread my initial post, and now I understand your
confusion. I didn't explicitly state that the class wasn't working.
I'm using XWiki Enterprise manager 1.3 with platform version 1.5.2.
Dan
> 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