diff --git a/biz.aQute.bndlib.tests/test/test/model/EETest.java b/biz.aQute.bndlib.tests/test/test/model/EETest.java index 42d898d493..a262e7f152 100644 --- a/biz.aQute.bndlib.tests/test/test/model/EETest.java +++ b/biz.aQute.bndlib.tests/test/test/model/EETest.java @@ -90,6 +90,41 @@ public void checkEEHasCompatible(EE ee) throws Exception { assertThat(compatible).isNotEmpty(); } + @ParameterizedTest(name = "Validate release target for {arguments}") + @ArgumentsSource(EEsArgumentsProvider.class) + @DisplayName("Validate release target for each EE") + public void checkEEHasValidRelease(EE ee) throws Exception { + switch (ee) { + case OSGI_Minimum_1_0 : + case OSGI_Minimum_1_1 : + case OSGI_Minimum_1_2 : + case J2SE_1_2 : + case J2SE_1_3 : + case J2SE_1_4 : + case J2SE_1_5 : + case JRE_1_1 : + assertThat(ee.getReleaseTarget()).isEmpty(); + break; + case JavaSE_1_6 : + assertThat(ee.getReleaseTarget()).hasValue(6); + break; + case JavaSE_1_7 : + assertThat(ee.getReleaseTarget()).hasValue(7); + break; + case JavaSE_1_8 : + case JavaSE_compact1_1_8 : + case JavaSE_compact2_1_8 : + case JavaSE_compact3_1_8 : + assertThat(ee.getReleaseTarget()).hasValue(8); + break; + + default : + assertThat(ee.getReleaseTarget()).hasValue(ee.getCapabilityVersion() + .getMajor()); + break; + } + } + @ParameterizedTest(name = "Validate Packages exist for {arguments}") @ArgumentsSource(EEsArgumentsProvider.class) @DisplayName("Validate Packages exist for each EE") diff --git a/biz.aQute.bndlib/src/aQute/bnd/build/model/EE.java b/biz.aQute.bndlib/src/aQute/bnd/build/model/EE.java index 2b6a3dc8d0..4f94fa4f4c 100644 --- a/biz.aQute.bndlib/src/aQute/bnd/build/model/EE.java +++ b/biz.aQute.bndlib/src/aQute/bnd/build/model/EE.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.EnumSet; import java.util.Optional; +import java.util.OptionalInt; import aQute.bnd.exceptions.Exceptions; import aQute.bnd.header.Parameters; @@ -145,6 +146,21 @@ public Version getCapabilityVersion() { return capabilityVersion; } + /** + * @return the java release target corresponding to this EE + */ + public OptionalInt getReleaseTarget() { + Version version = getCapabilityVersion(); + int major = version.getMajor(); + if (major > 1) { + return OptionalInt.of(major); + } + if (major == 1 && version.getMinor() > 5) { + return OptionalInt.of(version.getMinor()); + } + return OptionalInt.empty(); + } + public static Optional highestFromTargetVersion(String targetVersion) { Version version = Optional.of(targetVersion) .map(Analyzer::cleanupVersion) diff --git a/biz.aQute.bndlib/src/aQute/bnd/build/model/package-info.java b/biz.aQute.bndlib/src/aQute/bnd/build/model/package-info.java index 9bbcb86f9a..14c0b975dd 100644 --- a/biz.aQute.bndlib/src/aQute/bnd/build/model/package-info.java +++ b/biz.aQute.bndlib/src/aQute/bnd/build/model/package-info.java @@ -1,4 +1,4 @@ -@Version("4.1.0") +@Version("4.2.0") package aQute.bnd.build.model; import org.osgi.annotation.versioning.Version;