Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,367,828
Community Members
 
Community Events
168
Community Groups

How to use a Gson version that is bundled with a Bamboo plugin

Currently the OSGi bundle with the custom plugin always uses the Gson implementation from Bamboo instead of the one inside the bundle itself.

To test this I had this on the plugin code:

Class klass = Gson.class;

URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");

log.warn("Gson: " + location);


Class klass2 = SerializedName.class;

URL location2 = klass2.getResource('/' + klass2.getName().replace('.', '/') + ".class");

log.warn("@SerializedName: " + location2);

And this on pom.xml:

<Import-Package>

  ...

  !com.google.gson*

</Import-Package>

<Private-Package>

  ...

  com.google.gson*

</Private-Package>

The expected result is that all code that uses classes from the Gson packages should come from the bundle itself, not the one provided by the environment (Bamboo).

But the result was:

Gson: jar:file:/opt/atlassian/bamboo/atlassian-bamboo/WEB-INF/lib/gson-2.2.2-atlassian-1.jar!/com/google/gson/Gson.class
@SerializedName: bundle://116.0:7/com/google/gson/annotations/SerializedName.class

This means, Gson class was loaded from Bamboo but the annotation SerializedName came from the bundle, which is a problem in our case because the annotation is being ignored when parsing a JSON file.

Having an import for all Gson packages from Bamboo is not an option to us because we use features that are only available after Gson 2.3.

 

Is there a way to use the Gson package that is bundled with the plugin itself?

 

Thanks.

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events