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);
     }
 }

Reply via email to