blob: 2f4563eb426d7f832233660cd2a3dc339b2253ab [file] [log] [blame]
/**
* 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 XATransactionIdSourceGenerator extends CommandSourceGenerator {
protected void generateAdditionalConstructors( PrintWriter out ) {
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("XATransactionId::XATransactionId( const cms::Xid* xid )");
out.println(" : " + generateInitializerList() + " {");
out.println("");
out.println(" if( xid == NULL ) {");
out.println(" return;");
out.println(" }");
out.println("");
out.println(" this->formatId = xid->getFormatId();");
out.println(" this->branchQualifier.resize( cms::Xid::MAXBQUALSIZE );");
out.println(" this->globalTransactionId.resize( cms::Xid::MAXGTRIDSIZE );");
out.println("");
out.println(" int result = xid->getBranchQualifier( &this->branchQualifier[0], cms::Xid::MAXBQUALSIZE );");
out.println("");
out.println(" if( result == -1 ) {");
out.println(" throw cms::XAException(\"Invalid Xid Branch Qualifier is larger than MAXBQUALSIZE\" );");
out.println(" } else {");
out.println(" this->branchQualifier.resize( result );");
out.println(" }");
out.println("");
out.println(" result = xid->getGlobalTransactionId( &this->globalTransactionId[0], cms::Xid::MAXGTRIDSIZE );");
out.println("");
out.println(" if( result == -1 ) {");
out.println(" throw cms::XAException(\"Invalid Xid Global Transaction Id is larger than MAXGTRIDSIZE\" );");
out.println(" } else {");
out.println(" this->globalTransactionId.resize( result );");
out.println(" }");
out.println("}");
out.println("");
super.generateAdditionalConstructors(out);
}
protected void populateIncludeFilesSet() {
super.populateIncludeFilesSet();
Set<String> includes = getIncludeFiles();
includes.add("<cms/XAException.h>");
}
protected void populateBaseClassesSet() {
super.populateBaseClassesSet();
Set<String> classes = getBaseClasses();
classes.add("cms::Xid");
}
protected void generateAdditionalMethods( PrintWriter out ) {
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("cms::Xid* XATransactionId::clone() const {");
out.println("");
out.println(" XATransactionId* theClone = new XATransactionId();");
out.println("");
out.println(" theClone->formatId = this->formatId;");
out.println(" theClone->globalTransactionId = this->globalTransactionId;");
out.println(" theClone->branchQualifier = this->branchQualifier;");
out.println("");
out.println(" return theClone;");
out.println("}");
out.println("");
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("bool XATransactionId::equals( const cms::Xid* other ) const {");
out.println("");
out.println(" if( (void*)this == other ) {");
out.println(" return true;");
out.println(" }");
out.println("");
out.println(" if( other == NULL ) {");
out.println(" return false;");
out.println(" }");
out.println("");
out.println(" if( this->formatId != other->getFormatId() ) {");
out.println(" return false;");
out.println(" }");
out.println("");
out.println(" std::vector<unsigned char> otherBQual( Xid::MAXBQUALSIZE );");
out.println("");
out.println(" other->getBranchQualifier( &otherBQual[0], Xid::MAXBQUALSIZE );");
out.println("");
out.println(" if( this->branchQualifier != otherBQual ) {");
out.println(" return false;");
out.println(" }");
out.println("");
out.println(" std::vector<unsigned char> otherGTXID( Xid::MAXBQUALSIZE );");
out.println("");
out.println(" other->getGlobalTransactionId( &otherGTXID[0], Xid::MAXGTRIDSIZE );");
out.println("");
out.println(" if( this->globalTransactionId != otherGTXID ) {");
out.println(" return false;");
out.println(" }");
out.println("");
out.println(" return true;");
out.println("}");
out.println("");
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("int XATransactionId::getBranchQualifier( unsigned char* buffer, int size ) const {");
out.println("");
out.println(" if( size < 0 ) {");
out.println(" throw cms::XAException(\"Error: Negative size value passed to getBranchQualifier()\");");
out.println(" }");
out.println("");
out.println(" if( buffer == NULL ) {");
out.println(" throw cms::XAException(\"Error: NULL buffer pointer passed to getBranchQualifier()\");");
out.println(" }");
out.println("");
out.println(" if( size < (int)this->branchQualifier.size() ) {");
out.println(" return -1;");
out.println(" }");
out.println("");
out.println(" if( this->branchQualifier.size() == 0 ) {");
out.println(" return 0;");
out.println(" }");
out.println("");
out.println(" std::copy( this->branchQualifier.begin(), this->branchQualifier.end(), buffer );");
out.println("");
out.println(" return (int)this->branchQualifier.size();");
out.println("}");
out.println("");
out.println("////////////////////////////////////////////////////////////////////////////////");
out.println("int XATransactionId::getGlobalTransactionId( unsigned char* buffer, int size ) const {");
out.println("");
out.println(" if( size < 0 ) {");
out.println(" throw cms::XAException(\"Error: Negative size value passed to getGlobalTransactionId()\");");
out.println(" }");
out.println("");
out.println(" if( buffer == NULL ) {");
out.println(" throw cms::XAException(\"Error: NULL buffer pointer passed to getGlobalTransactionId()\");");
out.println(" }");
out.println("");
out.println(" if( size < (int)this->globalTransactionId.size() ) {");
out.println(" return -1;");
out.println(" }");
out.println("");
out.println(" if( this->globalTransactionId.size() == 0 ) {");
out.println(" return 0;");
out.println(" }");
out.println("");
out.println(" std::copy( this->globalTransactionId.begin(), this->globalTransactionId.end(), buffer );");
out.println("");
out.println(" return (int)this->globalTransactionId.size();");
out.println("}");
out.println("");
super.generateAdditionalMethods(out);
}
}