From activemq-commits-return-3917-apmail-geronimo-activemq-commits-archive=geronimo.apache.org@geronimo.apache.org Sun Nov 12 11:56:06 2006 Return-Path: Delivered-To: apmail-geronimo-activemq-commits-archive@www.apache.org Received: (qmail 8272 invoked from network); 12 Nov 2006 11:56:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Nov 2006 11:56:05 -0000 Received: (qmail 90729 invoked by uid 500); 12 Nov 2006 11:56:16 -0000 Delivered-To: apmail-geronimo-activemq-commits-archive@geronimo.apache.org Received: (qmail 90671 invoked by uid 500); 12 Nov 2006 11:56:16 -0000 Mailing-List: contact activemq-commits-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: activemq-dev@geronimo.apache.org Delivered-To: mailing list activemq-commits@geronimo.apache.org Received: (qmail 90656 invoked by uid 99); 12 Nov 2006 11:56:16 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Nov 2006 03:56:16 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Nov 2006 03:56:04 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 4BBF71A9846; Sun, 12 Nov 2006 03:55:35 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r473943 - in /incubator/activemq/activemq-cpp/trunk/activemq-cpp/openwire-scripts: AmqCppClassesGenerator.java AmqCppHeadersGenerator.java Date: Sun, 12 Nov 2006 11:55:35 -0000 To: activemq-commits@geronimo.apache.org From: tabish@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061112115535.4BBF71A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 "); +out.println("#include "); 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( 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(); ) {