in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/AltJavaGenerator.java [1280:1324]
private void generateMethodMergeFromBean(MessageDescriptor m, String className) {
p("public "+className+"Bean mergeFrom("+className+" other) {");
indent();
p("copyCheck();");
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.copy());");
unindent();
p("}");
} else {
p("if (has"+uname+"()) {");
indent();
p("set"+uname+"(get"+uname+"().copy().mergeFrom(other.get"+uname+"()));");
unindent();
p("} else {");
indent();
p("set"+uname+"(other.get"+uname+"().copy());");
unindent();
p("}");
}
}
unindent();
p("}");
}
p("return this;");
unindent();
p("}");
p();
}