This is an automated email from the ASF dual-hosted git repository.
dblevins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git
The following commit(s) were added to refs/heads/master by this push:
new 50aca7f More aggressively rename datestamped versions to SNAPSHOT
new 2c7ac38 Merge branch 'master' of github.com:apache/tomee
50aca7f is described below
commit 50aca7f187e803ea837fe11e54d335e602fcfbde
Author: David Blevins <[email protected]>
AuthorDate: Wed Apr 21 15:09:51 2021 -0700
More aggressively rename datestamped versions to SNAPSHOT
---
tomee/apache-tomee/pom.xml | 4 ++
.../java/org/apache/tomee/installer/Installer.java | 71 ++++++++++++++++++++--
.../org/apache/tomee/installer/InstallerTest.java | 38 +++++++++++-
3 files changed, 106 insertions(+), 7 deletions(-)
diff --git a/tomee/apache-tomee/pom.xml b/tomee/apache-tomee/pom.xml
index 86034dd..c35dea4 100644
--- a/tomee/apache-tomee/pom.xml
+++ b/tomee/apache-tomee/pom.xml
@@ -333,6 +333,7 @@
<properties>
<tomee.workdir>${webprofile.work-dir}</tomee.workdir>
<tomee.webapp>tomee-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version},
${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project:
project, ant: ant, properties: properties).execute()
@@ -349,6 +350,7 @@
<properties>
<tomee.workdir>${plus.work-dir}</tomee.workdir>
<tomee.webapp>tomee-plus-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version},
${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project:
project, ant: ant, properties: properties).execute()
@@ -365,6 +367,7 @@
<properties>
<tomee.workdir>${plume.work-dir}</tomee.workdir>
<tomee.webapp>tomee-plume-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version},
${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project:
project, ant: ant, properties: properties).execute()
@@ -381,6 +384,7 @@
<properties>
<tomee.workdir>${microprofile.work-dir}</tomee.workdir>
<tomee.webapp>tomee-microprofile-webapp</tomee.webapp>
+ <remove.datestamp>${tomee.version}, ${project.version},
${cxf.version}</remove.datestamp>
</properties>
<source>
new commands.SetupCommand(pom: this, log: log, project:
project, ant: ant, properties: properties).execute()
diff --git
a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index a6e6ce6..a5e2a60 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -24,6 +24,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Function;
import java.util.jar.JarFile;
public class Installer implements InstallerInterface {
@@ -285,7 +286,54 @@ public class Installer implements InstallerInterface {
*/
private void moveLibs() {
- final String tomeeVersion = System.getProperty("tomee.version");
+
+ /*
+ * When there are several SNAPSHOT versions of a jar available, Maven
will often copy
+ * the jar into the assembly as
openejb-core-8.0.7-20210418.032600-163.jar rather than
+ * openejb-core-8.0.7-SNAPSHOT.jar. This breaks our TCK setup which
expects it can
+ * point at jars like "lib/openejb-core-$version.jar", where $version
is something like
+ * "8.0.7-SNAPSHOT".
+ *
+ * If we see that for any jar containing our version we will rename it
from the date
+ * stamped version to the "-SNAPSHOT" version.
+ */
+
+ Function<String, String> normalizeVersion = Function.identity();
+ if (properties.containsKey("remove.datestamp")) {
+ final String removeDatestamp = properties.get("remove.datestamp");
+ final String[] strings = removeDatestamp.split(" *, *");
+ for (final String string : strings) {
+ if (!string.contains("-SNAPSHOT")) continue;
+ normalizeVersion =
normalizeVersion.andThen(removeDatestamp(string.trim()));
+ }
+ }
+
+ /*
+ * In TomEE 9 we produce the final server zip by bytecode transforming
the classes
+ * so they use jakarta instead of javax. We do this by inputting the
TomEE 8.x
+ * jar and running them through a transformer and creating a new TomEE
9.x zip.
+ *
+ * In this process we also want to rename any libraries from 8.x to 9.x
+ */
+ if (properties.containsKey("rename.version")) {
+ final String renameVersion = properties.get("rename.version");
+
+ final String[] split = renameVersion.split(" *, *");
+ if (split.length != 2) {
+ throw new IllegalStateException("rename.version should be in
the form of " +
+ "'version1, version2' for example '8.0.7, 9.0.0'.
Found '" + renameVersion + "'");
+ }
+
+ final String from = split[0].trim();
+ final String to = split[1].trim();
+
+ normalizeVersion = normalizeVersion
+ .andThen(removeDatestamp(from))
+ .andThen(removeDatestamp(to))
+ .andThen(changeVersion(from, to));
+
+ }
+
final File libs = paths.getCatalinaLibDir();
final File[] files = paths.getOpenEJBLibDir().listFiles();
@@ -295,7 +343,7 @@ public class Installer implements InstallerInterface {
continue;
}
- final String name = normalizeVersion(tomeeVersion,
file.getName());
+ final String name = normalizeVersion.apply(file.getName());
if (!name.endsWith(".jar")) {
continue;
@@ -315,6 +363,17 @@ public class Installer implements InstallerInterface {
}
}
+ public static Function<String, String> removeDatestamp(final String
version) {
+ return jarName -> removeDatestamp(version, jarName);
+ }
+
+ public static Function<String, String> changeVersion(final String from,
final String to) {
+ return jarName -> {
+ if (!jarName.endsWith(from + ".jar")) return jarName;
+ return jarName.replace(from + ".jar", to + ".jar");
+ };
+ }
+
/**
* Maven will occasionally give a datestamped version of a snapshot. Our
TCK
* test harness and likely tooling others have expects the version number
to
@@ -326,10 +385,10 @@ public class Installer implements InstallerInterface {
* If we see any Maven datestamps on our jars where we are expecting
SNAPSHOT,
* rename the jar to the expected "-SNAPSHOT" name.
*/
- public static String normalizeVersion(final String tomeeVersion, final
String jarName) {
- if (!tomeeVersion.contains("-SNAPSHOT")) return jarName;
+ public static String removeDatestamp(final String version, final String
jarName) {
+ if (!version.contains("-SNAPSHOT")) return jarName;
- final String versionNumber = tomeeVersion.replaceAll("-SNAPSHOT", "");
+ final String versionNumber = version.replaceAll("-SNAPSHOT", "");
if (!jarName.contains(versionNumber)) return jarName;
// Replace 8.0.7-20210418.035728-165 with 8.0.7-SNAPSHOT
@@ -340,7 +399,7 @@ public class Installer implements InstallerInterface {
// replace the 'd' with '[0-9]'
+ "-dddddddd.dddddd-ddd".replace("d", "[0-9]");
- return jarName.replaceAll(regex, tomeeVersion);
+ return jarName.replaceAll(regex, version);
}
/*
private void addJavaeeInEndorsed() {
diff --git
a/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
b/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
index 7ccc2df..6e3ce9e 100644
---
a/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
+++
b/tomee/tomee-common/src/test/java/org/apache/tomee/installer/InstallerTest.java
@@ -58,8 +58,44 @@ public class InstallerTest {
}
+ @Test
+ public void normalizeOddVersion() {
+
+ assertVersion("openejb-api-8.0.7-SNAPSHOT.jar",
"openejb-api-8.0.7-20210418.032427-163.jar");
+ assertVersion("openejb-client-8.0.7-SNAPSHOT.jar",
"openejb-client-8.0.7-20210418.032621-163.jar");
+ assertVersion("openejb-core-8.0.7-SNAPSHOT.jar",
"openejb-core-8.0.7-20210418.032600-163.jar");
+ assertVersion("openejb-core-eclipselink-8.0.7-SNAPSHOT.jar",
"openejb-core-eclipselink-8.0.7-20210418.033130-163.jar");
+ assertVersion("openejb-cxf-8.0.7-SNAPSHOT.jar",
"openejb-cxf-8.0.7-20210418.032810-163.jar");
+ assertVersion("openejb-cxf-rs-8.0.7-SNAPSHOT.jar",
"openejb-cxf-rs-8.0.7-20210418.032736-163.jar");
+ assertVersion("openejb-cxf-transport-8.0.7-SNAPSHOT.jar",
"openejb-cxf-transport-8.0.7-20210418.032721-163.jar");
+ assertVersion("openejb-derbynet-8.0.7-SNAPSHOT.jar",
"openejb-derbynet-8.0.7-SNAPSHOT.jar");
+ assertVersion("openejb-ejbd-8.0.7-SNAPSHOT.jar",
"openejb-ejbd-8.0.7-20210418.032656-163.jar");
+ assertVersion("openejb-hsql-8.0.7-SNAPSHOT.jar",
"openejb-hsql-8.0.7-20210418.032814-163.jar");
+ assertVersion("openejb-http-8.0.7-SNAPSHOT.jar",
"openejb-http-8.0.7-20210418.032703-163.jar");
+ assertVersion("openejb-javaagent-8.0.7-SNAPSHOT.jar",
"openejb-javaagent-8.0.7-20210418.032436-163.jar");
+ assertVersion("openejb-javaagent.jar", "openejb-javaagent.jar");
+ assertVersion("openejb-jee-8.0.7-SNAPSHOT.jar",
"openejb-jee-8.0.7-20210418.032447-163.jar");
+ assertVersion("openejb-jee-accessors-8.0.7-SNAPSHOT.jar",
"openejb-jee-accessors-8.0.7-20210418.032458-163.jar");
+ assertVersion("openejb-jpa-integration-8.0.7-SNAPSHOT.jar",
"openejb-jpa-integration-8.0.7-20210418.032423-164.jar");
+ assertVersion("openejb-loader-8.0.7-SNAPSHOT.jar",
"openejb-loader-8.0.7-20210418.032432-163.jar");
+ assertVersion("openejb-rest-8.0.7-SNAPSHOT.jar",
"openejb-rest-8.0.7-20210418.032713-163.jar");
+ assertVersion("openejb-server-8.0.7-SNAPSHOT.jar",
"openejb-server-8.0.7-20210418.032647-163.jar");
+ assertVersion("openejb-webservices-8.0.7-SNAPSHOT.jar",
"openejb-webservices-8.0.7-20210418.032756-163.jar");
+ assertVersion("tomee-catalina-8.0.7-SNAPSHOT.jar",
"tomee-catalina-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-common-8.0.7-SNAPSHOT.jar",
"tomee-common-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-config-8.0.7-SNAPSHOT.jar",
"tomee-config-8.0.7-20210418.032613-163.jar");
+ assertVersion("tomee-jaxrs-8.0.7-SNAPSHOT.jar",
"tomee-jaxrs-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-jdbc-8.0.7-SNAPSHOT.jar",
"tomee-jdbc-8.0.7-20210418.032642-163.jar");
+ assertVersion("tomee-loader-8.0.7-SNAPSHOT.jar",
"tomee-loader-8.0.7-SNAPSHOT.jar");
+ assertVersion("tomee-mojarra-8.0.7-SNAPSHOT.jar",
"tomee-mojarra-8.0.7-20210418.032823-163.jar");
+ assertVersion("tomee-plume-webapp-9.0.0-M7-SNAPSHOT.jar",
"tomee-plume-webapp-9.0.0-M7-SNAPSHOT.jar");
+ assertVersion("tomee-security-8.0.7-SNAPSHOT.jar",
"tomee-security-8.0.7-20210418.033034-163.jar");
+ assertVersion("tomee-webservices-8.0.7-SNAPSHOT.jar",
"tomee-webservices-8.0.7-20210418.032838-163.jar");
+
+ }
+
private static void assertVersion(final String expected, final String
jarName) {
- final String s = Installer.normalizeVersion("8.0.7-SNAPSHOT", jarName);
+ final String s = Installer.removeDatestamp("8.0.7-SNAPSHOT", jarName);
assertEquals(expected, s);
}
}