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.
*