in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/AltJavaGenerator.java [930:1085]
private void generateMethodWrite(MessageDescriptor m) {
p("public org.apache.activemq.protobuf.Buffer toUnframedBuffer() {");
indent();
p("if( buffer !=null ) {");
indent();
p("return buffer;");
unindent();
p("}");
p("return org.apache.activemq.protobuf.MessageBufferSupport.toUnframedBuffer(this);");
unindent();
p("}");
p();
p("public org.apache.activemq.protobuf.Buffer toFramedBuffer() {");
indent();
p("return org.apache.activemq.protobuf.MessageBufferSupport.toFramedBuffer(this);");
unindent();
p("}");
p();
p("public byte[] toUnframedByteArray() {");
indent();
p("return toUnframedBuffer().toByteArray();");
unindent();
p("}");
p();
p("public byte[] toFramedByteArray() {");
indent();
p("return toFramedBuffer().toByteArray();");
unindent();
p("}");
p();
p("public void writeFramed(org.apache.activemq.protobuf.CodedOutputStream output) throws java.io.IOException {");
indent();
p("output.writeRawVarint32(serializedSizeUnframed());");
p("writeUnframed(output);");
unindent();
p("}");
p();
p("public void writeFramed(java.io.OutputStream output) throws java.io.IOException {");
indent();
p("org.apache.activemq.protobuf.CodedOutputStream codedOutput = new org.apache.activemq.protobuf.CodedOutputStream(output);");
p("writeFramed(codedOutput);");
p("codedOutput.flush();");
unindent();
p("}");
p();
p("public void writeUnframed(java.io.OutputStream output) throws java.io.IOException {");
indent();
p("org.apache.activemq.protobuf.CodedOutputStream codedOutput = new org.apache.activemq.protobuf.CodedOutputStream(output);");
p("writeUnframed(codedOutput);");
p("codedOutput.flush();");
unindent();
p("}");
p();
p("public void writeUnframed(org.apache.activemq.protobuf.CodedOutputStream output) throws java.io.IOException {");
indent();
p("if (buffer == null) {");
indent();
p("int size = serializedSizeUnframed();");
p("buffer = output.getNextBuffer(size);");
p("org.apache.activemq.protobuf.CodedOutputStream original=null;");
p("if( buffer == null ) {");
indent();
p("buffer = new org.apache.activemq.protobuf.Buffer(new byte[size]);");
p("original = output;");
p("output = new org.apache.activemq.protobuf.CodedOutputStream(buffer);");
unindent();
p("}");
for (FieldDescriptor field : m.getFields().values()) {
String uname = uCamel(field.getName());
String getter="bean.get"+uname+"()";
String type = javaType(field);
if( !field.isRequired() ) {
p("if (bean.has"+uname+"()) {");
indent();
}
if( field.getRule() == FieldDescriptor.REPEATED_RULE ) {
p("for ("+type+" i : bean.get"+uname+"List()) {");
indent();
getter = "i";
}
if( field.getType()==FieldDescriptor.STRING_TYPE ) {
p("output.writeString("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.BYTES_TYPE ) {
p("output.writeBytes("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.BOOL_TYPE ) {
p("output.writeBool("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.DOUBLE_TYPE ) {
p("output.writeDouble("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.FLOAT_TYPE ) {
p("output.writeFloat("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.INT32_TYPE ) {
p("output.writeInt32("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.INT64_TYPE ) {
p("output.writeInt64("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.SINT32_TYPE ) {
p("output.writeSInt32("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.SINT64_TYPE ) {
p("output.writeSInt64("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.UINT32_TYPE ) {
p("output.writeUInt32("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.UINT64_TYPE ) {
p("output.writeUInt64("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.FIXED32_TYPE ) {
p("output.writeFixed32("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.FIXED64_TYPE ) {
p("output.writeFixed64("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.SFIXED32_TYPE ) {
p("output.writeSFixed32("+field.getTag()+", "+getter+");");
} else if( field.getType()==FieldDescriptor.SFIXED64_TYPE ) {
p("output.writeSFixed64("+field.getTag()+", "+getter+");");
} else if( field.getTypeDescriptor().isEnum() ) {
p("output.writeEnum("+field.getTag()+", "+getter+".getNumber());");
} else if ( field.getGroup()!=null ) {
errors.add("This code generator does not support group fields.");
// p("writeGroup(output, "+field.getTag()+", "+getter+");");
} else {
p("org.apache.activemq.protobuf.MessageBufferSupport.writeMessage(output, "+field.getTag()+", "+getter+".freeze());");
}
if( field.getRule() == FieldDescriptor.REPEATED_RULE ) {
unindent();
p("}");
}
if( !field.isRequired() ) {
unindent();
p("}");
}
}
p("if( original !=null ) {");
indent();
p("output.checkNoSpaceLeft();");
p("output = original;");
p("output.writeRawBytes(buffer);");
unindent();
p("}");
unindent();
p("} else {");
indent();
p("output.writeRawBytes(buffer);");
unindent();
p("}");
unindent();
p("}");
p();
}