private void generateMessageBean()

in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/JavaGenerator.java [242:338]


    private void generateMessageBean(MessageDescriptor m) {
        
        String className = uCamel(m.getName());
        p();
        
        String staticOption = "static ";
        if( multipleFiles && m.getParent()==null ) {
            staticOption="";
        }
        
        String javaImplements = getOption(m.getOptions(), "java_implments", null);
        
        String implementsExpression = "";
        if( javaImplements!=null ) {
            implementsExpression = "implements "+javaImplements+" ";
        }
        
        String baseClass = "org.apache.activemq.protobuf.BaseMessage";
        if( deferredDecode ) {
            baseClass = "org.apache.activemq.protobuf.DeferredDecodeMessage";
        }
        if( m.getBaseType()!=null ) {
            baseClass = javaType(m.getBaseType())+"Base";
        }
        
        p(staticOption+"public final class " + className + " extends "+className+"Base<"+className+"> "+implementsExpression+"{");
        p();

        indent();
        
        for (EnumDescriptor enumType : m.getEnums().values()) {
            generateEnum(enumType);
        }

        // Generate the Nested Messages.
        for (MessageDescriptor subMessage : m.getMessages().values()) {
            generateMessageBean(subMessage);
        }

        // Generate the Group Messages
        for (FieldDescriptor field : m.getFields().values()) {
        	if( isInBaseClass(m, field) ) {
        		continue;
        	}
            if( field.isGroup() ) {
                generateMessageBean(field.getGroup());
            }
        }

        
        generateMethodAssertInitialized(m, className);

        generateMethodClear(m);

        p("public "+className+" clone() {");
        p("   return new "+className+"().mergeFrom(this);");
        p("}");
        p();
        
        generateMethodMergeFromBean(m, className);

        generateMethodSerializedSize(m);
        
        generateMethodMergeFromStream(m, className);

        generateMethodWriteTo(m);

        generateMethodParseFrom(m, className);

        generateMethodToString(m);
        
        generateMethodVisitor(m);
                
        generateMethodType(m, className);
        
        generateMethodEquals(m, className);
                
        unindent();
        p("}");
        p();
        
        p(staticOption+"abstract class " + className + "Base<T> extends "+baseClass+"<T> {");
        p();
        indent();
        
        // Generate the field accessors..
        for (FieldDescriptor field : m.getFields().values()) {
            if( isInBaseClass(m, field) ) {
                continue;
            }
            generateFieldAccessor(field);
        }
        
        unindent();
        p("}");
        p();
    }