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@
