下面列出了com.google.protobuf.Any#getTypeUrl ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void writeValue(Any message, JsonGenerator gen) throws IOException {
if (message.equals(Any.getDefaultInstance())) {
// Note: empty Any is not indented the same way as an empty message, this is likely an
// upstream bug.
gen.writeRaw(": {}");
return;
}
gen.writeStartObject();
String typeUrl = message.getTypeUrl();
TypeSpecificMarshaller<?> serializer = marshallerRegistry.findByTypeUrl(typeUrl);
gen.writeFieldName("@type");
gen.writeString(typeUrl);
if (serializer instanceof WellKnownTypeMarshaller) {
gen.writeFieldName("value");
serializer.writeValue(message.getValue(), gen);
} else {
serializer.doWrite(message.getValue(), gen);
}
gen.writeEndObject();
}
@SuppressWarnings("TypeParameterUnusedInFormals") // addressed in anyToProto(Any, Class,// Parser)
private <T extends MessageLite> T anyToProto(Any any) {
RemoteDescriptor remoteDescriptor =
remoteDescriptorRegistry.argForRemoteTypeUrl(any.getTypeUrl());
try {
@SuppressWarnings("unchecked") // safe covariant cast
Class<T> messageType = (Class<T>) remoteDescriptor.getProtoType();
return anyToProto(any, messageType, remoteDescriptor.getProtoParser());
} catch (ClassCastException cce) {
throw new RemoteProtocolException("Message cannot be casted to type T", cce);
} catch (InvalidProtocolBufferException ipbe) {
throw new RemoteProtocolException(
"Invalid Protocol buffer for any type url: " + any.getTypeUrl(), ipbe);
}
}
@Override
public Payload serialize(@Nonnull Object what) {
final Any any = requireAny(what);
final String className = any.getTypeUrl();
final ByteString payloadBytes = any.getValue();
return Payload.newBuilder().setClassName(className).setPayloadBytes(payloadBytes).build();
}
@Override
public Payload serialize(@Nonnull Object what) {
final Any any = requireAny(what);
final String className = any.getTypeUrl();
final ByteString payloadBytes = any.getValue();
return Payload.newBuilder().setClassName(className).setPayloadBytes(payloadBytes).build();
}
private void processSecretsFromDiscoveryResponse(DiscoveryResponse response)
throws InvalidProtocolBufferException {
List<Any> resources = response.getResourcesList();
checkState(resources.size() == 1, "exactly one resource expected");
Any any = resources.get(0);
final String typeUrl = any.getTypeUrl();
checkState(SECRET_TYPE_URL.equals(typeUrl), "wrong value for typeUrl %s", typeUrl);
Secret secret = Secret.parseFrom(any.getValue());
processSecret(secret);
}