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 2004/03/18 08:50:45 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal ArrayParamWriter.java BeanParamWriter.java ClientStubWriter.java ParamCFileWriter.java ParmHeaderFileWriter.java WrapWriter.java

susantha    2004/03/17 23:50:45

  Modified:    c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal
                        ArrayParamWriter.java BeanParamWriter.java
                        ClientStubWriter.java ParamCFileWriter.java
                        ParmHeaderFileWriter.java WrapWriter.java
  Log:
  WSDLWs improvements to generated C code when there are schema defined
  simpleTypes with enumerations (enumeration checking functions yet to be done).
  
  Revision  Changes    Path
  1.4       +1 -5      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ArrayParamWriter.java
  
  Index: ArrayParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ArrayParamWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArrayParamWriter.java	15 Jan 2004 13:45:23 -0000	1.3
  +++ ArrayParamWriter.java	18 Mar 2004 07:50:45 -0000	1.4
  @@ -119,11 +119,7 @@
   	protected void writeArrayStruct()throws WrapperFault{
   		try{			
   			writer.write("typedef struct "+classname+"Tag\n{\n");
  -			if(attribs[0].isSimpleType()){
  -				throw new WrapperFault("Error : no need to synthesis arrays for simple types");				
  -			}else{
  -				writer.write("\t"+attribs[0].getTypeName()+"* m_Array;\n\tint m_Size;\n} "+classname+";\n\n");
  -			}
  +			writer.write("\t"+attribs[0].getTypeName()+"* m_Array;\n\tint m_Size;\n} "+classname+";\n\n");
   		} catch (IOException e) {
   			 throw new WrapperFault(e);
   		}
  
  
  
  1.12      +10 -0     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/BeanParamWriter.java
  
  Index: BeanParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/BeanParamWriter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- BeanParamWriter.java	8 Mar 2004 05:43:46 -0000	1.11
  +++ BeanParamWriter.java	18 Mar 2004 07:50:45 -0000	1.12
  @@ -342,4 +342,14 @@
   		writer.write("\t}\n");
   		writer.write("}\n");
   	}	
  +	protected void writeRestrictionCheckerFunction() throws WrapperFault {
  +		try{
  +			writer.write("int Check_Restrictions_"+classname+"("+classname+" value)\n");
  +			writer.write("{\n");
  +			//TODO write code to check the restrictions
  +			writer.write("}\n");					
  +		}catch(IOException e){
  +			throw new WrapperFault(e);
  +		}
  +	}	
   }
  
  
  
  1.12      +18 -7     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java
  
  Index: ClientStubWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ClientStubWriter.java	19 Feb 2004 10:27:53 -0000	1.11
  +++ ClientStubWriter.java	18 Mar 2004 07:50:45 -0000	1.12
  @@ -247,7 +247,12 @@
   		for (int i = 0; i < paramsB.size(); i++) {
   			type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
   			if (type != null){
  -				paramTypeName = type.getLanguageSpecificName();
  +				if (type.isSimpleType()){//schema defined simpleType possibly with restrictions
  +					paramTypeName = CUtils.getclass4qname(type.getBaseType());
  +				}
  +				else{
  +					paramTypeName = type.getLanguageSpecificName();
  +				}
   				typeisarray = type.isArray();
   			}
   			else {
  @@ -262,21 +267,21 @@
   				if (CUtils.isSimpleType(qname)){
   					containedType = CUtils.getclass4qname(qname);
   					writer.write("\tpCall->_functions->AddBasicArrayParameter(pCall->_object, ");			
  -					writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
  +					writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart()+"\"");
   				}
   				else{
   					containedType = qname.getLocalPart();
   					writer.write("\tpCall->_functions->AddCmplxArrayParameter(pCall->_object, ");
  -					writer.write("(Axis_Array*)(&Value"+i+"), (void*)Axis_Serialize_"+containedType+", (void*)Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+containedType);
  +					writer.write("(Axis_Array*)(&Value"+i+"), (void*)Axis_Serialize_"+containedType+", (void*)Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart()+"\", Axis_URI_"+containedType);
   				}
   			}else if(typeissimple){
   				//for simple types	
   				writer.write("\tpCall->_functions->AddParameter(pCall->_object, ");			
  -				writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
  +				writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
   			}else{
   				//for complex types 
   				writer.write("\tpCall->_functions->AddCmplxParameter(pCall->_object, ");			
  -				writer.write("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+paramTypeName);
  +				writer.write("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart()+"\", Axis_URI_"+paramTypeName);
   			}
   			writer.write(");\n");
   		}
  @@ -289,7 +294,12 @@
   				ParameterInfo currentType = (ParameterInfo)paramsC.get(i);
   				type = wscontext.getTypemap().getType(currentType.getSchemaName());
   				if (type != null){
  -					currentParaType = type.getLanguageSpecificName();
  +					if (type.isSimpleType()){
  +						currentParaType = CUtils.getclass4qname(type.getBaseType());
  +					}
  +					else{
  +						currentParaType = type.getLanguageSpecificName();
  +					}
   					typeisarray = type.isArray();
   				}
   				else {
  @@ -349,7 +359,7 @@
   			writer.write("\treturn RetArray;\n");
   		}
   		else if(returntypeissimple){
  -			writer.write("\t\t\tRet = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(outparamType, false)+"(pCall->_object, \""+ returntype.getParamName()+"\", 0);\n");
  +			writer.write("\t\t\tRet = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(outparamType, false)+"(pCall->_object, \""+ returntype.getElementName().getLocalPart()+"\", 0);\n");
   			writer.write("\t\t}\n");
   			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn Ret;\n");
  @@ -375,6 +385,7 @@
   		try {
   			while(types.hasNext()){
   				type = (Type)types.next();
  +				if (type.isSimpleType()) continue;
   				if (type.isArray()) continue;
   				typeName = type.getLanguageSpecificName();
   				if (typeName.startsWith(">")) continue;
  
  
  
  1.5       +9 -3      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ParamCFileWriter.java
  
  Index: ParamCFileWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ParamCFileWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ParamCFileWriter.java	17 Jan 2004 12:25:31 -0000	1.4
  +++ ParamCFileWriter.java	18 Mar 2004 07:50:45 -0000	1.5
  @@ -74,15 +74,21 @@
   	public ParamCFileWriter(WebServiceContext wscontext,Type type)throws WrapperFault{
   		super(wscontext,type);
   	}
  +	protected abstract void writeRestrictionCheckerFunction() throws WrapperFault;
   	   
   	public void writeSource()throws WrapperFault{
   	   try{
   	  		this.writer = new BufferedWriter(new FileWriter(getFilePath(), false));
   			writeClassComment();
   	   		writePreprocssorStatements();
  -	   		writeGlobalCodes();
  -	   		writeAttributes();
  -	   		writeMethods();
  +			if (type.isSimpleType()){
  +				writeRestrictionCheckerFunction();
  +			}
  +			else{
  +		   		writeGlobalCodes();
  +		   		writeAttributes();
  +		   		writeMethods();
  +			}
   	   		//cleanup
   	   		writer.flush();
   	   		writer.close();
  
  
  
  1.5       +64 -5     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ParmHeaderFileWriter.java
  
  Index: ParmHeaderFileWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ParmHeaderFileWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ParmHeaderFileWriter.java	3 Feb 2004 13:04:48 -0000	1.4
  +++ ParmHeaderFileWriter.java	18 Mar 2004 07:50:45 -0000	1.5
  @@ -66,7 +66,12 @@
   import java.io.IOException;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.Vector;
   
  +import javax.xml.namespace.QName;
  +
  +import org.apache.axis.wsdl.symbolTable.TypeEntry;
  +import org.apache.axis.wsdl.wsdl2ws.CUtils;
   import org.apache.axis.wsdl.wsdl2ws.WrapperFault;
   import org.apache.axis.wsdl.wsdl2ws.ParamWriter;
   import org.apache.axis.wsdl.wsdl2ws.WrapperUtils;
  @@ -84,20 +89,74 @@
   			// if this headerfile not defined define it 
   			this.writer.write("#if !defined(__"+classname.toUpperCase()+"_H__INCLUDED_)\n");
   			this.writer.write("#define __"+classname.toUpperCase()+"_H__INCLUDED_\n\n");
  -			writePreprocssorStatements();
  -			this.writer.write("typedef struct {\n");
  -			writeAttributes();
  -			this.writer.write("} "+classname+";\n\n");
  +			if (type.isSimpleType()){
  +				writeSimpleTypeWithEnumerations();
  +			}
  +			else{
  +				writePreprocssorStatements();
  +				this.writer.write("typedef struct {\n");
  +				writeAttributes();
  +				this.writer.write("} "+classname+";\n\n");
  +			}
   			this.writer.write("#endif /* !defined(__"+classname.toUpperCase()+"_H__INCLUDED_)*/\n");
   			writer.flush();
   			writer.close();
   			System.out.println(getFilePath().getAbsolutePath() + " created.....");
  -		} catch (IOException e) {
  +		} catch (IOException e){
   			e.printStackTrace();
   			throw new WrapperFault(e);
   		}
   	}
   
  +	protected void writeSimpleTypeWithEnumerations() throws WrapperFault{
  +		try{
  +			Vector restrictionData = type.getEnumerationdata();
  +			if ( restrictionData == null) return;
  +			TypeEntry baseEType = (TypeEntry)restrictionData.firstElement();
  +			QName baseType = baseEType.getQName();
  +			if (!CUtils.isSimpleType(baseType)) return;
  +			String langTypeName = CUtils.getclass4qname(baseType);
  +			writer.write("typedef ");
  +			if ("string".equals(baseType.getLocalPart())){
  +				writer.write(langTypeName + " " + classname + ";\n");
  +				for(int i=1; i<restrictionData.size();i++){
  +					QName value = (QName)restrictionData.elementAt(i);
  +					if ("enumeration".equals(value.getLocalPart())){
  +						writer.write("const "+classname+" "+classname+"_"+value.getNamespaceURI()+" = \""+ value.getNamespaceURI()+"\";\n");
  +					}else if("maxLength".equals(value.getLocalPart())){
  +						writer.write("const "+classname+"_MaxLength = "+value.getNamespaceURI()+";\n");
  +					}else if("minLength".equals(value.getLocalPart())){
  +						writer.write("const "+classname+"_MinLength = "+value.getNamespaceURI()+";\n");
  +					}
  +				}
  +			}
  +			else if ("int".equals(baseType.getLocalPart())){
  +				if (restrictionData.size()>1){ //there are enumerations
  +					writer.write("enum { ");
  +					for(int i=1; i<restrictionData.size();i++){
  +						QName value = (QName)restrictionData.elementAt(i);
  +						if ("enumeration".equals(value.getLocalPart())){
  +							if (i>1) writer.write(", ");
  +							writer.write("ENUM"+classname.toUpperCase()+"="+value.getNamespaceURI());		
  +						}
  +					}
  +					writer.write("} "+classname+";\n");
  +				}
  +			}
  +			else{
  +				writer.write(langTypeName + " " + classname + ";\n");
  +				for(int i=1; i<restrictionData.size();i++){
  +					QName value = (QName)restrictionData.elementAt(i);
  +					if ("enumeration".equals(value.getLocalPart())){
  +						writer.write("const "+classname+" "+classname+"_"+value.getNamespaceURI()+" = "+ value.getNamespaceURI()+";\n");
  +					}
  +				}
  +			}	
  +		} catch (IOException e) {
  +			 throw new WrapperFault(e);
  +		}
  +	}
  +	
   	protected void writeAttributes()throws WrapperFault{
   		  if(type.isArray()) return;
   		  try{
  
  
  
  1.12      +47 -18    ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java
  
  Index: WrapWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- WrapWriter.java	20 Feb 2004 13:37:44 -0000	1.11
  +++ WrapWriter.java	18 Mar 2004 07:50:45 -0000	1.12
  @@ -210,8 +210,6 @@
   		}
   		else{
   			isAllTreatedAsOutParams = true;
  -			//TODO make all outparams when there are more than one return params
  -			throw new WrapperFault("WSDL2Ws does not still handle more than one return parameters");
   		}
   		String methodName = minfo.getMethodname();
   		Collection params = minfo.getInputParameterTypes();
  @@ -222,13 +220,20 @@
   		if (returntype != null){
   			retType = wscontext.getTypemap().getType(returntype.getSchemaName());
   			if (retType != null){
  -				outparamType = retType.getLanguageSpecificName();
  -				returntypeisarray = retType.isArray();
  +				if (retType.isSimpleType()){ //schema defined simpleType possibly with restrictions
  +					returntypeissimple = true;
  +					outparamType = CUtils.getclass4qname(retType.getBaseType()); 
  +				}
  +				else{
  +					outparamType = retType.getLanguageSpecificName();
  +					returntypeisarray = retType.isArray();
  +					returntypeissimple = CUtils.isSimpleType(outparamType);
  +				}
   			}
   			else{
   				outparamType = returntype.getLangName();
  +				returntypeissimple = CUtils.isSimpleType(outparamType);
   			}
  -			returntypeissimple = CUtils.isSimpleType(outparamType);
   		}
   		String paraTypeName;
   		ArrayList paramsB = new ArrayList(params);
  @@ -245,11 +250,12 @@
   
   		for (int i = 0; i < paramsB.size(); i++) {
   			if (i>0) writer.write(",");
  +			type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
   			paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
  -			if((CUtils.isSimpleType(paraTypeName))){
  +			if((CUtils.isSimpleType(paraTypeName)) || (type != null && type.isSimpleType())){
   				//for simple types	
   				writer.write(paraTypeName);
  -			}else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
  +			}else if(type != null && type.isArray()){
   				writer.write(paraTypeName);
   			}else{
   				writer.write(paraTypeName+"*");
  @@ -274,11 +280,12 @@
   		String elementName;
   		String returnParamName;
   		for (int i = 0; i < paramsB.size(); i++) {
  +			type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
   			paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
  -			if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
  +			if((CUtils.isSimpleType(paraTypeName)) || (type != null && type.isSimpleType())){
   				//for simple types	
   				writer.write("\t"+paraTypeName+" v"+i+";\n");
  -			}else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
  +			}else if(type != null && type.isArray()){
   				//for arrays
   				aretherearrayparams = true;
   				writer.write("\t"+paraTypeName+" v"+i+";\n"); 
  @@ -305,18 +312,27 @@
   		writer.write("\tpSZ->_functions->CreateSoapMethod(SZ._object, \""+minfo.getOutputMessage().getLocalPart()+"\", \""+minfo.getOutputMessage().getNamespaceURI()+"\");\n");
   		//create and populate variables for each parameter
   		for (int i = 0; i < paramsB.size(); i++) {
  -			paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
  +			type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
  +			if (type.isSimpleType()){ //schema defined simpleType possibly with restrictions
  +				paraTypeName = CUtils.getclass4qname(type.getBaseType());;
  +			}
  +			else{
  +				paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
  +			}
   			parameterName = ((ParameterInfo)paramsB.get(i)).getParamName();
   			elementName = ((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart();
  -			if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
  +			if (type.isSimpleType()){ //schema defined simpleType possibly with restrictions
  +				writer.write("\tv"+i+" = DZ._functions->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(DZ._object,\""+elementName+"\", 0);\n");
  +			}
  +			else if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
   				//for simple types	
   				writer.write("\tv"+i+" = DZ._functions->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(DZ._object,\""+elementName+"\", 0);\n");
  -			}else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
  +			}else if(type != null && type.isArray()){
   				QName qname = WrapperUtils.getArrayType(type).getName();
   				String containedType = null;
   				if (CUtils.isSimpleType(qname)){
   					containedType = CUtils.getclass4qname(qname);
  -					writer.write("\tarray = DZ._functions->GetBasicArray(DZ._object, "+CUtils.getXSDTypeForBasicType(containedType)+"\""+elementName+"\", 0);\n");
  +					writer.write("\tarray = DZ._functions->GetBasicArray(DZ._object, "+CUtils.getXSDTypeForBasicType(containedType)+", \""+elementName+"\", 0);\n");
   					writer.write("\tmemcpy(&v"+i+", &array, sizeof(Axis_Array));\n");
   				}
   				else{
  @@ -349,12 +365,17 @@
   			if (returntypeissimple){
   				writer.write("\treturn pSZ->_functions->AddOutputParam(SZ._object, \""+returnParamName+"\", (void*)&ret, "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
   			}else if(returntypeisarray){
  -				QName qname = WrapperUtils.getArrayType(retType).getName();
  +				Type arrayType = WrapperUtils.getArrayType(retType);
  +				QName qname = arrayType.getName();
   				String containedType = null;
   				if (CUtils.isSimpleType(qname)){
   					containedType = CUtils.getclass4qname(qname);
   					writer.write("\treturn pSZ->_functions->AddOutputBasicArrayParam(SZ._object, (Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
   				}
  +				else if (arrayType.isSimpleType()){//SimpleType in the schema 
  +					containedType = CUtils.getclass4qname(arrayType.getBaseType());
  +					writer.write("\treturn pSZ->_functions->AddOutputBasicArrayParam(SZ._object, (Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
  +				}
   				else{
   					containedType = qname.getLocalPart();
   					writer.write("\treturn pSZ->_functions->AddOutputCmplxArrayParam(SZ._object, (Axis_Array*)(&ret), (void*) Axis_Serialize_"+containedType
  @@ -382,14 +403,21 @@
   			for (int i = 0; i < paramsC.size(); i++) {
   				retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
   				if (retType != null){
  -					outparamType = retType.getLanguageSpecificName();
  -					returntypeisarray = retType.isArray();
  +					if (retType.isSimpleType()){
  +						returntypeissimple = true;
  +						outparamType = CUtils.getclass4qname(retType.getBaseType()); 
  +					}
  +					else{
  +						outparamType = retType.getLanguageSpecificName();
  +						returntypeisarray = retType.isArray();
  +						returntypeissimple = CUtils.isSimpleType(outparamType);
  +					}
   				}
   				else{
   					outparamType = returntype.getLangName();
  +					returntypeissimple = CUtils.isSimpleType(outparamType);
   				}
  -				returntypeissimple = CUtils.isSimpleType(outparamType);
  -				returnParamName = ((ParameterInfo)paramsC.get(i)).getParamName();
  +				returnParamName = ((ParameterInfo)paramsC.get(i)).getElementName().getLocalPart();
   				if (returntypeissimple){
   					writer.write("\tSZ._functions->AddOutputParam(SZ._object, \""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
   				}else if(returntypeisarray){
  @@ -438,6 +466,7 @@
   		try {
   			while(types.hasNext()){
   				type = (Type)types.next();
  +				if (type.isSimpleType()) continue;
   				if (type.isArray()) continue;
   				typeName = type.getLanguageSpecificName();
   				if (typeName.startsWith(">")) continue;