com.google.inject.ConfigurationException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of guice Show documentation
Show all versions of guice Show documentation
Guice implementation with named modules for Java 11+
package com.google.inject;
import com.google.common.collect.ImmutableSet;
import com.google.inject.internal.Messages;
import com.google.inject.spi.Message;
import java.util.Collection;
import static com.google.common.base.Preconditions.checkState;
/**
* Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
* scope is found. Clients should catch this exception, log it, and stop execution.
*
*/
@SuppressWarnings("serial")
public final class ConfigurationException extends RuntimeException {
private final ImmutableSet messages;
private Object partialValue = null;
/**
* Creates a ConfigurationException containing {@code messages}.
*/
public ConfigurationException(Iterable messages) {
this.messages = ImmutableSet.copyOf(messages);
initCause(Messages.getOnlyCause(this.messages));
}
/**
* Returns a copy of this configuration exception with the specified partial value.
*/
public ConfigurationException withPartialValue(Object partialValue) {
checkState(this.partialValue == null,
"Can't clobber existing partial value %s with %s", this.partialValue, partialValue);
ConfigurationException result = new ConfigurationException(messages);
result.partialValue = partialValue;
return result;
}
/**
* Returns messages for the errors that caused this exception.
*/
public Collection getErrorMessages() {
return messages;
}
/**
* Returns a value that was only partially computed due to this exception. The caller can use
* this while collecting additional configuration problems.
*
* @return the partial value, or {@code null} if none was set. The type of the partial value is
* specified by the throwing method.
*/
@SuppressWarnings("unchecked") // this is *extremely* unsafe. We trust the caller here.
public E getPartialValue() {
return (E) partialValue;
}
@Override
public String getMessage() {
return Messages.formatMessages("Guice configuration errors", messages);
}
}