in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/JavaGenerator.java [1027:1086]
private void generateMethodAssertInitialized(MessageDescriptor m, String className) {
p("public java.util.ArrayList<String> missingFields() {");
indent();
p("java.util.ArrayList<String> missingFields = super.missingFields();");
for (FieldDescriptor field : m.getFields().values()) {
String uname = uCamel(field.getName());
if( field.isRequired() ) {
p("if( !has" + uname + "() ) {");
indent();
p("missingFields.add(\""+field.getName()+"\");");
unindent();
p("}");
}
}
if( !deferredDecode ) {
for (FieldDescriptor field : m.getFields().values()) {
if( field.getTypeDescriptor()!=null && !field.getTypeDescriptor().isEnum()) {
String uname = uCamel(field.getName());
p("if( has" + uname + "() ) {");
indent();
if( !field.isRepeated() ) {
p("try {");
indent();
p("get" + uname + "().assertInitialized();");
unindent();
p("} catch (org.apache.activemq.protobuf.UninitializedMessageException e){");
indent();
p("missingFields.addAll(prefix(e.getMissingFields(),\""+field.getName()+".\"));");
unindent();
p("}");
} else {
String type = javaCollectionType(field);
p("java.util.List<"+type+"> l = get" + uname + "List();");
p("for( int i=0; i < l.size(); i++ ) {");
indent();
p("try {");
indent();
p("l.get(i).assertInitialized();");
unindent();
p("} catch (org.apache.activemq.protobuf.UninitializedMessageException e){");
indent();
p("missingFields.addAll(prefix(e.getMissingFields(),\""+field.getName()+"[\"+i+\"]\"));");
unindent();
p("}");
unindent();
p("}");
}
unindent();
p("}");
}
}
}
p("return missingFields;");
unindent();
p("}");
p();
}