I tried changing newdoc.getAttachments() to newdoc.newDocument(context).getAttachmentList().
I've stripped down the class to remove dependance on getting values out of the context; i.e I've provided string literals for sender, cc, etc. I've also changed the rule to DocChangeRule(this), and removed the test for the change coming from a space's Blog so that any document save event would trigger email. Still no joy. The only clue in the log is when calling the notify method from a velocity script: [WARNING] Cannot retrieve method notify from object of class BlogMailNotificationGroovyClass due to security restrictions. Dan Here's the revised class: /* 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 = DocChangeRule(this); context.getWiki().getNotificationManager().addGeneralRule(rule); } public void notify(XWikiNotificationRule rule, XWikiDocument newdoc, \ XWikiDocument olddoc, int event, XWikiContext context) { def ms = xwiki.getPlugin("mailsender"); def nb = ms.sendHtmlMessage("XWiki.Admin", \ "[EMAIL PROTECTED]", \ "[EMAIL PROTECTED]", \ "[EMAIL PROTECTED]", \ "subject", \ newdoc.getRenderedContent(), \ newdoc.getContent(), \ newdoc.newDocument(context).getAttachmentList()); } } /* *# */ > Ok, I have another idea. Did you try sending the mail without > attachments ? > > This because what you pass the plugin API are XWikiAttachments > (http://maven.xwiki.org/site/xwiki-core-parent/xwiki-core/apidocs/com/xpn/xwiki/doc/XWikiAttachment.html > > ), > while it expects "com.xpn.xwiki.api.Attachment" (see the plugin API > here > http://code.xwiki.org/xwiki/bin/view/Plugins/MailSenderPlugin). > If you want to have the proper wrapped attachments to pass the plugin, > you should use "newdoc.newDocument(context).getAttachmentList()" > > Hope this helps, > Jerome. > > Daniel Svoboda wrote: >> Thanks for the replies. >> >> I had already found that bug. If I take the conditional completely >> out >> of the class, it still doesn't send an email. >> >> Dan >> >>> It is probably due to the following : >>> >>> "if(newdoc.getSpace().substring(lastFour) == "Blog") {" >>> >>> in Java, if you have the following : >>> >>> String st1 = "Blog"; >>> String st2 = new String("Blog"); >>> >>> then st1 == st2 will always return false, as the objects are not the >>> same. What you want is to compare their values, using >>> st1.equals(st2), >>> which will return true. >>> You can read here to find out more >>> http://www.unix.com.ua/orelly/java/langref/ch04_09.htm (especially >>> this >>> sentence : "Because the == operator determines if two objects are >>> the >>> same object, it is not appropriate for comparisons that need to >>> determine if two objects have the same contents. For example, if you >>> need to know whether two String objects contain the same sequences >>> of >>> characters, the == operator is inappropriate. You should use the >>> equals() method") >>> >>> Anyway, their is even simpler for you. What you want to do is >>> check if >>> the space name finishes by "Blog". For this the appropriate method >>> is >>> String#endsWith >>> (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#endsWith(java.lang.String >>> >>> ) >>> ) >>> As in : >>> >>> "if(newdoc.getSpace().endsWith("Blog")) {" >>> >>> Hope this helps and fixes your issue, >>> >>> Regards, >>> Jerome >>> >>> Daniel Svoboda wrote: >>>> 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 users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users