java类com.google.protobuf.Descriptors.OneofDescriptor的实例源码

DynamicMessage.java 文件源码 项目:protobuffer 阅读 21 收藏 0 点赞 0 评论 0
/** Verifies that the oneof is an oneof of this message. */
private void verifyOneofContainingType(OneofDescriptor oneof) {
  if (oneof.getContainingType() != type) {
    throw new IllegalArgumentException(
      "OneofDescriptor does not match message type.");
  }
}
GeneratedMessage.java 文件源码 项目:protobuffer 阅读 18 收藏 0 点赞 0 评论 0
/** Get the OneofAccessor for a particular oneof. */
private OneofAccessor getOneof(final OneofDescriptor oneof) {
  if (oneof.getContainingType() != descriptor) {
    throw new IllegalArgumentException(
      "OneofDescriptor does not match message type.");
  }
  return oneofs[oneof.getIndex()];
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 23 收藏 0 点赞 0 评论 0
public boolean hasOneof(OneofDescriptor oneof) {
  verifyOneofContainingType(oneof);
  FieldDescriptor field = oneofCases[oneof.getIndex()];
  if (field == null) {
    return false;
  }
  return true;
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 21 收藏 0 点赞 0 评论 0
/** Verifies that the oneof is an oneof of this message. */
private void verifyOneofContainingType(OneofDescriptor oneof) {
  if (oneof.getContainingType() != type) {
    throw new IllegalArgumentException(
      "OneofDescriptor does not match message type.");
  }
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 19 收藏 0 点赞 0 评论 0
public boolean hasOneof(OneofDescriptor oneof) {
  verifyOneofContainingType(oneof);
  FieldDescriptor field = oneofCases[oneof.getIndex()];
  if (field == null) {
    return false;
  }
  return true;
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 18 收藏 0 点赞 0 评论 0
public Builder clearOneof(OneofDescriptor oneof) {
  verifyOneofContainingType(oneof);
  FieldDescriptor field = oneofCases[oneof.getIndex()];
  if (field != null) {
    clearField(field);
  }
  return this;
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 15 收藏 0 点赞 0 评论 0
public Builder clearField(FieldDescriptor field) {
  verifyContainingType(field);
  ensureIsMutable();
  OneofDescriptor oneofDescriptor = field.getContainingOneof();
  if (oneofDescriptor != null) {
    int index = oneofDescriptor.getIndex();
    if (oneofCases[index] == field) {
      oneofCases[index] = null;
    }
  }
  fields.clearField(field);
  return this;
}
DynamicMessage.java 文件源码 项目:protobuffer 阅读 15 收藏 0 点赞 0 评论 0
/** Verifies that the oneof is an oneof of this message. */
private void verifyOneofContainingType(OneofDescriptor oneof) {
  if (oneof.getContainingType() != type) {
    throw new IllegalArgumentException(
      "OneofDescriptor does not match message type.");
  }
}
GeneratedMessage.java 文件源码 项目:protobuffer 阅读 19 收藏 0 点赞 0 评论 0
/** Get the OneofAccessor for a particular oneof. */
private OneofAccessor getOneof(final OneofDescriptor oneof) {
  if (oneof.getContainingType() != descriptor) {
    throw new IllegalArgumentException(
      "OneofDescriptor does not match message type.");
  }
  return oneofs[oneof.getIndex()];
}
DynamicMessageTest.java 文件源码 项目:vsminecraft 阅读 19 收藏 0 点赞 0 评论 0
public void testDynamicOneofMessage() throws Exception {
  DynamicMessage.Builder builder =
      DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
  OneofDescriptor oneof = TestAllTypes.getDescriptor().getOneofs().get(0);
  assertFalse(builder.hasOneof(oneof));
  assertSame(null, builder.getOneofFieldDescriptor(oneof));

  reflectionTester.setAllFieldsViaReflection(builder);
  assertTrue(builder.hasOneof(oneof));
  FieldDescriptor field = oneof.getField(3);
  assertSame(field, builder.getOneofFieldDescriptor(oneof));

  DynamicMessage message = builder.buildPartial();
  assertTrue(message.hasOneof(oneof));

  DynamicMessage.Builder mergedBuilder =
      DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
  FieldDescriptor mergedField = oneof.getField(0);
  mergedBuilder.setField(mergedField, 123);
  assertTrue(mergedBuilder.hasField(mergedField));
  mergedBuilder.mergeFrom(message);
  assertTrue(mergedBuilder.hasField(field));
  assertFalse(mergedBuilder.hasField(mergedField));

  builder.clearOneof(oneof);
  assertSame(null, builder.getOneofFieldDescriptor(oneof));
  message = builder.build();
  assertSame(null, message.getOneofFieldDescriptor(oneof));
}


问题


面经


文章

微信
公众号

扫码关注公众号