Custom Plugin Compatibility for Jira 9

Hi Guys,

We have a custom developed plugin which we are currently using it in our Jira 8.20. We are also in process of upgrading to the version 9.4.X. For the same we have build the existing code to make it compatible with the 9 but we faced some error like “405 Method not allowed”. Going through various discussions and documents we were able to resolve it but now we are seeing another issue where the ao values are displaying as null(attached screenshot) when uploaded to the Jira 9(dev) with the existing data. I saw few threads like Jira 9.0 has a release candidate! - #69 by mike1 but nothing is straight forward and the info is old enough. So, any help resolving this would be helpful as we cannot proceed with the upgrade until this gets solved.

Thanks in Advance.

The problem is most likely the fact that you’re using an ActiveObject entity directly in your Velocity templates.
This isn’t supported anymore by default, the easiest solution – which is a good practice in general – is to create some DTOs that map the entity to a different object. You can either roll your own classes, or use something like modelmapper, mapstruct…

Hi Paolo,

Thanks for your update/inputs.

To be frank, I’m completely a new bee to this so not sure the terms you’ve mentioned for example “DTO”. So, please if there’s any reference of steps on how to setup this or if you be able to let me know, it would be very helpful for us as we are counting on this to be done in order to proceed with the upgradation by the next month.

Thanks in advance, happy weekend!!

Regards,
Yagna Teja

Hey, basically you can’t use the entity directly, but if you create a separate class that contains the data that you need in your view, it’ll work.

If you have a CategoryAO class which is your ActiveObjects class, you can create something like

public class CategoryViewModel {
   private String name;
   private String id;

   // getters and setters, constructor...
}

Then when you fetch the data from AO, you can create CategoryViewModel objects from your raw entities (e.g. categoriesFromAo.stream().map(category -> new CategoryViewModel(category.id, category.name)).collect(Collectors.toList())) and use those in your velocity templates intead.