You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2021/09/29 14:44:21 UTC

[juneau] branch master updated: Shutdown message API

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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 95fa74d  Shutdown message API
95fa74d is described below

commit 95fa74da7bbd8653a84896f1dd048c00c2d943a9
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Wed Sep 29 10:43:14 2021 -0400

    Shutdown message API
---
 .../java/org/apache/juneau/BeanContextBuilder.java |  3 +++
 .../java/org/apache/juneau/internal/IOUtils.java   |  7 +------
 .../org/apache/juneau/internal/SystemUtils.java    | 24 ++++++++++++++++++++++
 3 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 192db38..5f64740 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -60,6 +60,9 @@ public class BeanContextBuilder extends ContextBuilder {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	private static final ConcurrentHashMap<HashKey,BeanContext> CACHE = new ConcurrentHashMap<>();
+	static {
+		SystemUtils.shutdownMessage(()->"Bean contexts created: " + CACHE.size());
+	}
 
 	//-----------------------------------------------------------------------------------------------------------------
 	// Instance
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
index 1f099db..53f93b3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
@@ -40,12 +40,7 @@ public final class IOUtils {
 	static final AtomicInteger cacheHits = new AtomicInteger();
 
 	static {
-		Runtime.getRuntime().addShutdownHook(new Thread() {
-			@Override
-			public void run() {
-				System.out.println("I/O buffer cache hits: " + cacheHits.get());
-			}
-		});
+		SystemUtils.shutdownMessage(()->"I/O buffer cache hits: " + cacheHits.get());
 	}
 
 	/** Reusable empty reader. */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
index ce47e20..b66ce15 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/SystemUtils.java
@@ -12,11 +12,35 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.internal;
 
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+
 /**
  * System utilities.
  */
 public class SystemUtils {
 
+	static final List<Supplier<String>> SHUTDOWN_MESSAGES = new CopyOnWriteArrayList<>();
+	static {
+		Runtime.getRuntime().addShutdownHook(new Thread() {
+			@Override
+			public void run() {
+				if (! Boolean.getBoolean("SystemUtils.quiet"))
+				SHUTDOWN_MESSAGES.forEach(x -> System.out.println(x.get()));
+			}
+		});
+	}
+
+	/**
+	 * Adds a console message to display when the JVM shuts down.
+	 *
+	 * @param message The message to display.
+	 */
+	public static void shutdownMessage(Supplier<String> message) {
+		SHUTDOWN_MESSAGES.add(message);
+	}
+
 	/**
 	 * Returns the first non-<jk>null</jk> system property.
 	 *