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 <[email protected]>
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.
         *

Reply via email to