I've written a ScriptRunner event handler, how do I enable it and know it is working?
Asked by Eric Dierkens:

I've written a ScriptRunner event handler, how do I enable it and know it is working?

Here is the sctipt. I added logging but I'm not seeing anything.

log.info("eWebRequest Form Event Fired")

import com.atlassian.confluence.event.events.content.page.PageEvent  
import com.atlassian.confluence.spaces.Space  
import com.atlassian.confluence.pages.Page

def event = event as PageEvent

Page page = event.getPage()  
Space space = page.getSpace()

if (page.getSpace() != 'eWebProjects') {  
log.info("eWebRequest Form Event - 1")  
return  
}

// Is the page-type eWebRequest?  
import com.atlassian.applinks.api.ApplicationLink  
import com.atlassian.applinks.api.ApplicationLinkService  
import com.atlassian.applinks.api.application.confluence.ConfluenceApplicationType  
import com.atlassian.sal.api.component.ComponentLocator  
import com.atlassian.sal.api.net.Request  
import com.atlassian.sal.api.net.Response  
import com.atlassian.sal.api.net.ResponseException  
import com.atlassian.sal.api.net.ResponseHandler  
import com.atlassian.sal.api.net.ReturningResponseHandler  
import groovy.json.JsonBuilder

//import com.atlassian.confluence.pages.CommentManager

def ApplicationLink getPrimaryConfluenceLink() {  
def applicationLinkService = ComponentLocator.getComponent(ApplicationLinkService.class)  
final ApplicationLink conflLink = applicationLinkService.getPrimaryApplicationLink(ConfluenceApplicationType.class);  
conflLink  
}

def confluenceLink = getPrimaryConfluenceLink()  
assert confluenceLink // must have a working app link set up

def authenticatedRequestFactory = confluenceLink.createAuthenticatedRequestFactory()

// Get create content response body as a map  
def contentResponse = authenticatedRequestFactory  
.createRequest(Request.MethodType.POST, "rest/api/content/" + page.id + "/page-type?")  
.addHeader("Content-Type", "application/json")  
.executeAndReturn(new ReturningResponseHandler\<Response, Map\>(){  
@Override  
Map handle(Response response) throws ResponseException {  
if (response.statusCode == HttpURLConnection.HTTP_NOT_FOUND)  
{  
log.info("eWebRequest Form Event - 2")  
return  
}  

if (response.statusCode != HttpURLConnection.HTTP_OK) {  
log.info("eWebRequest Form Event - 3")  
throw new Exception("Get page-type failed: " + response.getResponseBodyAsString())  
}

return response.getEntity(Map)  
}  
})

if (contentResponse.value != 'eWebRequest')  
{  
log.info("eWebRequest Form Event - 4")  
return  
}

// TESTING ONLY  
log.info("eWebRequest Form Event Success")


Answers:
author: Jenna Davis
body: Hello,

If you haven't read over it already [this section of the documentation](https://scriptrunner.adaptavist.com/latest/confluence/ConfluenceEventHandlers.html#_working_with_custom_event_handlers) contains a lot of useful information about custom event handlers, including how to write and use them. I would recommend reading it over.

For testing, if you haven't done so already, try [setting up a development environment](https://scriptrunner.adaptavist.com/latest/confluence/DevEnvironment.html) with logging for your instance. It will making the debugging process much easier in the long run.

Please let me know if you have any further questions!

Regards,

Jenna


Tags: scriptrunner