This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch TOMEE-4014
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 629450578d0897ae5c126ea2e2a84b7089b3aeee
Author: Jonathan Gallimore <[email protected]>
AuthorDate: Fri Dec 9 13:54:39 2022 +0000

    TOMEE-4014 alternative approach that does not touch ServerInfo.properties 
in catalina.jar, and works around the reflection issue with the final modifier
---
 tomee/apache-tomee/pom.xml                         |  30 -----
 .../java/org/apache/catalina/util/ServerInfo.java  | 137 +++++++++++++++++++++
 .../org/apache/catalina/util/ServerInfo.properties |  18 ---
 3 files changed, 137 insertions(+), 48 deletions(-)

diff --git a/tomee/apache-tomee/pom.xml b/tomee/apache-tomee/pom.xml
index 03d41d86cc..97098ad8b0 100644
--- a/tomee/apache-tomee/pom.xml
+++ b/tomee/apache-tomee/pom.xml
@@ -515,31 +515,6 @@
             </executions>
           </plugin>
 
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-antrun-plugin</artifactId>
-            <executions>
-              <execution>
-                <phase>package</phase>
-                <goals>
-                  <goal>run</goal>
-                </goals>
-                <configuration>
-                  <target>
-                    <tstamp>
-                      <format property="today" pattern="MMM d yyyy" 
locale="en" timezone="UTC" />
-                      <format property="tstamp" pattern="HH:mm:ss" locale="en" 
timezone="UTC" />
-                    </tstamp>
-                    <copy 
file="src/template/patch/java/org/apache/catalina/util/ServerInfo.properties" 
tofile="target/classes/ServerInfo.properties" />
-                    <replace file="target/classes/ServerInfo.properties" 
token="@TOMCAT-VERSION-REPLACED-BY-MAVEN@" value="${tomcat.version}" />
-                    <replace file="target/classes/ServerInfo.properties" 
token="@TOMEE-VERSION-REPLACED-BY-MAVEN@" value="${tomee.version}" />
-                    <replace file="target/classes/ServerInfo.properties" 
token="@DATE-REPLACED-BY-MAVEN@" value="${today} ${tstamp} UTC" />
-                  </target>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-
           <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>build-helper-maven-plugin</artifactId>
@@ -604,11 +579,6 @@
               
<select>apache-tomee-(plus|plume|webprofile|microprofile).*\.zip</select>
               <skipTransform>true</skipTransform>
               <createTarGz>true</createTarGz>
-              <replace>
-                <resources>
-                  
<ServerInfo.properties>${project.build.outputDirectory}/ServerInfo.properties</ServerInfo.properties>
-                </resources>
-              </replace>
             </configuration>
             <executions>
               <execution>
diff --git 
a/tomee/apache-tomee/src/patch/java/org/apache/catalina/util/ServerInfo.java 
b/tomee/apache-tomee/src/patch/java/org/apache/catalina/util/ServerInfo.java
new file mode 100644
index 0000000000..3bfc21b404
--- /dev/null
+++ b/tomee/apache-tomee/src/patch/java/org/apache/catalina/util/ServerInfo.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.catalina.util;
+
+
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.tomcat.util.ExceptionUtils;
+
+
+/**
+ * Simple utility module to make it easy to plug in the server identifier
+ * when integrating Tomcat.
+ *
+ * @author Craig R. McClanahan
+ */
+public class ServerInfo {
+
+
+    // ------------------------------------------------------- Static Variables
+
+
+    /**
+     * The server information String with which we identify ourselves.
+     */
+    private static final String serverInfo;
+
+    /**
+     * The server built String.
+     */
+    private static final String serverBuilt;
+
+    /**
+     * The server's version number String.
+     */
+    private static final String serverNumber;
+
+    static {
+
+        String info = null;
+        String built = null;
+        String number = null;
+
+        Properties props = new Properties();
+        try (InputStream is = ServerInfo.class.getResourceAsStream
+                ("/org/apache/catalina/util/ServerInfo.properties")) {
+            props.load(is);
+            info = props.getProperty("server.info");
+            built = props.getProperty("server.built");
+            number = props.getProperty("server.number");
+        } catch (Throwable t) {
+            ExceptionUtils.handleThrowable(t);
+        }
+        if (info == null || info.equals("Apache Tomcat/@VERSION@")) {
+            info = "Apache Tomcat/9.0.x-dev";
+        }
+        if (built == null || built.equals("@VERSION_BUILT@")) {
+            built = "unknown";
+        }
+        if (number == null || number.equals("@VERSION_NUMBER@")) {
+            number = "9.0.x";
+        }
+
+        try {
+            final int slash = info.indexOf('/');
+            Class<?> versionClass = 
Class.forName("org.apache.openejb.util.OpenEjbVersion");
+            Object instance = 
versionClass.getDeclaredMethod("get").invoke(null);
+            final String tomeeVersion = (String) 
versionClass.getDeclaredMethod("getVersion").invoke(instance);
+
+            info = info.substring(0, slash) + " (TomEE)" + 
info.substring(slash) + " (" + tomeeVersion + ")";
+        } catch (Throwable t) {
+            // ignore
+            t.printStackTrace();
+        }
+
+        serverInfo = info;
+        serverBuilt = built;
+        serverNumber = number;
+    }
+
+
+    // --------------------------------------------------------- Public Methods
+
+
+    /**
+     * @return the server identification for this version of Tomcat.
+     */
+    public static String getServerInfo() {
+        return serverInfo;
+    }
+
+    /**
+     * @return the server built time for this version of Tomcat.
+     */
+    public static String getServerBuilt() {
+        return serverBuilt;
+    }
+
+    /**
+     * @return the server's version number.
+     */
+    public static String getServerNumber() {
+        return serverNumber;
+    }
+
+    public static void main(String args[]) {
+        System.out.println("Server version: " + getServerInfo());
+        System.out.println("Server built:   " + getServerBuilt());
+        System.out.println("Server number:  " + getServerNumber());
+        System.out.println("OS Name:        " +
+                System.getProperty("os.name"));
+        System.out.println("OS Version:     " +
+                System.getProperty("os.version"));
+        System.out.println("Architecture:   " +
+                System.getProperty("os.arch"));
+        System.out.println("JVM Version:    " +
+                System.getProperty("java.runtime.version"));
+        System.out.println("JVM Vendor:     " +
+                System.getProperty("java.vm.vendor"));
+    }
+
+}
\ No newline at end of file
diff --git 
a/tomee/apache-tomee/src/template/patch/java/org/apache/catalina/util/ServerInfo.properties
 
b/tomee/apache-tomee/src/template/patch/java/org/apache/catalina/util/ServerInfo.properties
deleted file mode 100644
index affc166345..0000000000
--- 
a/tomee/apache-tomee/src/template/patch/java/org/apache/catalina/util/ServerInfo.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-server.info=Apache Tomcat (TomEE)/@TOMCAT-VERSION-REPLACED-BY-MAVEN@ 
(@TOMEE-VERSION-REPLACED-BY-MAVEN@)
-server.number=@[email protected]
-server.built=@DATE-REPLACED-BY-MAVEN@

Reply via email to