google / gson

A Java serialization/deserialization library to convert Java Objects into JSON and back
Apache License 2.0
23.13k stars 4.27k forks source link

Remove duplicated declaration of required OSGi execution environment #2711

Closed HannesWell closed 5 days ago

HannesWell commented 6 days ago

Description

The bnd-maven-plugin used to generate the OSGi metadata can determine the required EE automatically based on the version of the generated class-files. This avoids inconsistencies if the release target is raised in the future.

In general there is no need to declare a Bundle-RequiredExecutionEnvironment together with an osgi.ee requirement. At runtime the former is automatically converted to the later, since the former is deprecated. Furthermore declaring multiple values for Bundle-RequiredExecutionEnvironment is also not useful since the driving requirement is the highest one.

With the change being applied bnd generates the following header:

Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.7))"

This matches the minimally required Java version of Java 7 for Gson 2.9 and later and https://github.com/google/gson/issues/1601 or https://github.com/google/gson/issues/1602 should not be re-introduced.

Checklist

HannesWell commented 4 days ago

Thanks for submitting this.

but it looks as if you have checked that this does the right thing

I have checked the result of a local mvn clean verify build and yes the result is as expected. Do you deploy snapshots that can be checked again?

And regarding the bnd-maven-plugin:

eamonnmcmanus commented 4 days ago

We don't usually deploy snapshots, no. I think it's very likely that the updated configuration works given your local check, and if by chance the configuration doesn't work we can fix it after the next release.

I like the idea of getting rid of bnd.bnd and using Maven configuration instead. It seems more logical for all configuration to be in pom.xml rather than having this one special file in the top-level gson directory.

On the other hand having bnd-maven-plugin generate module-info.class feels backwards to me. I think we do want to have an explicit module-info.java that users can consult.

HannesWell commented 3 days ago

Sounds all good. Please see https://github.com/google/gson/pull/2712 for the merge.