BTW, your snippet is interesting, maybe you can consider publishing it 
as a FAQ entry "How to send blog posts by email" or a code snippet on 
code.xwiki.org once you get it working properly :)

Jerome.

Jerome Velociter wrote:
> 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
>
> _______________________________________________
> users mailing list
> users@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/users

_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to