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 2009/12/31 00:13:20 UTC
svn commit: r894733 -
/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/
Author: tabish
Date: Wed Dec 30 23:13:19 2009
New Revision: 894733
URL: http://svn.apache.org/viewvc?rev=894733&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-274
Added:
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java (with props)
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java (with props)
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java (with props)
Modified:
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandClassGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandCodeGeneratorsFactory.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandSourceGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConnectionIdSourceGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConsumerIdSourceGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdHeaderGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdSourceGenerator.java
activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/SessionIdSourceGenerator.java
Added: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java?rev=894733&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -0,0 +1,26 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.tool.commands;
+
+import java.io.PrintWriter;
+
+public class BrokerIdSourceGenerator extends CommandSourceGenerator {
+
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println(" return this->value;");
+ }
+}
Propchange: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/BrokerIdSourceGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandClassGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandClassGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandClassGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandClassGenerator.java Wed Dec 30 23:13:19 2009
@@ -78,7 +78,7 @@
File headerFile = new File(destDir, className + ".h");
- CommandHeaderGenerator hdrGenerator = generatorsFactory.getHeaderGenerator( className );
+ CommandCodeGenerator hdrGenerator = generatorsFactory.getHeaderGenerator( className );
hdrGenerator.setJClass( getJclass() );
hdrGenerator.setProperties( getProperties() );
@@ -115,7 +115,7 @@
File sourceFile = new File(destDir, className + ".cpp");
- CommandSourceGenerator srcGenerator = generatorsFactory.getSourceGenerator( className );
+ CommandCodeGenerator srcGenerator = generatorsFactory.getSourceGenerator( className );
srcGenerator.setJClass( getJclass() );
srcGenerator.setProperties( getProperties() );
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandCodeGeneratorsFactory.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandCodeGeneratorsFactory.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandCodeGeneratorsFactory.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandCodeGeneratorsFactory.java Wed Dec 30 23:13:19 2009
@@ -64,25 +64,11 @@
*
* @return a new Header File code generator.
*/
- public CommandHeaderGenerator getHeaderGenerator( String className ) {
+ public CommandCodeGenerator getHeaderGenerator( String className ) {
- CommandHeaderGenerator generator = null;
- if( className.equals("Message") ) {
- generator = new MessageHeaderGenerator();
- } else if( className.equals("ConnectionId") ) {
- generator = new ConnectionIdHeaderGenerator();
- } else if( className.equals("ConsumerId") ) {
- generator = new ConsumerIdHeaderGenerator();
- } else if( className.equals("ProducerId") ) {
- generator = new ProducerIdHeaderGenerator();
- } else if( className.equals("SessionId") ) {
- generator = new SessionIdHeaderGenerator();
- } else if( className.equals("SessionInfo") ) {
- generator = new SessionInfoHeaderGenerator();
- } else {
- generator = new CommandHeaderGenerator();
- }
+ CommandCodeGenerator generator = null;
+ generator = this.getCodeGenerator( className, "Header" );
if( className.endsWith("Id") ) {
generator.setComparable( true );
generator.setAssignable( true );
@@ -103,25 +89,11 @@
*
* @return a new Source File code generator.
*/
- public CommandSourceGenerator getSourceGenerator( String className ) {
+ public CommandCodeGenerator getSourceGenerator( String className ) {
- CommandSourceGenerator generator = null;
- if( className.equals("Message") ) {
- generator = new MessageSourceGenerator();
- } else if( className.equals("ConnectionId") ) {
- generator = new ConnectionIdSourceGenerator();
- } else if( className.equals("ConsumerId") ) {
- generator = new ConsumerIdSourceGenerator();
- } else if( className.equals("ProducerId") ) {
- generator = new ProducerIdSourceGenerator();
- } else if( className.equals("SessionId") ) {
- generator = new SessionIdSourceGenerator();
- } else if( className.equals("SessionInfo") ) {
- generator = new SessionInfoSourceGenerator();
- } else {
- generator = new CommandSourceGenerator();
- }
+ CommandCodeGenerator generator = null;
+ generator = this.getCodeGenerator( className, "Source" );
if( className.endsWith("Id") ) {
generator.setComparable( true );
generator.setAssignable( true );
@@ -130,4 +102,41 @@
return generator;
}
+ /**
+ * Given a class name return an instance of a CSharp Class File Generator
+ * that can generate the file for the Class.
+ *
+ * @param className - name of the class to find the generator for
+ * @param fileType - type identifier for the generator, either "Source" or "Header"
+ *
+ * @return a new Header File code generator.
+ */
+ public CommandCodeGenerator getCodeGenerator( String className, String fileType ) {
+
+ Class<?> generatorClass = null;
+
+ try {
+ generatorClass = Class.forName( "org.apache.activemq.openwire.tool.commands." + className + fileType + "Generator" );
+ } catch( ClassNotFoundException e ) {
+ try {
+ generatorClass = Class.forName( "org.apache.activemq.openwire.tool.commands.Command" + fileType + "Generator" );
+ } catch(ClassNotFoundException e1) {
+ e1.printStackTrace();
+ return null;
+ }
+ }
+
+ CommandCodeGenerator generator;
+ try {
+ generator = (CommandCodeGenerator) generatorClass.newInstance();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ return null;
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ return generator;
+ }
}
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandSourceGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandSourceGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/CommandSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -108,17 +108,7 @@
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("std::string "+getClassName()+"::toString() const {");
out.println("");
- out.println(" ostringstream stream;" );
- out.println("");
- out.println(" stream << \"Begin Class = "+getClassName()+"\" << std::endl;" );
- out.println(" stream << \" Value of "+getClassName()+"::ID_" + getClassName().toUpperCase() + " = "+getOpenWireOpCode()+"\" << std::endl;");
generateToStringBody(out);
- if( getBaseClassName() != null ) {
- out.println(" stream << "+ getBaseClassName() +"::toString();");
- }
- out.println(" stream << \"End Class = "+getClassName()+"\" << std::endl;" );
- out.println("");
- out.println(" return stream.str();");
out.println("}");
out.println("");
out.println("////////////////////////////////////////////////////////////////////////////////");
@@ -246,48 +236,98 @@
}
protected void generateToStringBody( PrintWriter out ) {
+
+ out.println(" ostringstream stream;" );
+ out.println("");
+
+ if( getBaseClassName().equals( "BaseCommand" ) ) {
+ out.println(" stream << \""+getClassName()+" { \"" );
+ out.println(" << \"commandId = \" << this->getCommandId() << \", \"");
+ out.println(" << \"responseRequired = \" << boolalpha << this->isResponseRequired();");
+
+ if( getProperties().size() > 0 ) {
+ out.println(" stream << \", \";");
+ }
+ } else {
+ out.println(" stream << \""+getClassName()+" { \";" );
+ }
+
+ int length = getProperties().size();
+ int count = 0;
+
for( JProperty property : getProperties() ) {
+
String type = toCppType(property.getType());
String propertyName = property.getSimpleName();
String parameterName = decapitalize(propertyName);
String getter = property.getGetter().getSimpleName();
if( property.getType().getSimpleName().equals("ByteSequence") ) {
- out.println(" for( size_t i" + parameterName + " = 0; i" + parameterName + " < this->"+getter+"().size(); ++i" + parameterName + " ) {");
- out.println(" stream << \" Value of "+propertyName+"[\" << i" + parameterName+" << \"] = \" << this->"+getter+"()[i"+parameterName+"] << std::endl;" );
- out.println(" }" );
+
+ out.println(" stream << \""+propertyName+" = \";");
+ out.println(" if( this->"+getter+"().size() > 0 ) {");
+ out.println(" stream << \"[size=\" << this->" + getter + "().size() << \"]\";");
+ out.println(" } else {");
+ out.println(" stream << \"NULL\";");
+ out.println(" }");
+
} else if( type.equals("unsigned char") ){
- out.println(" stream << \" Value of "+propertyName+" = \" << (int)this->"+getter+"() << std::endl;");
- } else if( property.getType().isPrimitiveType() ||
- type.equals("std::string") ){
+ out.println(" stream << \""+propertyName+" = \" << (int)this->"+getter+"();");
+
+ } else if( property.getType().isPrimitiveType() || type.equals("std::string") ){
+
+ out.println(" stream << \""+propertyName+" = \" << this->"+getter+"();");
- out.println(" stream << \" Value of "+propertyName+" = \" << this->"+getter+"() << std::endl;");
} else if( property.getType().isArrayType() &&
!property.getType().getArrayComponentType().isPrimitiveType() ) {
- out.println(" for( size_t i" + parameterName + " = 0; i" + parameterName + " < this->"+getter+"().size(); ++i" + parameterName + " ) {");
- out.println(" stream << \" Value of "+propertyName+"[\" << i" + parameterName+" << \"] is Below:\" << std::endl;" );
- out.println(" if( this->"+getter+"()[i"+parameterName+"] != NULL ) {");
- out.println(" stream << this->"+getter+"()[i"+parameterName+"]->toString() << std::endl;");
- out.println(" } else {");
- out.println(" stream << \" Object is NULL\" << std::endl;");
+ out.println(" stream << \""+propertyName+" = \";");
+ out.println(" if( this->"+getter+"().size() > 0 ) {");
+ out.println(" stream << \"[\";");
+ out.println(" for( size_t i" + parameterName + " = 0; i" + parameterName + " < this->"+getter+"().size(); ++i" + parameterName + " ) {");
+ out.println(" if( this->"+getter+"()[i"+parameterName+"] != NULL ) {");
+ out.println(" stream << this->"+getter+"()[i"+parameterName+"]->toString() << \", \";");
+ out.println(" } else {");
+ out.println(" stream << \"NULL\" << \", \";");
+ out.println(" }");
out.println(" }");
+ out.println(" stream << \"]\";");
+ out.println(" } else {");
+ out.println(" stream << \"NULL\";");
out.println(" }");
+
} else if( property.getType().isArrayType() &&
property.getType().getArrayComponentType().isPrimitiveType() ) {
- out.println(" for( size_t i" + parameterName + " = 0; i" + parameterName + " < this->"+getter+"().size(); ++i" + parameterName + " ) {");
- out.println(" stream << \" Value of "+propertyName+"[\" << i"+parameterName+" << \"] = \" << this->"+getter+"()[i"+parameterName+"] << std::endl;");
+ out.println(" stream << \""+propertyName+" = \";");
+ out.println(" if( this->"+getter+"().size() > 0 ) {");
+ out.println(" stream << \"[\";");
+ out.println(" for( size_t i" + parameterName + " = 0; i" + parameterName + " < this->"+getter+"().size(); ++i" + parameterName + " ) {");
+ out.println(" stream << this->"+getter+"()[i"+parameterName+"] << \",\";");
+ out.println(" }");
+ out.println(" stream << \"]\";");
+ out.println(" } else {");
+ out.println(" stream << \"NULL\";");
out.println(" }");
+
} else {
- out.println(" stream << \" Value of "+propertyName+" is Below:\" << std::endl;" );
+
+ out.println(" stream << \""+propertyName+" = \";" );
out.println(" if( this->"+getter+"() != NULL ) {");
- out.println(" stream << this->"+getter+"()->toString() << std::endl;");
+ out.println(" stream << this->"+getter+"()->toString();");
out.println(" } else {");
- out.println(" stream << \" Object is NULL\" << std::endl;");
+ out.println(" stream << \"NULL\";");
out.println(" }");
}
+
+ if( ++count < length ) {
+ out.println(" stream << \", \";");
+ }
}
+
+ out.println(" stream << \" }\";" );
+ out.println("");
+ out.println(" return stream.str();");
}
protected void generateEqualsBody( PrintWriter out ) {
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConnectionIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConnectionIdSourceGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConnectionIdSourceGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConnectionIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -49,4 +49,8 @@
super.generateAdditionalConstructors(out);
}
+
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println(" return this->value;");
+ }
}
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConsumerIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConsumerIdSourceGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConsumerIdSourceGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ConsumerIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -17,6 +17,7 @@
package org.apache.activemq.openwire.tool.commands;
import java.io.PrintWriter;
+import java.util.Set;
public class ConsumerIdSourceGenerator extends CommandSourceGenerator {
@@ -33,4 +34,22 @@
super.generateAdditionalMethods(out);
}
+ protected void populateIncludeFilesSet() {
+
+ super.populateIncludeFilesSet();
+
+ Set<String> includes = getIncludeFiles();
+ includes.add("<sstream>");
+ }
+
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println(" ostringstream stream;" );
+ out.println("");
+ out.println(" stream << this->connectionId << \":\"");
+ out.println(" << this->sessionId << \":\"");
+ out.println(" << this->value;");
+ out.println("");
+ out.println(" return stream.str();");
+ }
+
}
Added: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java?rev=894733&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java Wed Dec 30 23:13:19 2009
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.tool.commands;
+
+import java.io.PrintWriter;
+import java.util.Set;
+
+public class MessageIdHeaderGenerator extends CommandHeaderGenerator {
+
+ protected void populateIncludeFilesSet() {
+ Set<String> includes = getIncludeFiles();
+ includes.add("<activemq/commands/ProducerInfo.h>");
+ includes.add("<activemq/commands/ProducerId.h>");
+
+ super.populateIncludeFilesSet();
+ }
+
+ protected void generateAdditionalConstructors( PrintWriter out ) {
+
+ out.println(" "+getClassName()+"( const std::string& messageKey );");
+ out.println("");
+ out.println(" "+getClassName()+"( const Pointer<ProducerInfo>& producerInfo, long long producerSequenceId );");
+ out.println("");
+ out.println(" "+getClassName()+"( const Pointer<ProducerId>& producerId, long long producerSequenceId );");
+ out.println("");
+ out.println(" "+getClassName()+"( const std::string& producerId, long long producerSequenceId );");
+ out.println("");
+
+ super.generateAdditionalConstructors(out);
+ }
+
+ protected void generateProperties( PrintWriter out ) {
+
+ out.println(" private:");
+ out.println("");
+ out.println(" mutable std::string key;");
+ out.println("");
+
+ super.generateProperties(out);
+ }
+
+ protected void generateAdditonalMembers( PrintWriter out ) {
+ out.println(" void setValue( const std::string& key );");
+ out.println("");
+ out.println(" void setTextView( const std::string& key );");
+ out.println("");
+
+ super.generateAdditonalMembers( out );
+ }
+
+}
Propchange: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdHeaderGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java?rev=894733&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.openwire.tool.commands;
+
+import java.io.PrintWriter;
+import java.util.Set;
+
+public class MessageIdSourceGenerator extends CommandSourceGenerator {
+
+ protected void generateAdditionalConstructors( PrintWriter out ) {
+
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("MessageId::MessageId( const std::string& messageKey ) {");
+ out.println(" this->setValue( messageKey );");
+ out.println("}");
+ out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("MessageId::MessageId( const Pointer<ProducerInfo>& producerInfo, long long producerSequenceId ) {");
+ out.println(" this->producerId = producerInfo->getProducerId();");
+ out.println(" this->producerSequenceId = producerSequenceId;");
+ out.println("}");
+ out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("MessageId::MessageId( const Pointer<ProducerId>& producerId, long long producerSequenceId ) {");
+ out.println(" this->producerId = producerId;");
+ out.println(" this->producerSequenceId = producerSequenceId;");
+ out.println("}");
+ out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("MessageId::MessageId( const std::string& producerId, long long producerSequenceId ) {");
+ out.println(" this->producerId.reset( new ProducerId( producerId ) );");
+ out.println(" this->producerSequenceId = producerSequenceId;");
+ out.println("}");
+ out.println("");
+
+ super.generateAdditionalConstructors(out);
+ }
+
+ protected void generateAdditionalMethods( PrintWriter out ) {
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("void MessageId::setValue( const std::string& key ) {");
+ out.println("");
+ out.println(" std::string messageKey = key;");
+ out.println("");
+ out.println(" // Parse off the sequenceId");
+ out.println(" std::size_t p = messageKey.rfind( ':' );");
+ out.println("");
+ out.println(" if( p != std::string::npos ) {");
+ out.println(" producerSequenceId = Long::parseLong( messageKey.substr( p + 1, std::string::npos ) );");
+ out.println(" messageKey = messageKey.substr( 0, p );");
+ out.println(" }");
+ out.println("");
+ out.println(" this->producerId.reset( new ProducerId( messageKey ) );");
+ out.println(" this->key = messageKey;");
+ out.println("}");
+ out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("void MessageId::setTextView( const std::string& key ) {");
+ out.println(" this->key = key;");
+ out.println("}");
+ out.println("");
+
+ super.generateAdditionalMethods(out);
+ }
+
+ protected void populateIncludeFilesSet() {
+
+ super.populateIncludeFilesSet();
+
+ Set<String> includes = getIncludeFiles();
+ includes.add("<decaf/lang/Long.h>");
+ includes.add("<sstream>");
+ }
+
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println("");
+ out.println(" if( key == \"\" ) {");
+ out.println(" this->key = this->producerId->toString() + \":\" + ");
+ out.println(" Long::toString( this->producerSequenceId ) + \":\" + ");
+ out.println(" Long::toString( this->brokerSequenceId );");
+ out.println(" }");
+ out.println("");
+ out.println(" return this->key;");
+ }
+
+}
Propchange: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/MessageIdSourceGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdHeaderGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdHeaderGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdHeaderGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdHeaderGenerator.java Wed Dec 30 23:13:19 2009
@@ -29,11 +29,9 @@
}
protected void generateAdditionalConstructors( PrintWriter out ) {
- out.println(" "+getClassName()+"( const SessionId& sessionId, long long consumerId ) {");
- out.println(" this->connectionId = sessionId.getConnectionId();");
- out.println(" this->sessionId = sessionId.getValue();");
- out.println(" this->value = consumerId;");
- out.println(" }");
+ out.println(" "+getClassName()+"( const SessionId& sessionId, long long consumerId );");
+ out.println("");
+ out.println(" "+getClassName()+"( std::string producerId );");
out.println("");
super.generateAdditionalConstructors(out);
@@ -52,6 +50,8 @@
protected void generateAdditonalMembers( PrintWriter out ) {
out.println(" const Pointer<SessionId>& getParentId() const;");
out.println("");
+ out.println(" void setProducerSessionKey( std::string sessionKey );");
+ out.println("");
super.generateAdditonalMembers( out );
}
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdSourceGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdSourceGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/ProducerIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -17,9 +17,37 @@
package org.apache.activemq.openwire.tool.commands;
import java.io.PrintWriter;
+import java.util.Set;
public class ProducerIdSourceGenerator extends CommandSourceGenerator {
+ protected void generateAdditionalConstructors( PrintWriter out ) {
+
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("ProducerId::ProducerId( const SessionId& sessionId, long long consumerId ) {");
+ out.println(" this->connectionId = sessionId.getConnectionId();");
+ out.println(" this->sessionId = sessionId.getValue();");
+ out.println(" this->value = consumerId;");
+ out.println("}");
+ out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("ProducerId::ProducerId( std::string producerKey ) {");
+ out.println("");
+ out.println(" // Parse off the producerId");
+ out.println(" std::size_t p = producerKey.rfind( ':' );");
+ out.println("");
+ out.println(" if( p != std::string::npos ) {");
+ out.println(" value = Long::parseLong( producerKey.substr( p + 1, std::string::npos ) );");
+ out.println(" producerKey = producerKey.substr( 0, p );");
+ out.println(" }");
+ out.println("");
+ out.println(" setProducerSessionKey( producerKey );");
+ out.println("}");
+ out.println("");
+
+ super.generateAdditionalConstructors(out);
+ }
+
protected void generateAdditionalMethods( PrintWriter out ) {
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("const Pointer<SessionId>& ProducerId::getParentId() const {");
@@ -29,8 +57,40 @@
out.println(" return this->parentId;");
out.println("}");
out.println("");
+ out.println("////////////////////////////////////////////////////////////////////////////////");
+ out.println("void ProducerId::setProducerSessionKey( std::string sessionKey ) {");
+ out.println("");
+ out.println(" // Parse off the value");
+ out.println(" std::size_t p = sessionKey.rfind( ':' );");
+ out.println("");
+ out.println(" if( p != std::string::npos ) {");
+ out.println(" this->sessionId = Long::parseLong( sessionKey.substr( p + 1, std::string::npos ) );");
+ out.println(" sessionKey = sessionKey.substr( 0, p );");
+ out.println(" }");
+ out.println("");
+ out.println(" // The rest is the value");
+ out.println(" this->connectionId = sessionKey;");
+ out.println("}");
super.generateAdditionalMethods(out);
}
+ protected void populateIncludeFilesSet() {
+
+ super.populateIncludeFilesSet();
+
+ Set<String> includes = getIncludeFiles();
+ includes.add("<decaf/lang/Long.h>");
+ includes.add("<sstream>");
+ }
+
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println(" ostringstream stream;" );
+ out.println("");
+ out.println(" stream << this->connectionId << \":\"");
+ out.println(" << this->sessionId << \":\"");
+ out.println(" << this->value;");
+ out.println("");
+ out.println(" return stream.str();");
+ }
}
Modified: activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/SessionIdSourceGenerator.java
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/SessionIdSourceGenerator.java?rev=894733&r1=894732&r2=894733&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/SessionIdSourceGenerator.java (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/commands/SessionIdSourceGenerator.java Wed Dec 30 23:13:19 2009
@@ -26,10 +26,19 @@
includes.add("<activemq/commands/ProducerId.h>");
includes.add("<activemq/commands/ConsumerId.h>");
includes.add("<activemq/commands/ConnectionId.h>");
+ includes.add("<sstream>");
super.populateIncludeFilesSet();
}
+ protected void generateToStringBody( PrintWriter out ) {
+ out.println(" ostringstream stream;" );
+ out.println("");
+ out.println(" stream << this->connectionId << \":\" << this->value;");
+ out.println("");
+ out.println(" return stream.str();");
+ }
+
protected void generateAdditionalConstructors( PrintWriter out ) {
out.println("////////////////////////////////////////////////////////////////////////////////");