com.rabbitmq.utility.ValueOrException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of amqp-client Show documentation
Show all versions of amqp-client Show documentation
The RabbitMQ Java client library allows Java applications to interface with RabbitMQ.
// Copyright (c) 2007-2020 VMware, Inc. or its affiliates. All rights reserved.
//
// This software, the RabbitMQ Java client library, is triple-licensed under the
// Mozilla Public License 2.0 ("MPL"), the GNU General Public License version 2
// ("GPL") and the Apache License version 2 ("ASL"). For the MPL, please see
// LICENSE-MPL-RabbitMQ. For the GPL, please see LICENSE-GPL2. For the ASL,
// please see LICENSE-APACHE2.
//
// This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
// either express or implied. See the LICENSE file for specific language governing
// rights and limitations of this software.
//
// If you have any questions regarding licensing, please contact us at
// [email protected].
package com.rabbitmq.utility;
public class ValueOrException> {
private final boolean _useValue;
private final V _value;
private final E _exception;
/**
* dual-purpose private constructor: one will be null, and the flag tells which to use
* @param value the value to wrap, if applicable
* @param exception the exception to wrap, if applicable
* @param useValue true if we should use the value, rather than the exception
*/
private ValueOrException(V value, E exception, boolean useValue) {
_useValue = useValue;
if (useValue) {
_value = value;
_exception = null;
} else {
_value = null;
_exception = exception;
}
}
/**
* Factory method for values
* @param value the value to wrap as a ValueOrException
* @return the wrapped value
*/
public static > ValueOrException makeValue(V value) {
return new ValueOrException(value, null, true);
}
/**
* Factory method for exceptions
* @param exception the exception to wrap as a ValueOrException
* @return the wrapped exception
*/
public static > ValueOrException makeException(E exception) {
return new ValueOrException(null, exception, false);
}
/** Retrieve value or throw exception
* @return the wrapped value, if it's a value
* @throws E the wrapped exception, if it's an exception
*/
public V getValue() throws E {
if (_useValue) {
return _value;
} else {
throw Utility.fixStackTrace(_exception);
}
}
}