in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/AltJavaGenerator.java [510:556]
private void generateMethodCopyFromBean(MessageDescriptor m, String className) {
p("private void copy("+className+" other) {");
indent();
p("this.bean = this;");
for (FieldDescriptor field : m.getFields().values()) {
String lname = lCamel(field.getName());
String type = field.getRule()==FieldDescriptor.REPEATED_RULE ? javaCollectionType(field):javaType(field);
boolean primitive = field.getTypeDescriptor()==null || field.getTypeDescriptor().isEnum();
if( field.isRepeated() ) {
if( primitive ) {
p("this.f_" + lname + " = other.f_" + lname + ";");
p("if( this.f_" + lname + " !=null && !other.frozen()) {");
indent();
p("this.f_" + lname + " = new java.util.ArrayList<"+type+">(this.f_" + lname + ");");
unindent();
p("}");
} else {
p("this.f_" + lname + " = other.f_" + lname + ";");
p("if( this.f_" + lname + " !=null) {");
indent();
p("this.f_" + lname + " = new java.util.ArrayList<"+type+">(other.f_" + lname + ".size());");
p("for( "+type+" e : other.f_" + lname + ") {");
indent();
p("this.f_" + lname + ".add(e.copy());");
unindent();
p("}");
unindent();
p("}");
}
} else {
if( primitive ) {
p("this.f_" + lname + " = other.f_" + lname + ";");
p("this.b_" + lname + " = other.b_" + lname + ";");
} else {
p("this.f_" + lname + " = other.f_" + lname + ";");
p("if( this.f_" + lname + " !=null ) {");
indent();
p("this.f_" + lname + " = this.f_" + lname + ".copy();");
unindent();
p("}");
}
}
}
unindent();
p("}");
p();
}