blob: 4386413fbd362ac35747881d8c2c0278fad5a8cc [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
*
* Licensed 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.
*/
/**
* @author Srinath Perera(hemapani@openource.lk)
* @author Susantha Kumara(susantha@opensource.lk, skumara@virtusa.com)
*/
package org.apache.axis.wsdl.wsdl2ws.cpp.literal;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.xml.namespace.QName;
import org.apache.axis.wsdl.wsdl2ws.CUtils;
import org.apache.axis.wsdl.wsdl2ws.WrapperFault;
import org.apache.axis.wsdl.wsdl2ws.info.FaultInfo;
import org.apache.axis.wsdl.wsdl2ws.info.MethodInfo;
import org.apache.axis.wsdl.wsdl2ws.info.ParameterInfo;
import org.apache.axis.wsdl.wsdl2ws.info.Type;
import org.apache.axis.wsdl.wsdl2ws.info.WebServiceContext;
public class WrapWriter extends org.apache.axis.wsdl.wsdl2ws.cpp.WrapWriter
{
public WrapWriter(WebServiceContext wscontext) throws WrapperFault
{
super(wscontext);
}
/**
* This method genarate methods that wraps the each method of the service
* @param methodName
* @param params
* @param outparam
* @throws IOException
*/
public void writeMethodInWrapper(MethodInfo minfo)
throws WrapperFault, IOException
{
Type type;
boolean isAllTreatedAsOutParams = false;
ParameterInfo returntype = null;
int noOfOutParams = minfo.getOutputParameterTypes().size();
if (0 == noOfOutParams)
returntype = null;
else if (1 == noOfOutParams)
returntype = (ParameterInfo) minfo.getOutputParameterTypes().iterator().next();
else
isAllTreatedAsOutParams = true;
Collection params = minfo.getInputParameterTypes();
Type retType = null;
String outparamType = null;
boolean returntypeissimple = false;
boolean returntypeisarray = false;
if (returntype != null)
{
retType = wscontext.getTypemap().getType(returntype.getSchemaName());
if (retType != null)
{
if (retType.isSimpleType())
{
returntypeissimple = true;
outparamType = CUtils.getSimpleType(retType.getBaseType());
}
else if (returntype.isArray())
{
outparamType = CUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext);
returntypeissimple =
(null != CUtils.getSimpleType(retType.getName())
&& CUtils.isSimpleType(CUtils.getSimpleType(retType.getName())));
returntypeisarray = true;
}
else
{
outparamType = retType.getLanguageSpecificName();
returntypeissimple = CUtils.isSimpleType(outparamType);
returntypeisarray = retType.isArray();
}
}
else
{
outparamType = returntype.getLangName();
returntypeissimple = CUtils.isSimpleType(outparamType);
}
}
CUtils.printMethodComment(c_writer, "This method wraps the service method " + minfo.getMethodname() + ".");
//method signature
c_writer.write("int " + c_classname + "::" + minfo.getSanitizedMethodName() + "(void* pMsg)\n{\n");
c_writer.write("\tIMessageData* mc = (IMessageData*)pMsg;\n");
c_writer.write("\tint nStatus;\n\n");
c_writer.write("\tIWrapperSoapSerializer* pIWSSZ = NULL;\n");
c_writer.write("\tmc->getSoapSerializer(&pIWSSZ);\n");
c_writer.write("\tif (!pIWSSZ)\n");
c_writer.write("\t\treturn AXIS_FAIL;\n\n");
c_writer.write("\tIWrapperSoapDeSerializer* pIWSDZ = NULL;\n");
c_writer.write("\tmc->getSoapDeSerializer(&pIWSDZ);\n");
c_writer.write("\tif (!pIWSDZ)\n");
c_writer.write("\t\treturn AXIS_FAIL;\n\n");
c_writer.write("\t// check whether we have got correct message\n");
c_writer.write("\tif (AXIS_SUCCESS != pIWSDZ->checkMessageBody(\""
+ minfo.getInputMessage().getLocalPart() + "\", \""
+ minfo.getInputMessage().getNamespaceURI() + "\"))\n");
c_writer.write("\t\treturn AXIS_FAIL;\n\n");
if (minfo.getOutputMessage() != null)
{
c_writer.write("\tpIWSSZ->createSoapMethod(\""
+ minfo.getOutputMessage().getLocalPart() + "\", \""
+ minfo.getOutputMessage().getNamespaceURI() + "\");\n");
}
//create and populate variables for each parameter
String paraTypeName;
String elementName;
String returnParamName;
ArrayList paramsB = new ArrayList(params);
for (int i = 0; i < paramsB.size(); i++)
{
ParameterInfo param = (ParameterInfo) paramsB.get(i);
type = this.wscontext.getTypemap().getType(param.getSchemaName());
if (type != null && type.isSimpleType())
paraTypeName = CUtils.getSimpleType(type.getBaseType());
else if (param.isArray())
paraTypeName = CUtils.getClassNameFromParamInfoConsideringArrays(param,wscontext);
else
paraTypeName = param.getLangName();
elementName = param.getElementNameAsSOAPString();
if (type != null && type.isSimpleType())
{
String splatPtr = " ";
String splatDeref = " ";
if (!CUtils.isPointerType(type.getLanguageSpecificName()))
{
if (param.isNillable() || param.isOptional())
splatPtr = " * ";
else
splatDeref = " * ";
}
c_writer.write("\t" + paraTypeName + splatPtr + "v" + i + " =" + splatDeref
+ "(pIWSDZ->" + CUtils.getDeserializerMethodName(paraTypeName,false)
+ "(\"" + elementName + "\",0));\n");
}
else if ((CUtils.isSimpleType(param.getLangName())))
{
//for simple types
if (param.isArray())
{
String containedType = CUtils.getSimpleType(type.getName());
String containedTypeArray = CUtils.getArrayNameForType(containedType);
c_writer.write("\n\t" + containedTypeArray + " * v" + i +" = new " + containedTypeArray + "();\n");
c_writer.write("\t"
+ "Axis_Array * RetArray" + i + " = pIWSDZ->getBasicArray("
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + elementName + "\",0);\n");
c_writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
c_writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
}
else if (CUtils.isPointerType(paraTypeName))
{
c_writer.write("\n\t" + paraTypeName + " v" + i + " = NULL;\n");
if (param.isOptional())
{
c_writer.write("\tconst char * elementName" + i + " = pIWSDZ->peekNextElementName();\n");
c_writer.write("\tif ( strcmp( elementName" + i + ", \"" + elementName + "\" ) == 0)\n");
c_writer.write("\t{\n");
}
c_writer.write("\t" + paraTypeName + " value" + i + " = pIWSDZ->"
+ CUtils.getDeserializerMethodName(paraTypeName,false)
+ "(\"" + elementName + "\",0);\n");
c_writer.write("\tif ( value" + i + " )\n");
c_writer.write("\t{\n");
c_writer.write("\t\tv" + i + " = new char[ strlen( value" + i + ") + 1 ];\n");
c_writer.write("\t\tstrcpy( v" + i + ", value" + i + ");\n");
c_writer.write("\t\tAxis::AxisDelete( (void *) value" + i + ", " + CUtils.getXSDEnumeratorForType(paraTypeName) + " );\n");
c_writer.write("\t}\n");
if (param.isOptional())
c_writer.write("\t}\n");
}
else if (param.isNillable() || param.isOptional())
{
c_writer.write("\n\t" + paraTypeName + " * v" + i + " = NULL;\n");
if (param.isOptional())
{
c_writer.write("\tconst char * elementName" + i + " = pIWSDZ->peekNextElementName();\n");
c_writer.write("\tif (strcmp( elementName" + i + ", \"" + elementName + "\" ) == 0)\n");
c_writer.write("\t{\n");
}
c_writer.write("\t" + paraTypeName + " * pValue" + i + " = pIWSDZ->"
+ CUtils.getDeserializerMethodName(paraTypeName,false)
+ "(\"" + elementName + "\",0);\n");
c_writer.write("\tif (pValue" + i +")\n");
c_writer.write("\t{\n");
c_writer.write("\t\tv" + i + " = new " + paraTypeName + "();\n");
c_writer.write("\t\t*v" + i + " = *pValue" + i + ";\n");
c_writer.write("\t\tAxis::AxisDelete( (void *) pValue" + i + ", " + CUtils.getXSDEnumeratorForType(paraTypeName) + ");\n");
c_writer.write("\t}\n");
if (param.isOptional())
c_writer.write("\t}\n");
}
else
{
c_writer.write("\n\t" + paraTypeName + " v" + i);
String typeInitValue = CUtils.getInitValueForType(paraTypeName);
if (typeInitValue != null)
c_writer.write(" = " + typeInitValue);
c_writer.write(";\n");
c_writer.write("\t"
+ paraTypeName + " * pValue" + i + " = pIWSDZ->"
+ CUtils.getDeserializerMethodName(paraTypeName,false) + "(\""
+ elementName + "\", 0);\n");
c_writer.write("\tif (pValue" + i + ")\n");
c_writer.write("\t{\n");
c_writer.write("\t\tv" + i + " = *pValue" + i + ";\n");
c_writer.write("\t\tAxis::AxisDelete( (void *) pValue"
+ i + ", " + CUtils.getXSDEnumeratorForType(paraTypeName)+ ");\n");
c_writer.write("\t}\n");
}
}
else if ((type != null) && type.isArray())
{
Type arrayType = CUtils.getArrayType(type);
QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname))
{
containedType = CUtils.getSimpleType(qname);
String containedTypeArray = CUtils.getArrayNameForType(outparamType);
c_writer.write("\n\t" + containedTypeArray + " * v" + i +" = new " + containedTypeArray + "();\n");
c_writer.write("\t"
+ "Axis_Array * RetArray" + i + " = pIWSDZ->getBasicArray("
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + elementName + "\",0);\n");
c_writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
c_writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
}
else if (arrayType.isSimpleType())
{
containedType = CUtils.getSimpleType(arrayType.getBaseType());
c_writer.write("\n\t" + outparamType + " * v" + i +" = new " + outparamType + "();\n");
c_writer.write("\t"
+ "Axis_Array * RetArray" + i + " = pIWSDZ->getBasicArray("
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + elementName + "\",0);\n");
c_writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
c_writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
}
else
{
containedType = qname.getLocalPart();
c_writer.write("\n\t" + paraTypeName + " * v" + i +" = new " + paraTypeName + "();\n");
c_writer.write("\t"
+ "pIWSDZ->getCmplxArray(v" + i + ", (void*)Axis_DeSerialize_" + containedType
+ ",\n\t\t(void*)Axis_Create_" + containedType
+ ", (void*)Axis_Delete_" + containedType
+ ",\n\t\t \"" + elementName + "\", Axis_URI_" + containedType + ");\n");
}
}
else if (param.isAnyElement())
{
c_writer.write("\t" + paraTypeName + " *v" + i + " = (" + paraTypeName
+ "*)pIWSDZ->getAnyObject();\n");
}
else
{
//for complex types
c_writer.write("\t" + paraTypeName + " *v" + i + " = (" + paraTypeName
+ "*)pIWSDZ->getCmplxObject((void*)Axis_DeSerialize_" + paraTypeName
+ "\n\t\t, (void*)Axis_Create_" + paraTypeName
+ ", (void*)Axis_Delete_" + paraTypeName
+ "\n\t\t, \"" + elementName
+ "\", Axis_URI_" + paraTypeName + ");\n");
}
} // for loop
c_writer.write("\n\tif (AXIS_SUCCESS != (nStatus = pIWSDZ->getStatus()))\n");
c_writer.write("\t\treturn nStatus;\n\n");
// Multiples parameters so fill the methods prototype
if (isAllTreatedAsOutParams)
{
ArrayList paramsC = (ArrayList) minfo.getOutputParameterTypes();
for (int i = 0; i < paramsC.size(); i++)
{
ParameterInfo param = (ParameterInfo) paramsC.get(i);
String typeName = CUtils.getClassNameFromParamInfoConsideringArrays(
(ParameterInfo) paramsC.get(i), wscontext);
c_writer.write("\t" + typeName);
if ( (param.isOptional() || param.isNillable())
&& CUtils.isSimpleType(typeName)
&& !CUtils.isPointerType(typeName) && !param.isArray())
c_writer.write(" *");
c_writer.write(" out" + i + ";\n");
}
}
c_writer.write("\ttry\n\t{\n"); //nithya
if (returntype != null)
{
/* Invoke the service when return type not void */
returnParamName = returntype.getElementNameAsSOAPString();
c_writer.write("\t\t" + outparamType);
if ((CUtils.isArrayType(outparamType))
||(!returntypeisarray
&& (!returntypeissimple
|| (returntypeissimple
&& (returntype.isNillable() || returntype.isOptional())
&& !(CUtils.isPointerType(retType.getLanguageSpecificName()))))))
c_writer.write(" *");
c_writer.write(" ret = " + "pWs->" + minfo.getSanitizedMethodName() + "(");
if (0 < paramsB.size())
{
for (int i = 0; i < paramsB.size() - 1; i++)
c_writer.write("v" + i + ",");
c_writer.write("v" + (paramsB.size() - 1));
}
c_writer.write(");\n");
/* set the result */
if (returntypeissimple)
{
if (returntype.isArray())
{
String containedType = CUtils.getSimpleType(retType.getName());
c_writer.write("\t\tnStatus = pIWSSZ->addOutputBasicArrayParam(ret, "
+ CUtils.getXSDEnumeratorForType(containedType) + ", \""
+ returnParamName + "\");\n");
c_writer.write("\t\tdelete ret;\n");
c_writer.write("\t\treturn nStatus;\n");
}
else
{
String returnParamTypeName = retType.getLanguageSpecificName();
if (returntype.isNillable()
|| returntype.isOptional()
|| CUtils.isPointerType(returnParamTypeName))
{
c_writer.write("\t\treturn pIWSSZ->addOutputParam(\"" + returnParamName
+ "\", (void*)ret, " + CUtils.getXSDEnumeratorForType(outparamType) + ");\n");
}
else
{
c_writer.write("\t\treturn pIWSSZ->addOutputParam(\"" + returnParamName
+ "\", (void*)&ret, " + CUtils.getXSDEnumeratorForType(outparamType) + ");\n");
}
}
}
else if (returntypeisarray)
{
Type arrayType = CUtils.getArrayType(retType);
QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname))
{
containedType = CUtils.getSimpleType(qname);
c_writer.write("\t\tnStatus = pIWSSZ->addOutputBasicArrayParam(ret, "
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + returnParamName + "\");\n");
c_writer.write("\t\tdelete ret;\n");
c_writer.write("\t\treturn nStatus;\n");
}
else if (arrayType.isSimpleType())
{
containedType = CUtils.getSimpleType(arrayType.getBaseType());
c_writer.write("\t\tnStatus = pIWSSZ->addOutputBasicArrayParam(ret, "
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + returnParamName + "\");\n");
c_writer.write("\t\tdelete ret;\n");
c_writer.write("\t\treturn nStatus;\n");
}
else
{
containedType = qname.getLocalPart();
c_writer.write("\t\tnStatus = pIWSSZ->addOutputCmplxArrayParam(ret,"
+ "(void*) Axis_Serialize_" + containedType
+ ", (void*) Axis_Delete_" + containedType
+ ", \"" + returnParamName
+ "\", Axis_URI_" + containedType + ");\n");
c_writer.write("\t\tdelete ret;\n");
c_writer.write("\t\treturn nStatus;\n");
}
}
else if (returntype.isAnyElement())
c_writer.write( "\t\treturn pIWSSZ->addOutputAnyObject(ret);\n");
else
{
//complex type
c_writer.write("\t\treturn pIWSSZ->addOutputCmplxParam(ret, (void*)Axis_Serialize_"
+ outparamType
+ ", (void*)Axis_Delete_" + outparamType
+ ", \"" + returnParamName + "\", Axis_URI_" + outparamType + ");\n");
}
}
else if (isAllTreatedAsOutParams)
{
c_writer.write("\tpWs->" + minfo.getSanitizedMethodName() + "(");
if (0 < paramsB.size())
for (int i = 0; i < paramsB.size(); i++)
c_writer.write("v" + i + ",");
ArrayList paramsC = (ArrayList) minfo.getOutputParameterTypes();
for (int i = 0; i < paramsC.size() - 1; i++)
c_writer.write("&out" + i + ",");
c_writer.write("&out" + (paramsC.size() - 1));
c_writer.write(");\n");
paramsC = (ArrayList) minfo.getOutputParameterTypes();
for (int i = 0; i < paramsC.size(); i++)
{
ParameterInfo param = (ParameterInfo) paramsC.get(i);
retType = wscontext.getTypemap().getType(param.getSchemaName());
if (retType != null)
{
if (retType.isSimpleType())
{
returntypeissimple = true;
outparamType =
CUtils.getSimpleType(retType.getBaseType());
}
else
{
outparamType = retType.getLanguageSpecificName();
returntypeisarray = retType.isArray();
returntypeissimple =
CUtils.isSimpleType(outparamType);
}
}
else
{
outparamType = param.getLangName();
returntypeissimple = CUtils.isSimpleType(outparamType);
}
returnParamName = param.getElementNameAsSOAPString();
if (returntypeissimple)
{
if (param.isArray())
{
String containedType = CUtils.getSimpleType(retType.getName());
c_writer.write("\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&out" + i + "),"
+ CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + returnParamName + "\");\n");
}
else if (CUtils.isPointerType(outparamType)
|| param.isOptional()
|| param.isNillable())
{
if (param.isOptional())
{
c_writer.write("\tif (out" + i + ")\n");
c_writer.write("\t{\n");
c_writer.write("\t");
}
c_writer.write("\tpIWSSZ->addOutputParam(\""
+ returnParamName
+ "\", (void*)out" + i + ", "
+ CUtils.getXSDEnumeratorForType(outparamType) + ");\n");
if (param.isOptional())
c_writer.write("\t}\n");
}
else
{
c_writer.write("\tpIWSSZ->addOutputParam(\""
+ returnParamName
+ "\", (void*)&out" + i + ", "
+ CUtils.getXSDEnumeratorForType(outparamType) + ");\n");
}
}
else if (returntypeisarray)
{
Type arrayType = CUtils.getArrayType(retType);
QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname))
{
containedType = CUtils.getSimpleType(qname);
c_writer.write("\tpIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&out"
+ i + ")," + CUtils.getXSDEnumeratorForType( containedType)
+ ", \"" + returnParamName + "\");\n");
}
else if (arrayType.isSimpleType())
{
containedType = CUtils.getSimpleType(arrayType.getBaseType());
c_writer.write("\tpIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&out"
+ i + ")," + CUtils.getXSDEnumeratorForType(containedType)
+ ", \"" + returnParamName + "\");\n");
}
else
{
containedType = qname.getLocalPart();
c_writer.write("\tpIWSSZ->addOutputCmplxArrayParam((Axis_Array*)(&out" + i + "),"
+ "(void*) Axis_Serialize_" + containedType
+ ", (void*) Axis_Delete_" + containedType
+ ", \"" + returnParamName + "\", Axis_URI_" + containedType + ");\n");
}
}
else if (param.isAnyElement())
c_writer.write("\tpIWSSZ->addOutputAnyObject(out" + i + ");\n");
else
{
if (param.isOptional())
{
c_writer.write("\tif (out" + i + ")\n");
c_writer.write("\t{\n");
c_writer.write("\t");
}
//complex type
c_writer.write("\tpIWSSZ->addOutputCmplxParam(out" + i
+ ", (void*)Axis_Serialize_" + outparamType
+ ", (void*)Axis_Delete_" + outparamType
+ ", \"" + returnParamName
+ "\", Axis_URI_" + outparamType + ");\n");
if (param.isOptional())
c_writer.write("\t}\n");
}
}
c_writer.write("\treturn AXIS_SUCCESS;\n");
}
else
{
//method does not return anything Invoke the service when return type is void
c_writer.write("\tpWs->" + minfo.getSanitizedMethodName() + "(");
if (0 < paramsB.size())
{
for (int i = 0; i < paramsB.size() - 1; i++)
c_writer.write("v" + i + ",");
c_writer.write("v" + (paramsB.size() - 1));
}
c_writer.write(");\n");
c_writer.write("\treturn AXIS_SUCCESS;\n");
}
c_writer.write("\t}\n"); //nithya
Iterator paramsFault = minfo.getFaultType().iterator();
String faultInfoName = null;
String faultType = null;
String langName = null;
String paramName = null;
while (paramsFault.hasNext())
{
FaultInfo info = (FaultInfo) paramsFault.next();
faultInfoName = info.getFaultInfo();
ArrayList paramInfo = info.getParams();
for (int i = 0; i < paramInfo.size(); i++)
{
ParameterInfo par = (ParameterInfo) paramInfo.get(i);
paramName = par.getParamName();
langName = par.getLangName();
faultType = CUtils.getClassNameFromParamInfoConsideringArrays(par,wscontext);
writeExceptions(faultType, faultInfoName, paramName, langName);
}
}
// Handle SOAP faults not specified within the WSDL (ie OtherFaultException)
c_writer.write("\tcatch(OtherFaultException * pObjFault)\n");
c_writer.write("\t{\n");
c_writer.write("\t\tif (pObjFault)\n");
c_writer.write("\t\t{\n");
c_writer.write("\t\t\tpIWSSZ->createSoapFault(\"\", \"\", pObjFault->getFaultCode(), pObjFault->getFaultString());\n");
c_writer.write("\t\t\tpIWSSZ->addFaultDetail(pObjFault->getFaultDetail());\n");
c_writer.write("\t\t\tdelete pObjFault;\n");
c_writer.write("\t\t\tthrow AxisServiceException(AXISC_SERVICE_THROWN_EXCEPTION);\n");
c_writer.write("\t\t}\n");
c_writer.write("\t\treturn AXIS_FAIL;\n");
c_writer.write("\t}\n");
// Handle generic exception, placing the message into a generic SOAP fault
c_writer.write("\tcatch (exception & e)\n");
c_writer.write("\t{\n");
c_writer.write("\t\tpIWSSZ->createSoapFault(\"\", \"\", \"Server\", e.what());\n");
c_writer.write("\t\tthrow AxisServiceException(AXISC_SERVICE_THROWN_EXCEPTION);\n");
c_writer.write("\t\treturn AXIS_FAIL;\n");
c_writer.write("\t}\n");
// Handle any other exception
c_writer.write("\tcatch(...)\n");
c_writer.write("\t{\n");
c_writer.write("\t\treturn AXIS_FAIL;\n");
c_writer.write("\t}\n");
c_writer.write("}\n");
}
/* (non-Javadoc)
* @see org.apache.axis.wsdl.wsdl2ws.cpp.CPPClassWriter#writeGlobalCodes()
*/
private void writeExceptions(
String faulttype,
String faultInfoName,
String paramName,
String langName)
throws WrapperFault
{
try
{
c_writer.write("\tcatch(" + faulttype + " pObjFault)\n");
c_writer.write("\t{\n");
c_writer.write("\t\tif (pObjFault)\n");
c_writer.write("\t\t{\n");
c_writer.write("\t\t\tpIWSSZ->createSoapFault(\"" + faultInfoName
+ "\", \"" + wscontext.getWrapperInfo().getTargetNameSpaceOfWSDL()
+ "\",\"AxisC++ Faultcode\", \"Custom Out of bound exception\");\n");
c_writer.write("\t\t\tpIWSSZ->addFaultDetail(pObjFault, (void*) Axis_Serialize_" + langName + ",\n");
c_writer.write("\t\t\t\t(void*) Axis_Delete_" + langName
+ ",\"" + faultInfoName + "\", Axis_URI_" + langName + ");\n");
c_writer.write("\t\t\tthrow AxisServiceException(AXISC_SERVICE_THROWN_EXCEPTION);\n");
c_writer.write("\t\t}\n");
c_writer.write("\t\treturn AXIS_FAIL;\n");
c_writer.write("\t}\n");
}
catch (IOException e)
{
throw new WrapperFault(e);
}
}
/* (non-Javadoc)
* @see org.apache.axis.wsdl.wsdl2ws.cpp.CPPClassWriter#writeGlobalCodes()
*/
protected void writeGlobalCodes() throws WrapperFault
{
}
}