in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/JavaGenerator.java [966:1009]
private void generateMethodMergeFromBean(MessageDescriptor m, String className) {
p("public "+className+" mergeFrom("+className+" other) {");
indent();
for (FieldDescriptor field : m.getFields().values()) {
String uname = uCamel(field.getName());
p("if (other.has"+uname+"()) {");
indent();
if( field.isScalarType() || field.getTypeDescriptor().isEnum() ) {
if( field.isRepeated() ) {
p("get"+uname+"List().addAll(other.get"+uname+"List());");
} else {
p("set"+uname+"(other.get"+uname+"());");
}
} else {
String type = javaType(field);
// It's complex type...
if( field.isRepeated() ) {
p("for("+type+" element: other.get"+uname+"List() ) {");
indent();
p("get"+uname+"List().add(element.clone());");
unindent();
p("}");
} else {
p("if (has"+uname+"()) {");
indent();
p("get"+uname+"().mergeFrom(other.get"+uname+"());");
unindent();
p("} else {");
indent();
p("set"+uname+"(other.get"+uname+"().clone());");
unindent();
p("}");
}
}
unindent();
p("}");
}
p("return this;");
unindent();
p("}");
p();
}