From 124db32a4da10c3ea678536e61fbdb3fc1ad9f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Wed, 24 Aug 2022 19:25:21 +0200 Subject: [PATCH] Add EE.getRelease() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christoph Läubrich --- .../test/test/model/EETest.java | 43 +++++++++++++++++++ .../src/aQute/bnd/build/model/EE.java | 16 +++++++ .../aQute/bnd/build/model/package-info.java | 2 +- 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/biz.aQute.bndlib.tests/test/test/model/EETest.java b/biz.aQute.bndlib.tests/test/test/model/EETest.java index 42d898d493..c9b251807a 100644 --- a/biz.aQute.bndlib.tests/test/test/model/EETest.java +++ b/biz.aQute.bndlib.tests/test/test/model/EETest.java @@ -2,6 +2,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.Arrays; import java.util.stream.Stream; @@ -90,6 +92,47 @@ public void checkEEHasCompatible(EE ee) throws Exception { assertThat(compatible).isNotEmpty(); } + @ParameterizedTest(name = "Validate valid release target foe EEs exist for {arguments}") + @ArgumentsSource(EEsArgumentsProvider.class) + @DisplayName("Validate each EEs has valid release target") + 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 : + assertTrue(ee.getReleaseTarget() + .isEmpty()); + break; + case JavaSE_1_6 : + assertEquals(6, ee.getReleaseTarget() + .getAsInt()); + break; + case JavaSE_1_7 : + assertEquals(7, ee.getReleaseTarget() + .getAsInt()); + break; + case JavaSE_1_8 : + case JavaSE_compact1_1_8 : + case JavaSE_compact2_1_8 : + case JavaSE_compact3_1_8 : + assertEquals(8, ee.getReleaseTarget() + .getAsInt()); + break; + + default : + assertEquals(ee.getCapabilityVersion() + .getMajor(), + ee.getReleaseTarget() + .getAsInt()); + 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..ee67090b80 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 > 8) { + 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;