84 lines
3.4 KiB
Java
84 lines
3.4 KiB
Java
package com.google.firebase.encoders.proto;
|
|
|
|
import com.google.firebase.encoders.EncodingException;
|
|
import com.google.firebase.encoders.ObjectEncoder;
|
|
import com.google.firebase.encoders.ObjectEncoderContext;
|
|
import com.google.firebase.encoders.ValueEncoder;
|
|
import com.google.firebase.encoders.config.Configurator;
|
|
import com.google.firebase.encoders.config.EncoderConfig;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public class ProtobufEncoder {
|
|
private final ObjectEncoder<Object> fallbackEncoder;
|
|
private final Map<Class<?>, ObjectEncoder<?>> objectEncoders;
|
|
private final Map<Class<?>, ValueEncoder<?>> valueEncoders;
|
|
|
|
public ProtobufEncoder(Map<Class<?>, ObjectEncoder<?>> map, Map<Class<?>, ValueEncoder<?>> map2, ObjectEncoder<Object> objectEncoder) {
|
|
this.objectEncoders = map;
|
|
this.valueEncoders = map2;
|
|
this.fallbackEncoder = objectEncoder;
|
|
}
|
|
|
|
public static Builder builder() {
|
|
return new Builder();
|
|
}
|
|
|
|
public void encode(Object obj, OutputStream outputStream) throws IOException {
|
|
new ProtobufDataEncoderContext(outputStream, this.objectEncoders, this.valueEncoders, this.fallbackEncoder).encode(obj);
|
|
}
|
|
|
|
/* loaded from: classes3.dex */
|
|
public static final class Builder implements EncoderConfig<Builder> {
|
|
private static final ObjectEncoder<Object> DEFAULT_FALLBACK_ENCODER = new a(1);
|
|
private final Map<Class<?>, ObjectEncoder<?>> objectEncoders = new HashMap();
|
|
private final Map<Class<?>, ValueEncoder<?>> valueEncoders = new HashMap();
|
|
private ObjectEncoder<Object> fallbackEncoder = DEFAULT_FALLBACK_ENCODER;
|
|
|
|
public static /* synthetic */ void lambda$static$0(Object obj, ObjectEncoderContext objectEncoderContext) throws IOException {
|
|
throw new EncodingException("Couldn't find encoder for type " + obj.getClass().getCanonicalName());
|
|
}
|
|
|
|
public ProtobufEncoder build() {
|
|
return new ProtobufEncoder(new HashMap(this.objectEncoders), new HashMap(this.valueEncoders), this.fallbackEncoder);
|
|
}
|
|
|
|
public Builder configureWith(Configurator configurator) {
|
|
configurator.configure(this);
|
|
return this;
|
|
}
|
|
|
|
public Builder registerFallbackEncoder(ObjectEncoder<Object> objectEncoder) {
|
|
this.fallbackEncoder = objectEncoder;
|
|
return this;
|
|
}
|
|
|
|
@Override // com.google.firebase.encoders.config.EncoderConfig
|
|
public <U> Builder registerEncoder(Class<U> cls, ObjectEncoder<? super U> objectEncoder) {
|
|
this.objectEncoders.put(cls, objectEncoder);
|
|
this.valueEncoders.remove(cls);
|
|
return this;
|
|
}
|
|
|
|
@Override // com.google.firebase.encoders.config.EncoderConfig
|
|
public <U> Builder registerEncoder(Class<U> cls, ValueEncoder<? super U> valueEncoder) {
|
|
this.valueEncoders.put(cls, valueEncoder);
|
|
this.objectEncoders.remove(cls);
|
|
return this;
|
|
}
|
|
}
|
|
|
|
public byte[] encode(Object obj) {
|
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
try {
|
|
encode(obj, byteArrayOutputStream);
|
|
} catch (IOException unused) {
|
|
}
|
|
return byteArrayOutputStream.toByteArray();
|
|
}
|
|
}
|