@Override protected Message.Builder newBuilderForType(final AbstractMessage.BuilderParent parent) { return newBuilderForType(new BuilderParent() { @Override public void markDirty() { parent.markDirty(); } }); }
/** * Gets a builder for the field. If no builder has been created yet, a * builder is created on demand by calling {@link Message#toBuilder}. * * @return The builder for the field */ @SuppressWarnings("unchecked") public BType getBuilder() { if (builder == null) { // builder.mergeFrom() on a fresh builder // does not create any sub-objects with independent clean/dirty states, // therefore setting the builder itself to clean without actually calling // build() cannot break any invariants. builder = (BType) message.newBuilderForType(this); builder.mergeFrom(message); // no-op if message is the default message builder.markClean(); } return builder; }
/** * Gets a builder for the field. If no builder has been created yet, a * builder is created on demand by calling {@link Message#toBuilder}. * * @return The builder for the field */ @SuppressWarnings("unchecked") public BType getBuilder() { if (builder == null) { // builder.mergeFrom() on a fresh builder // does not create any sub-objects with independent clean/dirty states, // therefore setting the builder itself to clean without actually calling // build() cannot break any invariants. builder = (BType) message.newBuilderForType(this); builder.mergeFrom(message); // no-op if message is the default message builder.markClean(); } return builder; }
@Override protected Message.Builder newBuilderForType(final AbstractMessage.BuilderParent parent) { return newBuilderForType(new BuilderParent() { @Override public void markDirty() { parent.markDirty(); } }); }
/** * Gets a builder for the field. If no builder has been created yet, a * builder is created on demand by calling {@link Message#toBuilder}. * * @return The builder for the field */ @SuppressWarnings("unchecked") public BType getBuilder() { if (builder == null) { // builder.mergeFrom() on a fresh builder // does not create any sub-objects with independent clean/dirty states, // therefore setting the builder itself to clean without actually calling // build() cannot break any invariants. builder = (BType) message.newBuilderForType(this); builder.mergeFrom(message); // no-op if message is the default message builder.markClean(); } return builder; }
/** * Gets a builder for the field. If no builder has been created yet, a * builder is created on demand by calling {@link Message#toBuilder}. * * @return The builder for the field */ @SuppressWarnings("unchecked") public BType getBuilder() { if (builder == null) { // builder.mergeFrom() on a fresh builder // does not create any sub-objects with independent clean/dirty states, // therefore setting the builder itself to clean without actually calling // build() cannot break any invariants. builder = (BType) message.newBuilderForType(this); builder.mergeFrom(message); // no-op if message is the default message builder.markClean(); } return builder; }
/** * Generates a random protocol buffer, filling in all required fields but * with a p chance of not setting an optional field and p chance of having * an empty repeated field. */ @SuppressWarnings("unchecked") public E generate(double p) { Builder builder = instance.newBuilderForType(); Descriptor descriptor = instance.getDescriptorForType(); for (FieldDescriptor field : descriptor.getFields()) { if (!field.isRequired() && random.nextDouble() < p) { continue; } builder.setField(field, getRandomValue(field, p)); } return (E) builder.build(); }