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

Reply via email to