Merge pull request #869 from grgrzybek/jetty-9.2.x-868

Issue #868 - Use static Throwables without backtrace/stackTrace
This commit is contained in:
Jan Bartel 2016-08-31 15:22:59 +10:00 committed by GitHub
commit c07d842f06
6 changed files with 57 additions and 34 deletions

View File

@ -43,4 +43,9 @@ package org.eclipse.jetty.continuation;
* </p>
*/
public class ContinuationThrowable extends Error
{}
{
public ContinuationThrowable()
{
super(null, null, false, false);
}
}

View File

@ -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<Throwable> _state = new AtomicReference<>();

View File

@ -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;
}
}

View File

@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class FutureCallback implements Future<Void>,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;

View File

@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class FuturePromise<C> implements Future<C>,Promise<C>
{
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;

View File

@ -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;