From 9c9da42129ceca6334662cc783f952e0eaadf627 Mon Sep 17 00:00:00 2001
From: Greg Wilkins
Date: Thu, 18 Aug 2016 15:58:25 +1000
Subject: [PATCH 1/2] Fixes #851 - MBeanContainer no longer unregisters MBeans
when "stopped".
MBeanContainer now implements Destroyable, so calling Server.destroy()
unregisters the MBeans.
---
.../src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java
index 32fc5c53781..823dd5145ef 100644
--- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java
+++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java
@@ -34,6 +34,7 @@ import javax.management.ObjectName;
import org.eclipse.jetty.util.component.Container;
import org.eclipse.jetty.util.component.ContainerLifeCycle;
+import org.eclipse.jetty.util.component.Destroyable;
import org.eclipse.jetty.util.component.Dumpable;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -41,7 +42,7 @@ import org.eclipse.jetty.util.log.Logger;
/**
* Container class for the MBean instances
*/
-public class MBeanContainer implements Container.InheritedListener, Dumpable
+public class MBeanContainer implements Container.InheritedListener, Dumpable, Destroyable
{
private final static Logger LOG = Log.getLogger(MBeanContainer.class.getName());
private final static ConcurrentMap __unique = new ConcurrentHashMap();
@@ -268,6 +269,7 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable
return ContainerLifeCycle.dump(this);
}
+ @Override
public void destroy()
{
for (ObjectName oname : _beans.values())
From b70f0fdf15615e5ee735525e8eed32a4cf4ca718 Mon Sep 17 00:00:00 2001
From: Grzegorz Grzybek
Date: Fri, 26 Aug 2016 10:44:23 +0200
Subject: [PATCH 2/2] Issue #868 - Use static Throwables without
backtrace/stackTrace
Signed-off-by: Grzegorz Grzybek
---
.../continuation/ContinuationThrowable.java | 7 ++-
.../eclipse/jetty/util/BlockingCallback.java | 6 +--
.../eclipse/jetty/util/ConstantThrowable.java | 43 +++++++++++++++++++
.../eclipse/jetty/util/FutureCallback.java | 2 +-
.../org/eclipse/jetty/util/FuturePromise.java | 2 +-
.../jetty/util/SharedBlockingCallback.java | 31 +++----------
6 files changed, 57 insertions(+), 34 deletions(-)
create mode 100644 jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java
diff --git a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationThrowable.java b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationThrowable.java
index e32717cabec..a6be363f136 100644
--- a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationThrowable.java
+++ b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationThrowable.java
@@ -43,4 +43,9 @@ package org.eclipse.jetty.continuation;
*
*/
public class ContinuationThrowable extends Error
-{}
+{
+ public ContinuationThrowable()
+ {
+ super(null, null, false, false);
+ }
+}
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingCallback.java b/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingCallback.java
index 8601d8e9d16..74b77ffff9e 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingCallback.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingCallback.java
@@ -36,11 +36,7 @@ public class BlockingCallback implements Callback
{
private static final Logger LOG = Log.getLogger(BlockingCallback.class);
- private static Throwable SUCCEEDED=new Throwable()
- {
- @Override
- public String toString() { return "SUCCEEDED"; }
- };
+ private static Throwable SUCCEEDED = new ConstantThrowable("SUCCEEDED");
private final CountDownLatch _latch = new CountDownLatch(1);
private final AtomicReference _state = new AtomicReference<>();
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java
new file mode 100644
index 00000000000..b368c90f909
--- /dev/null
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java
@@ -0,0 +1,43 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.util;
+
+/**
+ * A {@link Throwable} that may be used in static contexts. It uses Java 7
+ * constructor that prevents setting stackTrace inside exception object.
+ */
+public class ConstantThrowable extends Throwable {
+
+ private String name;
+
+ public ConstantThrowable() {
+ this(null);
+ }
+
+ public ConstantThrowable(String name) {
+ super(null, null, false, false);
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+}
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java b/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java
index 247535cb284..72ea4828a53 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java
@@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class FutureCallback implements Future,Callback
{
- private static Throwable COMPLETED=new Throwable();
+ private static Throwable COMPLETED=new ConstantThrowable();
private final AtomicBoolean _done=new AtomicBoolean(false);
private final CountDownLatch _latch=new CountDownLatch(1);
private Throwable _cause;
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java b/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java
index 09a770b2a0a..a471407f86c 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java
@@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class FuturePromise implements Future,Promise
{
- private static Throwable COMPLETED=new Throwable();
+ private static Throwable COMPLETED=new ConstantThrowable();
private final AtomicBoolean _done=new AtomicBoolean(false);
private final CountDownLatch _latch=new CountDownLatch(1);
private Throwable _cause;
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java b/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java
index 5b4e5a312eb..feebed87dcd 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java
@@ -54,33 +54,12 @@ public class SharedBlockingCallback
final Condition _idle = _lock.newCondition();
final Condition _complete = _lock.newCondition();
-
- private static Throwable IDLE = new Throwable()
- {
- @Override
- public String toString()
- {
- return "IDLE";
- }
- };
- private static Throwable SUCCEEDED = new Throwable()
- {
- @Override
- public String toString()
- {
- return "SUCCEEDED";
- }
- };
-
- private static Throwable FAILED = new Throwable()
- {
- @Override
- public String toString()
- {
- return "FAILED";
- }
- };
+ private static Throwable IDLE = new ConstantThrowable("IDLE");
+
+ private static Throwable SUCCEEDED = new ConstantThrowable("SUCCEEDED");
+
+ private static Throwable FAILED = new ConstantThrowable("FAILED");
Blocker _blocker;