You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2013/04/23 22:15:55 UTC
svn commit: r1471128 - in /avro/trunk: ./
lang/java/protobuf/src/main/java/org/apache/avro/protobuf/
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/
lang/java/protobuf/src/test/protobuf/
Author: cutting
Date: Tue Apr 23 20:15:55 2013
New Revision: 1471128
URL: http://svn.apache.org/r1471128
Log:
AVRO-1308. Java: Fix repeated protobuf messages & enums. Contributed by Steve Zesch.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java
avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumReader.java
avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumWriter.java
avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/Test.java
avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/TestProtobuf.java
avro/trunk/lang/java/protobuf/src/test/protobuf/test.proto
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Tue Apr 23 20:15:55 2013
@@ -50,6 +50,9 @@ Trunk (not yet released)
AVRO-1309. Java: Fix nested protobuf enums. (cutting)
+ AVRO-1308. Java: Fix repeated protobuf messages & enums.
+ (Steve Zesch & cutting)
+
Avro 1.7.4 (22 February 2012)
NEW FEATURES
Modified: avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java (original)
+++ avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java Tue Apr 23 20:15:55 2013
@@ -37,7 +37,6 @@ import com.google.protobuf.ByteString;
import com.google.protobuf.Message;
import com.google.protobuf.Message.Builder;
import com.google.protobuf.MessageOrBuilder;
-import com.google.protobuf.ProtocolMessageEnum;
import com.google.protobuf.Descriptors.Descriptor;
import com.google.protobuf.Descriptors.FieldDescriptor;
import com.google.protobuf.Descriptors.EnumDescriptor;
@@ -81,9 +80,6 @@ public class ProtobufData extends Generi
Builder b = (Builder)r;
FieldDescriptor f = ((FieldDescriptor[])state)[pos];
switch (f.getType()) {
- case ENUM:
- b.setField(f, ((ProtocolMessageEnum)o).getValueDescriptor());
- break;
case MESSAGE:
if (o == null) {
b.clearField(f);
@@ -99,17 +95,8 @@ public class ProtobufData extends Generi
Message m = (Message)record;
FieldDescriptor f = ((FieldDescriptor[])state)[pos];
switch (f.getType()) {
- case ENUM:
- Schema s = getSchema(f);
- try {
- Class c = Class.forName(SpecificData.getClassName(s));
- EnumValueDescriptor symbol = (EnumValueDescriptor)m.getField(f);
- return Enum.valueOf(c, symbol.getName());
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
case MESSAGE:
- if (!m.hasField(f))
+ if (!f.isRepeated() && !m.hasField(f))
return null;
default:
return m.getField(f);
@@ -211,12 +198,8 @@ public class ProtobufData extends Generi
seen.put(descriptor, result);
List<Field> fields = new ArrayList<Field>();
- for (FieldDescriptor f : descriptor.getFields()) {
- Schema s = getSchema(f);
- if (f.isRepeated())
- s = Schema.createArray(s);
- fields.add(new Field(f.getName(), s, null, getDefault(f)));
- }
+ for (FieldDescriptor f : descriptor.getFields())
+ fields.add(new Field(f.getName(), getSchema(f), null, getDefault(f)));
result.setFields(fields);
return result;
@@ -263,6 +246,13 @@ public class ProtobufData extends Generi
private static final Schema NULL = Schema.create(Schema.Type.NULL);
private Schema getSchema(FieldDescriptor f) {
+ Schema s = getNonRepeatedSchema(f);
+ if (f.isRepeated())
+ s = Schema.createArray(s);
+ return s;
+ }
+
+ private Schema getNonRepeatedSchema(FieldDescriptor f) {
Schema result;
switch (f.getType()) {
case BOOL:
Modified: avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumReader.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumReader.java?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumReader.java (original)
+++ avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumReader.java Tue Apr 23 20:15:55 2013
@@ -28,6 +28,7 @@ import org.apache.avro.io.ResolvingDecod
import com.google.protobuf.ByteString;
import com.google.protobuf.Message;
+import com.google.protobuf.ProtocolMessageEnum;
/** {@link org.apache.avro.io.DatumReader DatumReader} for generated Protobuf
* classes. */
@@ -67,7 +68,7 @@ public class ProtobufDatumReader<T> exte
try {
Class c = Class.forName(SpecificData.getClassName(schema));
if (c == null) return super.createEnum(symbol, schema); // punt to generic
- return Enum.valueOf(c, symbol);
+ return ((ProtocolMessageEnum)Enum.valueOf(c, symbol)).getValueDescriptor();
} catch (Exception e) {
throw new RuntimeException(e);
}
Modified: avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumWriter.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumWriter.java?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumWriter.java (original)
+++ avro/trunk/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufDatumWriter.java Tue Apr 23 20:15:55 2013
@@ -24,6 +24,7 @@ import org.apache.avro.generic.GenericDa
import org.apache.avro.io.Encoder;
import com.google.protobuf.ByteString;
+import com.google.protobuf.Descriptors.EnumValueDescriptor;
/** {@link org.apache.avro.io.DatumWriter DatumWriter} for generated protobuf
* classes. */
@@ -51,10 +52,11 @@ public class ProtobufDatumWriter<T> exte
@Override
protected void writeEnum(Schema schema, Object datum, Encoder out)
throws IOException {
- if (!(datum instanceof Enum))
+ if (!(datum instanceof EnumValueDescriptor))
super.writeEnum(schema, datum, out); // punt to generic
else
- out.writeEnum(((Enum)datum).ordinal());
+ out.writeEnum
+ (schema.getEnumOrdinal(((EnumValueDescriptor)datum).getName()));
}
@Override
Modified: avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/Test.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/Test.java?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/Test.java (original)
+++ avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/Test.java Tue Apr 23 20:15:55 2013
@@ -152,6 +152,21 @@ public final class Test {
int getIntArrayCount();
int getIntArray(int index);
+ // repeated .org.apache.avro.protobuf.Foo fooArray = 20;
+ java.util.List<org.apache.avro.protobuf.Test.Foo>
+ getFooArrayList();
+ org.apache.avro.protobuf.Test.Foo getFooArray(int index);
+ int getFooArrayCount();
+ java.util.List<? extends org.apache.avro.protobuf.Test.FooOrBuilder>
+ getFooArrayOrBuilderList();
+ org.apache.avro.protobuf.Test.FooOrBuilder getFooArrayOrBuilder(
+ int index);
+
+ // repeated .org.apache.avro.protobuf.A syms = 19;
+ java.util.List<org.apache.avro.protobuf.Test.A> getSymsList();
+ int getSymsCount();
+ org.apache.avro.protobuf.Test.A getSyms(int index);
+
// optional .org.apache.avro.protobuf.Foo foo = 18;
boolean hasFoo();
org.apache.avro.protobuf.Test.Foo getFoo();
@@ -382,6 +397,40 @@ public final class Test {
return intArray_.get(index);
}
+ // repeated .org.apache.avro.protobuf.Foo fooArray = 20;
+ public static final int FOOARRAY_FIELD_NUMBER = 20;
+ private java.util.List<org.apache.avro.protobuf.Test.Foo> fooArray_;
+ public java.util.List<org.apache.avro.protobuf.Test.Foo> getFooArrayList() {
+ return fooArray_;
+ }
+ public java.util.List<? extends org.apache.avro.protobuf.Test.FooOrBuilder>
+ getFooArrayOrBuilderList() {
+ return fooArray_;
+ }
+ public int getFooArrayCount() {
+ return fooArray_.size();
+ }
+ public org.apache.avro.protobuf.Test.Foo getFooArray(int index) {
+ return fooArray_.get(index);
+ }
+ public org.apache.avro.protobuf.Test.FooOrBuilder getFooArrayOrBuilder(
+ int index) {
+ return fooArray_.get(index);
+ }
+
+ // repeated .org.apache.avro.protobuf.A syms = 19;
+ public static final int SYMS_FIELD_NUMBER = 19;
+ private java.util.List<org.apache.avro.protobuf.Test.A> syms_;
+ public java.util.List<org.apache.avro.protobuf.Test.A> getSymsList() {
+ return syms_;
+ }
+ public int getSymsCount() {
+ return syms_.size();
+ }
+ public org.apache.avro.protobuf.Test.A getSyms(int index) {
+ return syms_.get(index);
+ }
+
// optional .org.apache.avro.protobuf.Foo foo = 18;
public static final int FOO_FIELD_NUMBER = 18;
private org.apache.avro.protobuf.Test.Foo foo_;
@@ -413,6 +462,8 @@ public final class Test {
bytes_ = com.google.protobuf.ByteString.EMPTY;
enum_ = org.apache.avro.protobuf.Test.A.X;
intArray_ = java.util.Collections.emptyList();;
+ fooArray_ = java.util.Collections.emptyList();
+ syms_ = java.util.Collections.emptyList();
foo_ = org.apache.avro.protobuf.Test.Foo.getDefaultInstance();
}
private byte memoizedIsInitialized = -1;
@@ -424,6 +475,12 @@ public final class Test {
memoizedIsInitialized = 0;
return false;
}
+ for (int i = 0; i < getFooArrayCount(); i++) {
+ if (!getFooArray(i).isInitialized()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ }
if (hasFoo()) {
if (!getFoo().isInitialized()) {
memoizedIsInitialized = 0;
@@ -491,6 +548,12 @@ public final class Test {
if (((bitField0_ & 0x00010000) == 0x00010000)) {
output.writeMessage(18, foo_);
}
+ for (int i = 0; i < syms_.size(); i++) {
+ output.writeEnum(19, syms_.get(i).getNumber());
+ }
+ for (int i = 0; i < fooArray_.size(); i++) {
+ output.writeMessage(20, fooArray_.get(i));
+ }
getUnknownFields().writeTo(output);
}
@@ -577,6 +640,19 @@ public final class Test {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(18, foo_);
}
+ {
+ int dataSize = 0;
+ for (int i = 0; i < syms_.size(); i++) {
+ dataSize += com.google.protobuf.CodedOutputStream
+ .computeEnumSizeNoTag(syms_.get(i).getNumber());
+ }
+ size += dataSize;
+ size += 2 * syms_.size();
+ }
+ for (int i = 0; i < fooArray_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(20, fooArray_.get(i));
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -693,6 +769,7 @@ public final class Test {
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getFooArrayFieldBuilder();
getFooFieldBuilder();
}
}
@@ -736,12 +813,20 @@ public final class Test {
bitField0_ = (bitField0_ & ~0x00008000);
intArray_ = java.util.Collections.emptyList();;
bitField0_ = (bitField0_ & ~0x00010000);
+ if (fooArrayBuilder_ == null) {
+ fooArray_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00020000);
+ } else {
+ fooArrayBuilder_.clear();
+ }
+ syms_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00040000);
if (fooBuilder_ == null) {
foo_ = org.apache.avro.protobuf.Test.Foo.getDefaultInstance();
} else {
fooBuilder_.clear();
}
- bitField0_ = (bitField0_ & ~0x00020000);
+ bitField0_ = (bitField0_ & ~0x00080000);
return this;
}
@@ -849,7 +934,21 @@ public final class Test {
bitField0_ = (bitField0_ & ~0x00010000);
}
result.intArray_ = intArray_;
- if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+ if (fooArrayBuilder_ == null) {
+ if (((bitField0_ & 0x00020000) == 0x00020000)) {
+ fooArray_ = java.util.Collections.unmodifiableList(fooArray_);
+ bitField0_ = (bitField0_ & ~0x00020000);
+ }
+ result.fooArray_ = fooArray_;
+ } else {
+ result.fooArray_ = fooArrayBuilder_.build();
+ }
+ if (((bitField0_ & 0x00040000) == 0x00040000)) {
+ syms_ = java.util.Collections.unmodifiableList(syms_);
+ bitField0_ = (bitField0_ & ~0x00040000);
+ }
+ result.syms_ = syms_;
+ if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
to_bitField0_ |= 0x00010000;
}
if (fooBuilder_ == null) {
@@ -931,6 +1030,42 @@ public final class Test {
}
onChanged();
}
+ if (fooArrayBuilder_ == null) {
+ if (!other.fooArray_.isEmpty()) {
+ if (fooArray_.isEmpty()) {
+ fooArray_ = other.fooArray_;
+ bitField0_ = (bitField0_ & ~0x00020000);
+ } else {
+ ensureFooArrayIsMutable();
+ fooArray_.addAll(other.fooArray_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.fooArray_.isEmpty()) {
+ if (fooArrayBuilder_.isEmpty()) {
+ fooArrayBuilder_.dispose();
+ fooArrayBuilder_ = null;
+ fooArray_ = other.fooArray_;
+ bitField0_ = (bitField0_ & ~0x00020000);
+ fooArrayBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getFooArrayFieldBuilder() : null;
+ } else {
+ fooArrayBuilder_.addAllMessages(other.fooArray_);
+ }
+ }
+ }
+ if (!other.syms_.isEmpty()) {
+ if (syms_.isEmpty()) {
+ syms_ = other.syms_;
+ bitField0_ = (bitField0_ & ~0x00040000);
+ } else {
+ ensureSymsIsMutable();
+ syms_.addAll(other.syms_);
+ }
+ onChanged();
+ }
if (other.hasFoo()) {
mergeFoo(other.getFoo());
}
@@ -943,6 +1078,12 @@ public final class Test {
return false;
}
+ for (int i = 0; i < getFooArrayCount(); i++) {
+ if (!getFooArray(i).isInitialized()) {
+
+ return false;
+ }
+ }
if (hasFoo()) {
if (!getFoo().isInitialized()) {
@@ -1084,6 +1225,37 @@ public final class Test {
setFoo(subBuilder.buildPartial());
break;
}
+ case 152: {
+ int rawValue = input.readEnum();
+ org.apache.avro.protobuf.Test.A value = org.apache.avro.protobuf.Test.A.valueOf(rawValue);
+ if (value == null) {
+ unknownFields.mergeVarintField(19, rawValue);
+ } else {
+ addSyms(value);
+ }
+ break;
+ }
+ case 154: {
+ int length = input.readRawVarint32();
+ int oldLimit = input.pushLimit(length);
+ while(input.getBytesUntilLimit() > 0) {
+ int rawValue = input.readEnum();
+ org.apache.avro.protobuf.Test.A value = org.apache.avro.protobuf.Test.A.valueOf(rawValue);
+ if (value == null) {
+ unknownFields.mergeVarintField(19, rawValue);
+ } else {
+ addSyms(value);
+ }
+ }
+ input.popLimit(oldLimit);
+ break;
+ }
+ case 162: {
+ org.apache.avro.protobuf.Test.Foo.Builder subBuilder = org.apache.avro.protobuf.Test.Foo.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addFooArray(subBuilder.buildPartial());
+ break;
+ }
}
}
}
@@ -1492,12 +1664,249 @@ public final class Test {
return this;
}
+ // repeated .org.apache.avro.protobuf.Foo fooArray = 20;
+ private java.util.List<org.apache.avro.protobuf.Test.Foo> fooArray_ =
+ java.util.Collections.emptyList();
+ private void ensureFooArrayIsMutable() {
+ if (!((bitField0_ & 0x00020000) == 0x00020000)) {
+ fooArray_ = new java.util.ArrayList<org.apache.avro.protobuf.Test.Foo>(fooArray_);
+ bitField0_ |= 0x00020000;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.avro.protobuf.Test.Foo, org.apache.avro.protobuf.Test.Foo.Builder, org.apache.avro.protobuf.Test.FooOrBuilder> fooArrayBuilder_;
+
+ public java.util.List<org.apache.avro.protobuf.Test.Foo> getFooArrayList() {
+ if (fooArrayBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(fooArray_);
+ } else {
+ return fooArrayBuilder_.getMessageList();
+ }
+ }
+ public int getFooArrayCount() {
+ if (fooArrayBuilder_ == null) {
+ return fooArray_.size();
+ } else {
+ return fooArrayBuilder_.getCount();
+ }
+ }
+ public org.apache.avro.protobuf.Test.Foo getFooArray(int index) {
+ if (fooArrayBuilder_ == null) {
+ return fooArray_.get(index);
+ } else {
+ return fooArrayBuilder_.getMessage(index);
+ }
+ }
+ public Builder setFooArray(
+ int index, org.apache.avro.protobuf.Test.Foo value) {
+ if (fooArrayBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFooArrayIsMutable();
+ fooArray_.set(index, value);
+ onChanged();
+ } else {
+ fooArrayBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ public Builder setFooArray(
+ int index, org.apache.avro.protobuf.Test.Foo.Builder builderForValue) {
+ if (fooArrayBuilder_ == null) {
+ ensureFooArrayIsMutable();
+ fooArray_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ fooArrayBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addFooArray(org.apache.avro.protobuf.Test.Foo value) {
+ if (fooArrayBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFooArrayIsMutable();
+ fooArray_.add(value);
+ onChanged();
+ } else {
+ fooArrayBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ public Builder addFooArray(
+ int index, org.apache.avro.protobuf.Test.Foo value) {
+ if (fooArrayBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFooArrayIsMutable();
+ fooArray_.add(index, value);
+ onChanged();
+ } else {
+ fooArrayBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ public Builder addFooArray(
+ org.apache.avro.protobuf.Test.Foo.Builder builderForValue) {
+ if (fooArrayBuilder_ == null) {
+ ensureFooArrayIsMutable();
+ fooArray_.add(builderForValue.build());
+ onChanged();
+ } else {
+ fooArrayBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addFooArray(
+ int index, org.apache.avro.protobuf.Test.Foo.Builder builderForValue) {
+ if (fooArrayBuilder_ == null) {
+ ensureFooArrayIsMutable();
+ fooArray_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ fooArrayBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addAllFooArray(
+ java.lang.Iterable<? extends org.apache.avro.protobuf.Test.Foo> values) {
+ if (fooArrayBuilder_ == null) {
+ ensureFooArrayIsMutable();
+ super.addAll(values, fooArray_);
+ onChanged();
+ } else {
+ fooArrayBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ public Builder clearFooArray() {
+ if (fooArrayBuilder_ == null) {
+ fooArray_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00020000);
+ onChanged();
+ } else {
+ fooArrayBuilder_.clear();
+ }
+ return this;
+ }
+ public Builder removeFooArray(int index) {
+ if (fooArrayBuilder_ == null) {
+ ensureFooArrayIsMutable();
+ fooArray_.remove(index);
+ onChanged();
+ } else {
+ fooArrayBuilder_.remove(index);
+ }
+ return this;
+ }
+ public org.apache.avro.protobuf.Test.Foo.Builder getFooArrayBuilder(
+ int index) {
+ return getFooArrayFieldBuilder().getBuilder(index);
+ }
+ public org.apache.avro.protobuf.Test.FooOrBuilder getFooArrayOrBuilder(
+ int index) {
+ if (fooArrayBuilder_ == null) {
+ return fooArray_.get(index); } else {
+ return fooArrayBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ public java.util.List<? extends org.apache.avro.protobuf.Test.FooOrBuilder>
+ getFooArrayOrBuilderList() {
+ if (fooArrayBuilder_ != null) {
+ return fooArrayBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(fooArray_);
+ }
+ }
+ public org.apache.avro.protobuf.Test.Foo.Builder addFooArrayBuilder() {
+ return getFooArrayFieldBuilder().addBuilder(
+ org.apache.avro.protobuf.Test.Foo.getDefaultInstance());
+ }
+ public org.apache.avro.protobuf.Test.Foo.Builder addFooArrayBuilder(
+ int index) {
+ return getFooArrayFieldBuilder().addBuilder(
+ index, org.apache.avro.protobuf.Test.Foo.getDefaultInstance());
+ }
+ public java.util.List<org.apache.avro.protobuf.Test.Foo.Builder>
+ getFooArrayBuilderList() {
+ return getFooArrayFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.avro.protobuf.Test.Foo, org.apache.avro.protobuf.Test.Foo.Builder, org.apache.avro.protobuf.Test.FooOrBuilder>
+ getFooArrayFieldBuilder() {
+ if (fooArrayBuilder_ == null) {
+ fooArrayBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.avro.protobuf.Test.Foo, org.apache.avro.protobuf.Test.Foo.Builder, org.apache.avro.protobuf.Test.FooOrBuilder>(
+ fooArray_,
+ ((bitField0_ & 0x00020000) == 0x00020000),
+ getParentForChildren(),
+ isClean());
+ fooArray_ = null;
+ }
+ return fooArrayBuilder_;
+ }
+
+ // repeated .org.apache.avro.protobuf.A syms = 19;
+ private java.util.List<org.apache.avro.protobuf.Test.A> syms_ =
+ java.util.Collections.emptyList();
+ private void ensureSymsIsMutable() {
+ if (!((bitField0_ & 0x00040000) == 0x00040000)) {
+ syms_ = new java.util.ArrayList<org.apache.avro.protobuf.Test.A>(syms_);
+ bitField0_ |= 0x00040000;
+ }
+ }
+ public java.util.List<org.apache.avro.protobuf.Test.A> getSymsList() {
+ return java.util.Collections.unmodifiableList(syms_);
+ }
+ public int getSymsCount() {
+ return syms_.size();
+ }
+ public org.apache.avro.protobuf.Test.A getSyms(int index) {
+ return syms_.get(index);
+ }
+ public Builder setSyms(
+ int index, org.apache.avro.protobuf.Test.A value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSymsIsMutable();
+ syms_.set(index, value);
+ onChanged();
+ return this;
+ }
+ public Builder addSyms(org.apache.avro.protobuf.Test.A value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSymsIsMutable();
+ syms_.add(value);
+ onChanged();
+ return this;
+ }
+ public Builder addAllSyms(
+ java.lang.Iterable<? extends org.apache.avro.protobuf.Test.A> values) {
+ ensureSymsIsMutable();
+ super.addAll(values, syms_);
+ onChanged();
+ return this;
+ }
+ public Builder clearSyms() {
+ syms_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00040000);
+ onChanged();
+ return this;
+ }
+
// optional .org.apache.avro.protobuf.Foo foo = 18;
private org.apache.avro.protobuf.Test.Foo foo_ = org.apache.avro.protobuf.Test.Foo.getDefaultInstance();
private com.google.protobuf.SingleFieldBuilder<
org.apache.avro.protobuf.Test.Foo, org.apache.avro.protobuf.Test.Foo.Builder, org.apache.avro.protobuf.Test.FooOrBuilder> fooBuilder_;
public boolean hasFoo() {
- return ((bitField0_ & 0x00020000) == 0x00020000);
+ return ((bitField0_ & 0x00080000) == 0x00080000);
}
public org.apache.avro.protobuf.Test.Foo getFoo() {
if (fooBuilder_ == null) {
@@ -1516,7 +1925,7 @@ public final class Test {
} else {
fooBuilder_.setMessage(value);
}
- bitField0_ |= 0x00020000;
+ bitField0_ |= 0x00080000;
return this;
}
public Builder setFoo(
@@ -1527,12 +1936,12 @@ public final class Test {
} else {
fooBuilder_.setMessage(builderForValue.build());
}
- bitField0_ |= 0x00020000;
+ bitField0_ |= 0x00080000;
return this;
}
public Builder mergeFoo(org.apache.avro.protobuf.Test.Foo value) {
if (fooBuilder_ == null) {
- if (((bitField0_ & 0x00020000) == 0x00020000) &&
+ if (((bitField0_ & 0x00080000) == 0x00080000) &&
foo_ != org.apache.avro.protobuf.Test.Foo.getDefaultInstance()) {
foo_ =
org.apache.avro.protobuf.Test.Foo.newBuilder(foo_).mergeFrom(value).buildPartial();
@@ -1543,7 +1952,7 @@ public final class Test {
} else {
fooBuilder_.mergeFrom(value);
}
- bitField0_ |= 0x00020000;
+ bitField0_ |= 0x00080000;
return this;
}
public Builder clearFoo() {
@@ -1553,11 +1962,11 @@ public final class Test {
} else {
fooBuilder_.clear();
}
- bitField0_ = (bitField0_ & ~0x00020000);
+ bitField0_ = (bitField0_ & ~0x00080000);
return this;
}
public org.apache.avro.protobuf.Test.Foo.Builder getFooBuilder() {
- bitField0_ |= 0x00020000;
+ bitField0_ |= 0x00080000;
onChanged();
return getFooFieldBuilder().getBuilder();
}
@@ -1955,7 +2364,7 @@ public final class Test {
static {
java.lang.String[] descriptorData = {
"\n\034src/test/protobuf/test.proto\022\030org.apac" +
- "he.avro.protobuf\"\336\002\n\003Foo\022\r\n\005int32\030\001 \002(\005\022" +
+ "he.avro.protobuf\"\272\003\n\003Foo\022\r\n\005int32\030\001 \002(\005\022" +
"\r\n\005int64\030\002 \001(\003\022\016\n\006uint32\030\003 \001(\r\022\016\n\006uint64" +
"\030\004 \001(\004\022\016\n\006sint32\030\005 \001(\021\022\016\n\006sint64\030\006 \001(\022\022\017" +
"\n\007fixed32\030\007 \001(\007\022\017\n\007fixed64\030\010 \001(\006\022\020\n\010sfix" +
@@ -1963,9 +2372,11 @@ public final class Test {
"\001(\002\022\016\n\006double\030\014 \001(\001\022\014\n\004bool\030\r \001(\010\022\016\n\006str" +
"ing\030\016 \001(\t\022\r\n\005bytes\030\017 \001(\014\022)\n\004enum\030\020 \001(\0162\033" +
".org.apache.avro.protobuf.A\022\020\n\010intArray\030" +
- "\021 \003(\005\022*\n\003foo\030\022 \001(\0132\035.org.apache.avro.pro",
- "tobuf.Foo\"\017\n\001M\"\n\n\001N\022\005\n\001A\020\001*\030\n\001A\022\005\n\001X\020\001\022\005" +
- "\n\001Y\020\002\022\005\n\001Z\020\003"
+ "\021 \003(\005\022/\n\010fooArray\030\024 \003(\0132\035.org.apache.avr",
+ "o.protobuf.Foo\022)\n\004syms\030\023 \003(\0162\033.org.apach" +
+ "e.avro.protobuf.A\022*\n\003foo\030\022 \001(\0132\035.org.apa" +
+ "che.avro.protobuf.Foo\"\017\n\001M\"\n\n\001N\022\005\n\001A\020\001*\030" +
+ "\n\001A\022\005\n\001X\020\001\022\005\n\001Y\020\002\022\005\n\001Z\020\003"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -1977,7 +2388,7 @@ public final class Test {
internal_static_org_apache_avro_protobuf_Foo_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_avro_protobuf_Foo_descriptor,
- new java.lang.String[] { "Int32", "Int64", "Uint32", "Uint64", "Sint32", "Sint64", "Fixed32", "Fixed64", "Sfixed32", "Sfixed64", "Float", "Double", "Bool", "String", "Bytes", "Enum", "IntArray", "Foo", },
+ new java.lang.String[] { "Int32", "Int64", "Uint32", "Uint64", "Sint32", "Sint64", "Fixed32", "Fixed64", "Sfixed32", "Sfixed64", "Float", "Double", "Bool", "String", "Bytes", "Enum", "IntArray", "FooArray", "Syms", "Foo", },
org.apache.avro.protobuf.Test.Foo.class,
org.apache.avro.protobuf.Test.Foo.Builder.class);
internal_static_org_apache_avro_protobuf_M_descriptor =
Modified: avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/TestProtobuf.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/TestProtobuf.java?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/TestProtobuf.java (original)
+++ avro/trunk/lang/java/protobuf/src/test/java/org/apache/avro/protobuf/TestProtobuf.java Tue Apr 23 20:15:55 2013
@@ -57,8 +57,13 @@ public class TestProtobuf {
builder.setBytes(ByteString.copyFromUtf8("bar"));
builder.setEnum(A.X);
builder.addIntArray(27);
+ builder.addSyms(A.Y);
Foo fooInner = builder.build();
+ Foo fooInArray = builder.build();
+ builder = Foo.newBuilder(fooInArray);
+ builder.addFooArray(fooInArray);
+
builder = Foo.newBuilder(fooInner);
builder.setFoo(fooInner);
Foo foo = builder.build();
@@ -77,7 +82,6 @@ public class TestProtobuf {
(new ByteArrayInputStream(bao.toByteArray()), null));
assertEquals(foo, o);
-
}
@Test public void testNestedEnum() throws Exception {
Modified: avro/trunk/lang/java/protobuf/src/test/protobuf/test.proto
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/protobuf/src/test/protobuf/test.proto?rev=1471128&r1=1471127&r2=1471128&view=diff
==============================================================================
--- avro/trunk/lang/java/protobuf/src/test/protobuf/test.proto (original)
+++ avro/trunk/lang/java/protobuf/src/test/protobuf/test.proto Tue Apr 23 20:15:55 2013
@@ -37,8 +37,10 @@ message Foo {
optional bytes bytes = 15;
optional A enum = 16;
- // a repeated type
+ // some repeated types
repeated int32 intArray = 17;
+ repeated Foo fooArray = 20;
+ repeated A syms = 19;
// a recursive type
optional Foo foo = 18;