You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by su...@apache.org on 2003/10/10 13:26:30 UTC
cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp BeanParamWriter.java CPPUtils.java ClientStubWriter.java ParmHeaderFileWriter.java WrapWriter.java
susantha 2003/10/10 04:26:30
Modified: c/src/common IWrapperSoapSerializer.h
c/src/soap SoapSerializer.cpp SoapSerializer.h
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
BeanParamWriter.java CPPUtils.java
ClientStubWriter.java ParmHeaderFileWriter.java
WrapWriter.java
Log:
Completed server side wrappers/skeletons and client side stubs generation when there are arrays.
Revision Changes Path
1.11 +1 -0 ws-axis/c/src/common/IWrapperSoapSerializer.h
Index: IWrapperSoapSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/src/common/IWrapperSoapSerializer.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- IWrapperSoapSerializer.h 10 Oct 2003 05:13:13 -0000 1.10
+++ IWrapperSoapSerializer.h 10 Oct 2003 11:26:29 -0000 1.11
@@ -93,6 +93,7 @@
virtual int AddOutputParam(const AxisChar* pchName, double dValue)=0;
virtual int AddOutputParam(const AxisChar* pchName, struct tm tValue)=0;
virtual int AddOutputParam(const AxisChar* pchName, const AxisChar* pStrValue)=0;
+ virtual int AddOutputParam(const AxisChar* pchName, const string& sStrValue);
//for arrays
virtual int AddOutputParam(const AxisChar* pchName, const Axis_Array* pArray, void* pSZFunct, void* pDelFunct, void* pSizeFunct, const AxisChar* pchTypeName, const AxisChar* pchURI)=0;
virtual int AddOutputParam(const AxisChar* pchName, const Axis_Array* pArray, XSDTYPE nType)=0;
1.26 +7 -0 ws-axis/c/src/soap/SoapSerializer.cpp
Index: SoapSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- SoapSerializer.cpp 10 Oct 2003 05:13:14 -0000 1.25
+++ SoapSerializer.cpp 10 Oct 2003 11:26:29 -0000 1.26
@@ -245,6 +245,13 @@
return AddOutputParamHelper(pchName, XSD_STRING, uValue);
}
+int SoapSerializer::AddOutputParam(const AxisChar* pchName, const string& sStrValue)
+{
+ uParamValue uValue;
+ uValue.pStrValue = sStrValue.c_str();
+ return AddOutputParamHelper(pchName, XSD_STRING, uValue);
+}
+
int SoapSerializer::AddOutputParam(const AxisChar* pchName, const Axis_Array* pArray, XSDTYPE nType)
{
IArrayBean* pAb = makeArrayBean(nType, (void*)(pArray->m_Array));
1.21 +1 -0 ws-axis/c/src/soap/SoapSerializer.h
Index: SoapSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- SoapSerializer.h 10 Oct 2003 05:13:14 -0000 1.20
+++ SoapSerializer.h 10 Oct 2003 11:26:29 -0000 1.21
@@ -123,6 +123,7 @@
int AddOutputParam(const AxisChar* pchName, double dValue);
int AddOutputParam(const AxisChar* pchName, struct tm tValue);
int AddOutputParam(const AxisChar* pchName, const AxisChar* pStrValue);
+ int AddOutputParam(const AxisChar* pchName, const string& sStrValue);
//for arrays of basic types
int AddOutputParam(const AxisChar* pchName, const Axis_Array* pArray, XSDTYPE nType);
//for arrays of complex types
1.5 +30 -18 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
Index: BeanParamWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- BeanParamWriter.java 10 Oct 2003 05:13:14 -0000 1.4
+++ BeanParamWriter.java 10 Oct 2003 11:26:29 -0000 1.5
@@ -61,6 +61,8 @@
package org.apache.axis.wsdl.wsdl2ws.cpp;
import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
import javax.xml.namespace.QName;
@@ -82,8 +84,29 @@
*/
protected void writeGlobalCodes()throws WrapperFault{
try{
- writer.write("static const AxisChar* Axis_URI_"+classname+" = \""+type.getName().getNamespaceURI()+"\";\n");
- writer.write("static const AxisChar* Axis_TypeName_"+classname+" = \""+type.getName().getLocalPart()+"\";\n\n");
+ HashSet typeSet = new HashSet();
+ String typeName;
+ for(int i = 1; i< attribs.length;i++){
+ if(!CPPUtils.isSimpleType(attribs[i][1])){
+ Type memtype = wscontext.getTypemap().getType(type.getTypNameForAttribName(attribs[i][0]));
+ if (memtype.isArray()){
+ typeName = memtype.getTypNameForAttribName("item").getLocalPart();
+ }else{
+ typeName = attribs[i][1];
+ }
+ typeSet.add(typeName);
+ }
+ }
+ Iterator itr = typeSet.iterator();
+ while(itr.hasNext())
+ {
+ typeName = itr.next().toString();
+ writer.write("extern int Axis_DeSerialize_"+typeName+"("+typeName+"* param, IWrapperSoapDeSerializer *pDZ);\n");
+ writer.write("extern void* Axis_Create_"+typeName+"(bool bArray = false, int nSize=0);\n");
+ writer.write("extern void Axis_Delete_"+typeName+"("+typeName+"* param, bool bArray = false, int nSize=0);\n");
+ writer.write("extern int Axis_Serialize_"+typeName+"("+typeName+"* param, IWrapperSoapSerializer& pSZ, bool bArray = false);\n");
+ writer.write("extern int Axis_GetSize_"+typeName+"();\n\n");
+ }
writeSerializeGlobalMethod();
writeDeSerializeGlobalMethod();
writeCreateGlobalMethod();
@@ -155,31 +178,20 @@
return;
}
writer.write("\tIParam* pParam;\n");
- if(CPPUtils.isSimpleType(attribs[0][1])){
- //if symple type
- writer.write("\tparam->"+attribs[0][0]+" = pDZ->GetParam()->"+CPPUtils.getParameterGetValueMethodName(attribs[0][1])+";\n");
- }else if((t = wscontext.getTypemap().getType(new QName(attribs[0][2],attribs[0][3])))!= null && t.isArray()){
- //if Array
- }else{
- //if complex type
- writer.write("\tpParam = pDZ->GetParam(); //get head param and do any validation if necessary.\n");
- writer.write("\tparam->"+attribs[0][0]+" = new "+attribs[0][1]+"();\n");
- writer.write("\tAxis_DeSerialize_"+attribs[0][1]+"(param->"+attribs[0][0]+", pDZ);\n");
- }
- for(int i = 1; i< attribs.length;i++){
+ for(int i = 0; i< attribs.length;i++){
if(CPPUtils.isSimpleType(attribs[i][1])){
//if symple type
writer.write("\tparam->"+attribs[i][0]+" = pDZ->GetParam()->"+CPPUtils.getParameterGetValueMethodName(attribs[i][1])+";\n");
}else if((t = wscontext.getTypemap().getType(new QName(attribs[i][2],attribs[i][3])))!= null && t.isArray()){
//if Array
String arrayType = t.getTypNameForAttribName("item").getLocalPart();
- writer.write("\tpParam = pIWSDZ->GetParam(); //now we know that this is an array.\n");
+ writer.write("\tpParam = pDZ->GetParam(); //now we know that this is an array.\n");
writer.write("\tparam->"+attribs[i][0]+".m_Size = pParam->GetArraySize();\n");
writer.write("\tif (param->"+attribs[i][0]+".m_Size > 0)\n");
writer.write("\t\tparam->"+attribs[i][0]+".m_Array = new "+arrayType+"[param->"+attribs[i][0]+".m_Size];\n");
writer.write("\telse\n\t\treturn FAIL; //CF_ZERO_ARRAY_SIZE_ERROR\n");
writer.write("\tpParam->SetArrayElements((void*)(param->"+attribs[i][0]+".m_Array), (AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_"+arrayType+", (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_"+arrayType+", (AXIS_OBJECT_SIZE_FUNCT)Axis_GetSize_"+arrayType+");\n");
- writer.write("\tpIWSDZ->Deserialize(pParam,0);\n");
+ writer.write("\tpDZ->Deserialize(pParam,0);\n");
}else{
//if complex type
writer.write("\tpParam = pDZ->GetParam(); //get head param and do any validation if necessary.\n");
@@ -241,9 +253,9 @@
Type memtype = wscontext.getTypemap().getType(type.getTypNameForAttribName(attribs[i][0]));
if (memtype.isArray()){
String containedType = memtype.getTypNameForAttribName("item").getLocalPart();
- writer.write("\t\tAxis_Delete_"+containedType+"(p->"+attribs[i][0]+".m_Array, true, p->"+attribs[i][0]+".m_Size);\n");
+ writer.write("\t\tAxis_Delete_"+containedType+"(param->"+attribs[i][0]+".m_Array, true, param->"+attribs[i][0]+".m_Size);\n");
}else{
- writer.write("\t\tAxis_Delete_"+attribs[i][1]+"(p->"+attribs[i][0]+");\n");
+ writer.write("\t\tAxis_Delete_"+attribs[i][1]+"(param->"+attribs[i][0]+");\n");
}
}
}
1.4 +2 -0 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/CPPUtils.java
Index: CPPUtils.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/CPPUtils.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CPPUtils.java 10 Oct 2003 05:13:14 -0000 1.3
+++ CPPUtils.java 10 Oct 2003 11:26:29 -0000 1.4
@@ -88,6 +88,7 @@
class2QNamemap.put("char", new QName(WrapperConstants.SCHEMA_NAMESPACE, "char"));
class2QNamemap.put("short", new QName(WrapperConstants.SCHEMA_NAMESPACE, "short"));
class2QNamemap.put("string", new QName(WrapperConstants.SCHEMA_NAMESPACE, "string"));
+ class2QNamemap.put("string", new QName(WrapperConstants.SCHEMA_NAMESPACE, "base64Binary"));
qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "int"), "int");
qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "byte"), "unsigned char");
@@ -98,6 +99,7 @@
qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "char"), "char");
qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "short"), "short");
qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "string"), "string");
+ qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "base64Binary"), "string");
}
public static boolean isSimpleType(String name){
if(class2QNamemap.containsKey(name))
1.6 +0 -4 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
Index: ClientStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ClientStubWriter.java 2 Oct 2003 08:45:23 -0000 1.5
+++ ClientStubWriter.java 10 Oct 2003 11:26:29 -0000 1.6
@@ -284,10 +284,6 @@
writer.write("extern void Axis_Delete_"+typeName+"("+typeName+"* param, bool bArray = false, int nSize=0);\n");
writer.write("extern int Axis_Serialize_"+typeName+"("+typeName+"* param, IWrapperSoapSerializer& pSZ, bool bArray = false);\n");
writer.write("extern int Axis_GetSize_"+typeName+"("+typeName+"* param);\n\n");
- //Local name and the URI for the type
- writer.write("//Local name and the URI for the type\n");
- writer.write("static const AxisChar* Axis_URI_"+typeName+" = " + "\"http://www.opensource.lk/" + typeName + "\";\n");
- writer.write("static const AxisChar* Axis_TypeName_"+typeName+" = \"" +typeName+"\";\n\n");
}
} catch (IOException e) {
throw new WrapperFault(e);
1.5 +4 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParmHeaderFileWriter.java
Index: ParmHeaderFileWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParmHeaderFileWriter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ParmHeaderFileWriter.java 10 Oct 2003 05:13:14 -0000 1.4
+++ ParmHeaderFileWriter.java 10 Oct 2003 11:26:29 -0000 1.5
@@ -84,7 +84,6 @@
this.writer.write("#if !defined(__"+classname.toUpperCase()+"_"+getFileType().toUpperCase()+"_H__INCLUDED_)\n");
this.writer.write("#define __"+classname.toUpperCase()+"_"+getFileType().toUpperCase()+"_H__INCLUDED_\n\n");
writePreprocssorStatements();
- this.writer.write("\n");
this.writer.write("class "+classname+"\n{\n");
writeAttributes();
this.writer.write("};\n\n");
@@ -141,6 +140,10 @@
}
}
}
+ //Local name and the URI for the type
+ writer.write("//Local name and the URI for the type\n");
+ writer.write("static const char* Axis_URI_"+classname+" = \""+type.getName().getNamespaceURI()+"\";\n");
+ writer.write("static const char* Axis_TypeName_"+classname+" = \""+type.getName().getLocalPart()+"\";\n\n");
}catch(IOException e){
throw new WrapperFault(e);
}
1.5 +22 -37 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
Index: WrapWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- WrapWriter.java 7 Oct 2003 06:47:06 -0000 1.4
+++ WrapWriter.java 10 Oct 2003 11:26:29 -0000 1.5
@@ -137,7 +137,6 @@
writer.write("int "+classname+"::Init()\n{\n\treturn SUCCESS;\n}\n\n");
writer.write("int "+classname+"::Fini()\n{\n\treturn SUCCESS;\n}\n\n");
writeInvoke();
- writeSetSoapMethod();
writer.write("\n//Methods corresponding to the web service methods\n");
MethodInfo minfo;
for (int i = 0; i < methods.size(); i++) {
@@ -199,20 +198,6 @@
writer.write("}\n\n");
}
- private void writeSetSoapMethod() throws IOException {
- writer.write("\n/////////////////////////////////////////////////////////////////\n");
- writer.write("// This method sets the method element of the Serializer response \n");
- writer.write("//////////////////////////////////////////////////////////////////\n");
- writer.write("int "+classname+"::SetResponseMethod(IMessageData* mc, const AxisChar* name)\n{\n");
- writer.write("\tIWrapperSoapSerializer* pIWSSZ = NULL;\n");
- writer.write("\tmc->getSoapSerializer(&pIWSSZ);\n");
- writer.write("\tif (!pIWSSZ) return FAIL;\n");
- writer.write("\tISoapMethod* pMethod = pIWSSZ->createSoapMethod();\n");
- writer.write("\tpMethod->setLocalName(name);\n");
- writer.write("\tpMethod->setPrefix(pIWSSZ->getNewNamespacePrefix());\n");
- writer.write("\tpMethod->setUri(\"http://www.opensource.lk/"+CPPUtils.getWebServiceNameFromWrapperName(classname)+"\");\n");
- writer.write("\treturn SUCCESS;\n}\n");
- }
/**
* This method genarate methods that wraps the each method of the service
* @param methodName
@@ -234,8 +219,7 @@
writer.write("\tIWrapperSoapDeSerializer *pIWSDZ = NULL;\n");
writer.write("\tmc->getSoapDeSerializer(&pIWSDZ);\n");
writer.write("\tif (!pIWSDZ) return FAIL;\n");
- writer.write("\tSetResponseMethod(mc, \""+methodName+"Response\");\n");
-
+ writer.write("\tpIWSSZ->createSoapMethod(\""+methodName+"Response\", pIWSSZ->getNewNamespacePrefix(), \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\");\n");
//create and populate variables for each parameter
String paraTypeName;
ArrayList paramsB = new ArrayList(params);
@@ -247,11 +231,14 @@
if((CPPUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
//for simple types
writer.write("\t"+paraTypeName+" v"+i+" = param"+i+"->"+CPPUtils.getParameterGetValueMethodName(paraTypeName)+";\n");
- }else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null
- && type.isArray()){
- //TODO for Array types
- //String ContentparaTypeName = WrapperUtils.getParameterName4ParamInfo((ParameterInfo)paramsB.get(i),wscontext);
-
+ }else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
+ String containedType = type.getTypNameForAttribName("item").getLocalPart();
+ writer.write("\t"+paraTypeName+" v"+i+";\n");
+ writer.write("\tv"+i+".m_Size = param"+i+"->GetArraySize();\n");
+ writer.write("\tif ("+"v"+i+".m_Size > 0)\n");
+ writer.write("\t\tv"+i+".m_Array = new "+containedType+"[v"+i+".m_Size];\n\telse\n\t\treturn FAIL; //CF_ZERO_ARRAY_SIZE_ERROR\n");
+ writer.write("param"+i+"->SetArrayElements((void*)(v"+i+".m_Array), (AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_"+containedType+", (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_"+containedType+", (AXIS_OBJECT_SIZE_FUNCT)Axis_GetSize_"+containedType+");\n");
+ writer.write("pIWSDZ->Deserialize(param"+i+",0);\n");
}else{
//for complex types
writer.write("\t"+paraTypeName+" *v"+i+" = new "+paraTypeName+"();\n");
@@ -263,31 +250,29 @@
if(!(outparam == null ||outparam.equals("void"))){
boolean isSimpleType = CPPUtils.isSimpleType(outparam);
boolean isArray = returntype.getType().isArray();
- // -------- I dont understand why following lines does-Susantha -------//
- Type type;
- if ((type = this.wscontext.getTypemap().getType(returntype.getSchemaName())) != null ){
- if (isArray = type.isArray()){
- outparam = type.getTypNameForAttribName("item")+"[]";
- }
- }
- // -------------------------------------------------------------------//
+ Type type = this.wscontext.getTypemap().getType(returntype.getSchemaName());
/* Invoke the service when return type not void */
- writer.write("\t"+outparam+(isSimpleType?" ":" *")+ "ret = "+"pWs->"+methodName+"(");
+ writer.write("\t"+outparam+((isSimpleType || isArray)?" ":" *")+ "ret = "+"pWs->"+methodName+"(");
for (int i = 0; i < paramsB.size() - 1; i++)
- writer.write("v" + i + ",");
+ writer.write("v" + i + ",");
writer.write("v" + ( paramsB.size() - 1));
writer.write(");\n");
/* set the result */
if (isSimpleType){
- writer.write("\tIParam *pRetParam = pIWSSZ->AddOutputParam(ret);\n");
+ writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret);\n");
}else if(isArray){
- //TODO array type
+ String containedType = type.getTypNameForAttribName("item").getLocalPart();
+ if (CPPUtils.isSimpleType(containedType)){ //array of basic types
+ }
+ else{ //array of complex types
+ writer.write("return pIWSSZ->AddOutputParam(\""+methodName+"Return\", (Axis_Array*)(&ret),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType+");\n");
+ }
}
else{
//complex type
- writer.write("\tIParam *pRetParam = pIWSSZ->AddOutputParam(ret, (void*)Axis_Serialize_"+outparam+", (void*)Axis_Delete_"+outparam+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret, (void*)Axis_Serialize_"+outparam+", (void*)Axis_Delete_"+outparam+");\n");
}
- writer.write("\tpRetParam->SetName(\""+methodName+"Return\");\n");
writer.write("\treturn SUCCESS;\n");
}else{//method does not return anything
/* Invoke the service when return type is void */
@@ -314,7 +299,7 @@
writer.write("extern void* Axis_Create_"+typeName+"(bool bArray = false, int nSize=0);\n");
writer.write("extern void Axis_Delete_"+typeName+"("+typeName+"* param, bool bArray = false, int nSize=0);\n");
writer.write("extern int Axis_Serialize_"+typeName+"("+typeName+"* param, IWrapperSoapSerializer& pSZ, bool bArray = false);\n");
- writer.write("extern int Axis_GetSize_"+typeName+"("+typeName+"* param);\n\n");
+ writer.write("extern int Axis_GetSize_"+typeName+"();\n\n");
}
} catch (IOException e) {
throw new WrapperFault(e);