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

Reply via email to