mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 23:58:06 +01:00
some accounts classes refactorings
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package org.whispersystems.textsecuregcm.util;
|
||||
|
||||
import java.util.concurrent.CompletionException;
|
||||
|
||||
public final class ExceptionUtils {
|
||||
|
||||
private ExceptionUtils() {
|
||||
// utility class
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the cause of a {@link CompletionException}. If the given {@code throwable} is a
|
||||
* {@code CompletionException}, this method will recursively iterate through its causal chain until it finds the first
|
||||
* cause that is not a {@code CompletionException}. If the last {@code CompletionException} in the causal chain has a
|
||||
* {@code null} cause, then this method returns the last {@code CompletionException} in the chain. If the given
|
||||
* {@code throwable} is not a {@code CompletionException}, then this method returns the original {@code throwable}.
|
||||
*
|
||||
* @param throwable the throwable to "unwrap"
|
||||
*
|
||||
* @return the first entity in the given {@code throwable}'s causal chain that is not a {@code CompletionException}
|
||||
*/
|
||||
public static Throwable unwrap(Throwable throwable) {
|
||||
while (throwable instanceof CompletionException e && throwable.getCause() != null) {
|
||||
throwable = e.getCause();
|
||||
}
|
||||
return throwable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps the given {@code throwable} in a {@link CompletionException} unless the given {@code throwable} is alreadt
|
||||
* a {@code CompletionException}, in which case this method returns the original throwable.
|
||||
*
|
||||
* @param throwable the throwable to wrap in a {@code CompletionException}
|
||||
*/
|
||||
public static CompletionException wrap(final Throwable throwable) {
|
||||
return throwable instanceof CompletionException completionException
|
||||
? completionException
|
||||
: new CompletionException(throwable);
|
||||
}
|
||||
}
|
||||
@@ -10,20 +10,25 @@ import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class SystemMapper {
|
||||
|
||||
private static final ObjectMapper mapper = new ObjectMapper();
|
||||
private static final ObjectMapper MAPPER = build();
|
||||
|
||||
static {
|
||||
|
||||
@Nonnull
|
||||
public static ObjectMapper getMapper() {
|
||||
return MAPPER;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private static ObjectMapper build() {
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
|
||||
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
|
||||
mapper.registerModule(new JavaTimeModule());
|
||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
}
|
||||
|
||||
public static ObjectMapper getMapper() {
|
||||
return mapper;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user