Document toolboxDocument toolbox

(8.7.4) Events listeners

In this section, we will explain how to work with Projectrak event listeners.
For the moment, these are the events you can listen:

We will provide more event listeners in the future. If you have any suggestions, contact us or let us know in the comments.

How to use Projectrak event listeners

We have built Projectrak event listeners with a similar structure as Jira ones. So, if you are familiar with Jira listeners, you will find Projectrak's listeners really easy to use.
You can extend from 2 different abstract classes to develop your own Projectrak event listeners:

ProjectrakListener

Default ProfieldsListener implementation
package com.deiser.jira.profields.event.listener;

import com.atlassian.crowd.embedded.api.Group;
import com.atlassian.event.api.EventPublisher;
import com.atlassian.jira.project.Project;
import com.atlassian.jira.user.ApplicationUser;
import com.deiser.jira.profields.api.event.model.ValueUpdatedEvent;
import com.deiser.jira.profields.api.event.model.ProfieldsEvent;
import com.deiser.jira.profields.api.event.listener.ProfieldsListener;
import com.deiser.jira.profields.api.field.Field;
import com.deiser.jira.profields.api.field.item.list.ListItem;
import com.deiser.jira.profields.api.field.item.priority.PriorityItem;
import com.deiser.jira.profields.api.field.item.status.StatusItem;
import org.apache.log4j.Logger;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class DefaultProfieldsListener extends ProfieldsListener {
   private static final Logger log = Logger.getLogger(DefaultProfieldsListener.class);

   private EventPublisher eventPublisher;

   public DefaultProfieldsListener(EventPublisher eventPublisher) {
      this.eventPublisher = eventPublisher;
   }

   @Override
   public void afterPropertiesSet() throws Exception {
      eventPublisher.register(this);
   }

   @Override
   public void destroy() throws Exception {
      eventPublisher.unregister(this);
   }

   @Override
   protected void onProfieldsEvent(ProfieldsEvent profieldsEvent) {
      log.debug("DefaultProfieldsListener - profieldsEvent");
   }

   @Override
   protected void onValueUpdated(ApplicationUser user, Project project, Field field, Object oldValue, Object newValue) {
      log.debug("DefaultProfieldsListener - onValueUpdated");
   }
}


ProjectrakAutoRegListener

This event listener is registered on the Jira Event Publisher by default. 
Remember that you have to init your listener class to be able to be notified by Projectrak events. You can do it by registering your component to the App descriptor or just creating an instance of your class.

Default ProfieldsAutoRegListener implementation
package com.deiser.jira.profields.event.listener;

import com.atlassian.crowd.embedded.api.Group;
import com.atlassian.event.api.EventPublisher;
import com.atlassian.jira.project.Project;
import com.atlassian.jira.user.ApplicationUser;
import com.deiser.jira.profields.api.event.listener.ProfieldsAutoRegListener;
import com.deiser.jira.profields.api.event.model.ProfieldsEvent;
import com.deiser.jira.profields.api.field.Field;
import com.deiser.jira.profields.api.field.item.list.ListItem;
import com.deiser.jira.profields.api.field.item.priority.PriorityItem;
import com.deiser.jira.profields.api.field.item.status.StatusItem;
import org.apache.log4j.Logger;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class DefaultProfieldsAutoRegListener extends ProfieldsAutoRegListener {
   private static final Logger log = Logger.getLogger(DefaultProfieldsAutoRegListener.class);

    public DefaultProfieldsAutoRegListener(EventPublisher eventPublisher) {
       super(eventPublisher);
   }

   @Override
   protected void onProfieldsEvent(ProfieldsEvent profieldsEvent) {
      log.debug("DefaultProfieldsAutoRegListener - profieldsEvent");
   }

   @Override
   protected void onValueUpdated(ApplicationUser user, Project project, Field field, Object oldValue, Object newValue) {
      log.debug("DefaultProfieldsAutoRegListener - onValueUpdated");
   }
}