I seem to be running into an error I can't find my way around when passing the 
xwiki context to an eventListener. According to the error message itself 
(below) I appear to be passing the right objects, but I'm still getting an 
exception thrown. 

I should point out that I'm new to both xwiki and groovy, so I may have missed 
something obvious, is the context not instantiated by the time it's been sent  
to the event handler? or should I be grabbing it anew? 

thanks

-s


Error and groovy code below... 

2012-07-05 21:19:59,471 
[http://localhost:8080/xwiki/bin/preview/Task/look+into+CMH+%2F+TDT] ERROR 
.o.i.DefaultObservationManager - Failed to send event 
[org.xwiki.observation.event.DocumentUpdateEvent@6b193509] to listener 
[MailingEventListener@171aa1cb] 
groovy.lang.MissingMethodException: No signature of method: static 
com.xpn.xwiki.plugin.mailsender.MailSenderPlugin.sendMail() is applicable for 
argument types: (com.xpn.xwiki.plugin.mailsender.Mail, 
com.xpn.xwiki.XWikiContext) values: [From [[email protected]], To [], 
Subject [xwiki done some stuff, yo], Text [document TaskClass has been 
changed], ...]
Possible solutions: sendMail(com.xpn.xwiki.plugin.mailsender.Mail, 
com.xpn.xwiki.XWikiContext), sendMail(com.xpn.xwiki.plugin.mailsender.Mail, 
com.xpn.xwiki.plugin.mailsender.MailConfiguration, com.xpn.xwiki.XWikiContext), 
sendMails(java.util.Collection, com.xpn.xwiki.XWikiContext), 
sendMails(java.util.Collection, 
com.xpn.xwiki.plugin.mailsender.MailConfiguration, com.xpn.xwiki.XWikiContext), 
findAll()
 

{{groovy}}

import org.xwiki.observation.*
import org.xwiki.observation.event.*
import com.xpn.xwiki.plugin.mailsender.*
import com.xpn.xwiki.web.*
import com.xpn.xwiki.*

class MailingEventListener implements EventListener
{
    def xwiki
    def xwcontext
    def context
    def xdoc

    MailingEventListener(xwiki, context)
    {
        this.xwiki = xwiki
        this.context = context
        this.xwcontext = context.getContext()
        this.xdoc = context.doc
    }

    String getName()
    {
        // The unique name of this event listener
        return "mailing"
    }

 
    List<Event> getEvents()
    {
        // The list of events this listener listens to
        return Arrays.asList(new DocumentUpdateEvent())
    }

    // Called by the Observation Manager when an event matches the list of 
events returned
    // by getEvents()
    void onEvent(Event event, Object source, Object data)
    {
        def mailfrom = '[email protected]'
        def mailto = xdoc.getStringValue('assignee')
        def subject = 'xwiki done some stuff, yo'
        def message = 'document '+xdoc.name+' has been changed'
        def mailItem = new Mail(mailfrom, mailto, null, null, subject, message, 
null)
        MailSenderPlugin.sendMail(mailItem, xwcontext);
    }
}

// Register against the Observation Manager
def observation = Utils.getComponent(ObservationManager.class)
observation.removeListener("mailing")
def listener = new MailingEventListener(xwiki, xcontext)
observation.addListener(listener)

println "{{info}}Listener $listener.name is now registered on 
$listener.events{{/info}}"
println "{{info}}Context = $listener.context{{/info}}"
println "{{info}}$listener.context.doc.name{{/info}}"

{{/groovy}}
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to