protected void generateFile()

in activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/marshallers/AmqCppMarshallingClassesGenerator.java [567:791]


    protected void generateFile(PrintWriter out) throws Exception {
        generateLicence(out);

out.println("");
out.println("#include <activemq/wireformat/openwire/marshal/generated/"+className+".h>");
out.println("");
out.println("#include <activemq/commands/"+jclass.getSimpleName()+".h>");
out.println("#include <activemq/exceptions/ActiveMQException.h>");
out.println("#include <decaf/lang/Pointer.h>");
out.println("");
out.println("//");
out.println("//     NOTE!: This file is autogenerated - do not modify!");
out.println("//            if you need to make a change, please see the Java Classes in the");
out.println("//            activemq-core module");
out.println("//");
out.println("");
out.println("using namespace std;");
out.println("using namespace activemq;");
out.println("using namespace activemq::exceptions;");
out.println("using namespace activemq::commands;");
out.println("using namespace activemq::wireformat;");
out.println("using namespace activemq::wireformat::openwire;");
out.println("using namespace activemq::wireformat::openwire::marshal;");
out.println("using namespace activemq::wireformat::openwire::utils;");
out.println("using namespace activemq::wireformat::openwire::marshal::generated;");
out.println("using namespace decaf;");
out.println("using namespace decaf::io;");
out.println("using namespace decaf::lang;");
out.println("");

    String typeName = jclass.getSimpleName().toUpperCase();

    if( !isAbstractClass() ) {
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("DataStructure* "+className+"::createObject() const {");
out.println("    return new "+jclass.getSimpleName()+"();");
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("unsigned char "+className+"::getDataStructureType() const {");
out.println("    return "+jclass.getSimpleName()+"::ID_"+typeName+";");
out.println("}");
out.println("");
    }

out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::tightUnmarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataInputStream* dataIn, BooleanStream* bs) {");
out.println("");
out.println("    try {");
out.println("");
out.println("        "+baseClass+"::tightUnmarshal(wireFormat, dataStructure, dataIn, bs);");
out.println("");

    List<JProperty> properties = getProperties();
    boolean marshallerAware = isMarshallerAware();
    if( !properties.isEmpty() || marshallerAware ) {

        String properClassName = getProperClassName( jclass.getSimpleName() );
out.println("        "+properClassName+"* info =");
out.println("            dynamic_cast<"+properClassName+"*>(dataStructure);");
    }

    if( marshallerAware ) {
out.println("        info->beforeUnmarshal(wireFormat);");
out.println("");
    }

    if( checkNeedsWireFormatVersion() ) {
        out.println("");
        out.println("        int wireVersion = wireFormat->getVersion();");
        out.println("");
    }

    generateTightUnmarshalBody(out);

    if( marshallerAware ) {
out.println("");
out.println("        info->afterUnmarshal( wireFormat );");
    }

out.println("    }");
out.println("    AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println("    AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println("    AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("int "+className+"::tightMarshal1(OpenWireFormat* wireFormat, DataStructure* dataStructure, BooleanStream* bs) {");
out.println("");
out.println("    try {");
out.println("");

    if( checkNeedsInfoPointerTM1() ) {
        String properClassName = getProperClassName( jclass.getSimpleName() );
out.println("        "+properClassName+"* info =");
out.println("            dynamic_cast<"+properClassName+"*>(dataStructure);");
out.println("");
    }

    if( marshallerAware ) {
out.println("        info->beforeMarshal(wireFormat);");
    }

out.println("        int rc = "+baseClass+"::tightMarshal1(wireFormat, dataStructure, bs);");

    if( checkNeedsWireFormatVersion() ) {
        out.println("");
        out.println("        int wireVersion = wireFormat->getVersion();");
        out.println("");
    }

    int baseSize = generateTightMarshal1Body(out);

out.println("");
out.println("        return rc + "+baseSize+";");
out.println("    }");
out.println("    AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println("    AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println("    AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::tightMarshal2(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataOutputStream* dataOut, BooleanStream* bs) {");
out.println("");
out.println("    try {");
out.println("");
out.println("        "+baseClass+"::tightMarshal2(wireFormat, dataStructure, dataOut, bs );");
out.println("");

    if( checkNeedsInfoPointerTM2() ) {
        String properClassName = getProperClassName( jclass.getSimpleName() );
out.println("        "+properClassName+"* info =");
out.println("            dynamic_cast<"+properClassName+"*>(dataStructure);");
    }

    if( checkNeedsWireFormatVersion() ) {
        out.println("");
        out.println("        int wireVersion = wireFormat->getVersion();");
        out.println("");
    }

    generateTightMarshal2Body(out);

    if( marshallerAware ) {
out.println("        info->afterMarshal(wireFormat);");
    }

out.println("    }");
out.println("    AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println("    AMQ_CATCH_EXCEPTION_CONVERT( exceptions::ActiveMQException, decaf::io::IOException)" );
out.println("    AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::looseUnmarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataInputStream* dataIn) {");
out.println("");
out.println("    try {");
out.println("");
out.println("        "+baseClass+"::looseUnmarshal(wireFormat, dataStructure, dataIn);");

    if( !properties.isEmpty() || marshallerAware ) {
        String properClassName = getProperClassName( jclass.getSimpleName() );
out.println("        "+properClassName+"* info =");
out.println("            dynamic_cast<"+properClassName+"*>(dataStructure);");
    }

    if( marshallerAware ) {
out.println("        info->beforeUnmarshal(wireFormat);");
    }

    if( checkNeedsWireFormatVersion() ) {
        out.println("");
        out.println("        int wireVersion = wireFormat->getVersion();");
        out.println("");
    }

    generateLooseUnmarshalBody(out);

    if( marshallerAware ) {
out.println("        info->afterUnmarshal(wireFormat);");
    }

out.println("    }");
out.println("    AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println("    AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println("    AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::looseMarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataOutputStream* dataOut) {");
out.println("");
out.println("    try {");
out.println("");

    if( !properties.isEmpty() || marshallerAware ) {
        String properClassName = getProperClassName( jclass.getSimpleName() );
out.println("        "+properClassName+"* info =");
out.println("            dynamic_cast<"+properClassName+"*>(dataStructure);");
    }

    if( marshallerAware ) {
out.println("        info->beforeMarshal(wireFormat);");
    }

out.println("        "+baseClass+"::looseMarshal(wireFormat, dataStructure, dataOut);");

    if( checkNeedsWireFormatVersion() ) {
        out.println("");
        out.println("        int wireVersion = wireFormat->getVersion();");
        out.println("");
    }

    generateLooseMarshalBody(out);

    if( marshallerAware ) {
out.println("        info->afterMarshal(wireFormat);");
    }

out.println("    }");
out.println("    AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println("    AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println("    AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
}