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]
> ", \
>                            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
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to