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/12 12:55:35 UTC

svn commit: r473943 - in /incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts: AmqCppClassesGenerator.java AmqCppHeadersGenerator.java

Author: tabish
Date: Sun Nov 12 03:55:34 2006
New Revision: 473943

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

Modified:
    incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppClassesGenerator.java
    incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppHeadersGenerator.java

Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppClassesGenerator.java
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppClassesGenerator.java?view=diff&rev=473943&r1=473942&r2=473943
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppClassesGenerator.java (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppClassesGenerator.java Sun Nov 12 03:55:34 2006
@@ -217,9 +217,11 @@
 	protected void generateFile(PrintWriter out) throws Exception {
 		generateLicence(out);		
 out.println("#include <activemq/connector/openwire/commands/"+className+".h>");
+out.println("#include <activemq/exceptions/NullPointerException.h>");
 out.println("");
 out.println("using namespace std;");
 out.println("using namespace activemq;");
+out.println("using namespace activemq::exceptions;");
 out.println("using namespace activemq::connector;");
 out.println("using namespace activemq::connector::openwire;");
 out.println("using namespace activemq::connector::openwire::commands;");
@@ -279,56 +281,37 @@
 
 out.println("");
 out.println("////////////////////////////////////////////////////////////////////////////////");
-out.println(className+"* "+className+"::clone() const {");
+out.println("DataStructure* "+className+"::cloneDataStructure() const {");
 
     String newInstance = decapitalize( className );
 
 out.println("    "+className+"* "+newInstance+" = new "+className+"();");
 out.println("");
-
-    if( baseClass != null ) {
 out.println("    // Copy the data from the base class or classes");
-out.println("    "+baseClass+"::copy( "+newInstance+" );");
-out.println("");
-    }
-    
-    for( Iterator iter = properties.iterator(); iter.hasNext(); ) {
-        JProperty property = (JProperty) iter.next();
-        String type = toCppType(property.getType());
-        String propertyName = property.getSimpleName();
-        String parameterName = decapitalize(propertyName);
-        String constNess = "";
-    
-        if( !property.getType().isPrimitiveType() &&
-            !property.getType().getSimpleName().equals("ByteSequence") && 
-            !type.startsWith("std::vector") ) {
-
-out.println("    "+newInstance+"->"+parameterName+" = this->get"+propertyName+"();");
-        } else if( property.getType().isArrayType() &&
-                !property.getType().getArrayComponentType().isPrimitiveType() ) {
-out.println("    for( size_t i" + parameterName + " = 0; i" + parameterName + " < " + parameterName + ".size(); ++i" + parameterName + " ) {");
-out.println("        "+newInstance+"->get"+propertyName+"().push_back( ");
-out.println("            this->"+parameterName+"[i"+parameterName+"]->clone();");            
-out.println("    }");
-        } else {
-out.println("    "+newInstance+"->"+parameterName+" = this->get"+propertyName+"()->clone();");
-        }
-    }
-
+out.println("    "+newInstance+"->copyDataStructure( this );");
 out.println("");
-out.println("    return "+newInstance);
+out.println("    return "+newInstance+";");
 out.println("}");
 
 out.println("");
 out.println("////////////////////////////////////////////////////////////////////////////////");
-out.println("void "+className+"::copy( "+className+"* dest ) const {");
+out.println("void "+className+"::copyDataStructure( const DataStructure* src ) {");
 out.println("");
 
         if( baseClass != null ) {
-out.println("    // Copy the data from the base class or classes");
-out.println("    "+baseClass+"::copy( "+newInstance+" );");
+out.println("    // Copy the data of the base class or classes");
+out.println("    "+baseClass+"::copyDataStructure( src );");
 out.println("");
         }
+        
+out.println("    const "+className+"* srcPtr = dynamic_cast<const "+className+"*>( src );");
+out.println("");
+out.println("    if( srcPtr == NULL || src == NULL ) {");
+out.println("    ");
+out.println("        throw exceptions::NullPointerException(");
+out.println("            __FILE__, __LINE__,");
+out.println("            \""+className+"::copyDataStructure - src is NULL or invalid\" );");
+out.println("    }");
 
     for( Iterator iter = properties.iterator(); iter.hasNext(); ) {
         JProperty property = (JProperty) iter.next();
@@ -337,19 +320,23 @@
         String parameterName = decapitalize(propertyName);
         String constNess = "";
     
-        if( !property.getType().isPrimitiveType() &&
-            !property.getType().getSimpleName().equals("ByteSequence") && 
-            !type.startsWith("std::vector") ) {
-    
-    out.println("    dest->set"+propertyName+"( this->get"+propertyName+"() );");
+        if( property.getType().isPrimitiveType() ||
+            type.equals("std::string") ||
+            property.getType().getSimpleName().equals("ByteSequence") ){
+    out.println("    this->set"+propertyName+"( srcPtr->get"+propertyName+"() );");
         } else if( property.getType().isArrayType() &&
                    !property.getType().getArrayComponentType().isPrimitiveType() ) {
-    out.println("    for( size_t i" + parameterName + " = 0; i" + parameterName + " < " + parameterName + ".size(); ++i" + parameterName + " ) {");
-    out.println("        dest->get"+propertyName+"().push_back( ");
-    out.println("            this->"+parameterName+"[i"+parameterName+"]->clone() );");            
+    out.println("    for( size_t i" + parameterName + " = 0; i" + parameterName + " < srcPtr->get"+propertyName+"().size(); ++i" + parameterName + " ) {");
+    out.println("        this->get"+propertyName+"().push_back( ");
+    out.println("            srcPtr->get"+propertyName+"()[i"+parameterName+"]->cloneDataStructure() );");            
     out.println("    }");
+        } else if( property.getType().isArrayType() &&
+                   property.getType().getArrayComponentType().isPrimitiveType() ) {
+    out.println("    this->set"+propertyName+"( srcPtr->get"+propertyName+"() );");
         } else {
-    out.println("    dest->set"+propertyName+"( this->get"+propertyName+"()->clone() );");
+    out.println("    this->set"+propertyName+"( ");
+    out.println("        dynamic_cast<"+type+"*>( ");
+    out.println("            srcPtr->get"+propertyName+"()->cloneDataStructure() ) );");
         }
     }
 

Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppHeadersGenerator.java
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppHeadersGenerator.java?view=diff&rev=473943&r1=473942&r2=473943
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppHeadersGenerator.java (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts/AmqCppHeadersGenerator.java Sun Nov 12 03:55:34 2006
@@ -135,14 +135,14 @@
 out.println("         * caller now owns, this will be an exact copy of this one");
 out.println("         * @returns new copy of this object.");
 out.println("         */");
-out.println("        virtual "+className+"* clone() const;");
+out.println("        virtual DataStructure* cloneDataStructure() const;");
 out.println("");
 out.println("        /**");
-out.println("         * Copy the contents of this object and place them into the");      
-out.println("         * instance of this object type that was passed in.");
-out.println("         * @return dest - Destination Object");
+out.println("         * Copy the contents of the passed object into this objects");
+out.println("         * members, overwriting any existing data.");
+out.println("         * @return src - Source Object");
 out.println("         */");
-out.println("        virtual void clone( "+className+"* dest ) const;");
+out.println("        virtual void copyDataStructure( const DataStructure* src );");
 out.println("");
 
         for( Iterator iter = properties.iterator(); iter.hasNext(); ) {