You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2006/11/13 01:44:18 UTC

svn commit: r474107 - in /incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts: AmqCppMarshallingClassesGenerator.java AmqCppMarshallingHeadersGenerator.java

Author: tabish
Date: Sun Nov 12 16:44:17 2006
New Revision: 474107

URL: http://svn.apache.org/viewvc?view=rev&rev=474107
Log:
Updates for planned Openwire Support

Modified:
    incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingClassesGenerator.java
    incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingHeadersGenerator.java

Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingClassesGenerator.java
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingClassesGenerator.java?view=diff&rev=474107&r1=474106&r2=474107
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingClassesGenerator.java (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingClassesGenerator.java Sun Nov 12 16:44:17 2006
@@ -47,6 +47,7 @@
 
         String setter = property.getSetter().getSimpleName();
         String type = property.getType().getSimpleName();
+        String nativeType = toCppType(property.getType());
         String propertyName = property.getType().getSimpleName();
 
         if( type.equals("boolean") ) {
@@ -65,10 +66,10 @@
             out.println("    info->" + setter + "( dataIn->readInt() );");
         }
         else if( type.equals("long") ) {
-            out.println("    info->" + setter + "( TightUnmarshalLong( wireFormat, dataIn, bs ) );");
+            out.println("    info->" + setter + "( tightUnmarshalLong( wireFormat, dataIn, bs ) );");
         }
         else if( type.equals("String") ) {
-            out.println("    info->" + setter + "( TightUnmarshalString( dataIn, bs ) );");
+            out.println("    info->" + setter + "( tightUnmarshalString( dataIn, bs ) );");
         }
         else if( type.equals("byte[]") || type.equals("ByteSequence") ) {
             if( size != null ) {
@@ -79,16 +80,16 @@
             }
         }
         else if (isThrowable(property.getType())) {
-            out.println("    info->" + setter + "( dynamic_cast< " + propertyName + "* >(");
-            out.println("        tightUnmarsalThrowable( wireFormat, dataIn, bs ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >(");
+            out.println("        tightUnmarshalBrokerError( wireFormat, dataIn, bs ) ) );");
         }
         else if (isCachedProperty(property)) {
-            out.println("    info->" + setter + "( dynamic_cast< " + propertyName + "* >(");
-            out.println("        tightUnmarsalCachedObject( wireFormat, dataIn, bs ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >(");
+            out.println("        tightUnmarshalCachedObject( wireFormat, dataIn, bs ) ) );");
         }
         else {
-            out.println("    info->" + setter + "( dynamic_cast< " + propertyName + "* >(");
-            out.println("        tightUnmarsalNestedObject( wireFormat, dataIn, bs ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >(");
+            out.println("        tightUnmarshalNestedObject( wireFormat, dataIn, bs ) ) );");
         }
     }
 
@@ -96,12 +97,13 @@
         JClass propertyType = property.getType();
         String arrayType = propertyType.getArrayComponentType().getSimpleName();
         String setter = property.getSetter().getSimpleName();
+        String getter = property.getGetter().getSimpleName();
         out.println();
         if (size != null) {
             out.println("    {");
             out.println("        " + arrayType + " value[] = new " + arrayType + "[" + size.asInt() + "];");
             out.println("        " + "for( int i = 0; i < " + size.asInt() + "; i++ ) {");
-            out.println("            value[i] = (" + arrayType + ") tightUnmarsalNestedObject( wireFormat,dataIn, bs );");
+            out.println("            value[i] = (" + arrayType + ") tightUnmarshalNestedObject( wireFormat, dataIn, bs );");
             out.println("        }");
             out.println("        info->" + setter + "( value );");
             out.println("    }");
@@ -109,15 +111,14 @@
         else {
             out.println("    if( bs->readBoolean() ) {");
             out.println("        short size = dataIn->readShort();");
-            out.println("        " + arrayType + "* value = new " + arrayType + "[size];");
+            out.println("        info->" + getter + "().reserve( size );");
             out.println("        for( int i = 0; i < size; i++ ) {");
-            out.println("            value[i] = dynamic_cast< " + arrayType + "* >(");
-            out.println("                tightUnmarsalNestedObject( wireFormat, dataIn, bs ) );");
+            out.println("            info->" + getter + "().push_back( dynamic_cast< " + arrayType + "* >(");
+            out.println("                tightUnmarshalNestedObject( wireFormat, dataIn, bs ) ) );");
             out.println("        }");
-            out.println("        info->" + setter + "( value );");
             out.println("    }");
             out.println("    else {");
-            out.println("        info->" + setter + "( NULL );");
+            out.println("        info->" + getter + "().clear();");
             out.println("    }");
         }
     }
@@ -132,7 +133,7 @@
             JClass propertyType = property.getType();
             String type = propertyType.getSimpleName();
             String getter = "info->" + property.getGetter().getSimpleName() + "()";
-
+            
             if (type.equals("boolean")) {
                 out.println("    bs->writeBoolean( " + getter + " );");
             }
@@ -176,14 +177,11 @@
                 out.println("    rc += tightMarshalBrokerError1( wireFormat, " + getter + ", bs );");
             }
             else {
-                out.println( "    DataStructure* data = " );
-                out.println( "        dynamic_cast< DataStructure* >( " + getter + " );\n" );
-
                 if (isCachedProperty(property)) {
-                    out.println("    rc += tightMarshalCachedObject1( wireFormat, data, bs );");
+                    out.println("    rc += tightMarshalCachedObject1( wireFormat, " + getter + ", bs );");
                 }
                 else {
-                    out.println("    rc += tightMarshalNestedObject1( wireFormat, data, bs );");
+                    out.println("    rc += tightMarshalNestedObject1( wireFormat, " + getter + ", bs );");
                 }
             }
         }
@@ -192,6 +190,7 @@
 
     protected void generateTightMarshal2Body(PrintWriter out) {
         List properties = getProperties();
+        int count = 0;
         for (Iterator iter = properties.iterator(); iter.hasNext();) {
             JProperty property = (JProperty) iter.next();
             JAnnotation annotation = property.getAnnotation("openwire:property");
@@ -199,6 +198,7 @@
             JClass propertyType = property.getType();
             String type = propertyType.getSimpleName();
             String getter = "info->" + property.getGetter().getSimpleName() + "()";
+            count++;
 
             if (type.equals("boolean")) {
                 out.println("    bs->readBoolean();");
@@ -244,14 +244,11 @@
                 out.println("    tightMarshalBrokerError2( wireFormat, " + getter + ", dataOut, bs );");
             }
             else {
-                out.println( "    DataStructure* data = " );
-                out.println( "        dynamic_cast< DataStructure* >( " + getter + " );\n" );
-
                 if( isCachedProperty(property) ) {
-                    out.println("    tightMarshalCachedObject2( wireFormat, data, dataOut, bs );");
+                    out.println("    tightMarshalCachedObject2( wireFormat, "+getter+", dataOut, bs );");
                 }
                 else {
-                    out.println("    tightMarshalNestedObject2( wireFormat, data, dataOut, bs );");
+                    out.println("    tightMarshalNestedObject2( wireFormat, "+getter+", dataOut, bs );");
                 }
             }
         }
@@ -265,6 +262,7 @@
 
         String propertyName = property.getSimpleName();
         String type = property.getType().getSimpleName();
+        String nativeType = toCppType(property.getType());
         String setter = property.getSetter().getSimpleName();
 
         if (type.equals("boolean")) {
@@ -297,15 +295,16 @@
             }
         }
         else if (isThrowable(property.getType())) {
-            out.println("    info->" + setter + "( looseUnmarshalBrokerError( wireFormat, dataIn ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >(");
+            out.println("        looseUnmarshalBrokerError( wireFormat, dataIn ) ) );");
         }
         else if (isCachedProperty(property)) {
-            out.println("   info->" + setter + "( dynamic_cast<" + type + "* >( ");
-            out.println("       looseUnmarshalCachedObject( wireFormat, dataIn ) ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >( ");
+            out.println("        looseUnmarshalCachedObject( wireFormat, dataIn ) ) );");
         }
         else {
-            out.println("   info->" + setter + "( dynamic_cast<" + type + "* >( ");
-            out.println("       looseUnmarshalNestedObject( wireFormat, dataIn ) ) );");
+            out.println("    info->" + setter + "( dynamic_cast< " + nativeType + "* >( ");
+            out.println("        looseUnmarshalNestedObject( wireFormat, dataIn ) ) );");
         }
     }
 
@@ -314,7 +313,8 @@
         String arrayType = propertyType.getArrayComponentType().getSimpleName();
         String propertyName = property.getSimpleName();
         String setter = property.getSetter().getSimpleName();
-
+        String getter = property.getGetter().getSimpleName();
+        
         out.println();
         if (size != null) {
             out.println("    {");
@@ -328,15 +328,14 @@
         else {
             out.println("    if( dataIn->readBoolean() ) {");
             out.println("        short size = dataIn->readShort();");
-            out.println("        " + arrayType + "* value = new " + arrayType + "[size];");
+            out.println("        info->" + getter + "().reserve( size );");
             out.println("        for( int i = 0; i < size; i++ ) {");
-            out.println("            value[i] = dynamic_cast<" + arrayType + "* >(");
-            out.println("                looseUnmarshalNestedObject( wireFormat,dataIn ) );");
+            out.println("            info->" + getter + "().push_back( dynamic_cast<" + arrayType + "* >(");
+            out.println("                looseUnmarshalNestedObject( wireFormat, dataIn ) ) );");
             out.println("        }");
-            out.println("        info->" + setter + "( value );");
             out.println("    }");
             out.println("    else {");
-            out.println("        info->" + setter + "( NULL );");
+            out.println("        info->" + getter + "().clear();");
             out.println("    }");
         }
     }
@@ -397,14 +396,11 @@
                 out.println("    looseMarshalBrokerError( wireFormat, " + getter + ", dataOut );");
             }
             else {
-                out.println( "    DataStructure* data = " );
-                out.println( "        dynamic_cast< DataStructure* >( " + getter + " );\n" );
-                
                 if( isCachedProperty( property ) ) {
-                    out.println("    looseMarshalCachedObject( wireFormat, data, dataOut );");
+                    out.println("    looseMarshalCachedObject( wireFormat, "+getter+", dataOut );");
                 }
                 else {
-                    out.println("    looseMarshalNestedObject( wireFormat, data, dataOut );");
+                    out.println("    looseMarshalNestedObject( wireFormat, "+getter+", dataOut );");
                 }
             }
         }

Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingHeadersGenerator.java
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingHeadersGenerator.java?view=diff&rev=474107&r1=474106&r2=474107
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingHeadersGenerator.java (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppMarshallingHeadersGenerator.java Sun Nov 12 16:44:17 2006
@@ -20,6 +20,8 @@
 import java.io.File;
 import java.io.PrintWriter;
 
+import org.codehaus.jam.JClass;
+
 /**
  *
  * @version $Revision: 381410 $
@@ -40,6 +42,48 @@
         return ".h";
     }
     
+    public String toCppType(JClass type) {
+        String name = type.getSimpleName();
+        if (name.equals("String")) {
+            return "std::string";
+        }
+        else if( type.isArrayType() ) {
+            if( name.equals( "byte[]" ) )
+                name = "char[]";
+            
+            JClass arrayClass = type.getArrayComponentType();
+            
+            if( arrayClass.isPrimitiveType() ) {
+                return "std::vector<" + name.substring(0, name.length()-2) + ">";
+            } else {
+                return "std::vector<" + name.substring(0, name.length()-2) + "*>";                
+            }
+        }
+        else if( name.equals( "Throwable" ) || name.equals( "Exception" ) ) {
+            return "BrokerError";
+        }
+        else if( name.equals("BaseDataStructure" ) ){
+            return "DataStructure";
+        }
+        else if( name.equals("ByteSequence") ) {
+            return "std::vector<char>";
+        }
+        else if( name.equals("boolean") ) {
+            return "bool";
+        }
+        else if( name.equals("long") ) {
+            return "long long";
+        }
+        else if( name.equals("byte") ) {
+            return "char";
+        }
+        else if( !type.isPrimitiveType() ) {
+            return name;
+        }
+        else {
+            return name;
+        }
+    }
     
 	protected void generateLicence(PrintWriter out) {
 out.println("/*");