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/10/20 15:33:19 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info AttributeInfo.java ParameterInfo.java

susantha    2004/10/20 06:33:19

  Modified:    c/src/wsdl/org/apache/axis/wsdl/wsdl2ws WSDL2Ws.java
                        WrapperUtils.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
                        WrapWriter.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info
                        AttributeInfo.java ParameterInfo.java
  Log:
  Code improvements to  enable having simple type array declarations in the wrapping element. Example,
  <s:element name="GetProjectNamesResponse">
  	<s:complexType>
  		<s:sequence>
  			<s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="return" type="s:string" />
  		</s:sequence>
  	</s:complexType>
  </s:element>
  
  Revision  Changes    Path
  1.41      +11 -2     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
  
  Index: WSDL2Ws.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- WSDL2Ws.java	6 Oct 2004 13:46:10 -0000	1.40
  +++ WSDL2Ws.java	20 Oct 2004 13:33:18 -0000	1.41
  @@ -193,6 +193,7 @@
   		Element element;
   		QName qname;
           ParameterInfo pinfo;
  +		ElementInfo eleinfo;
   		Type type;
           org.apache.axis.wsdl.symbolTable.Type ptype;
           //for each operation
  @@ -245,8 +246,12 @@
   							Type innerType;
   							for (int i = 0 ; i < elementlist.size(); i++) {
   								String elementname = (String)elementlist.get(i);
  -								innerType = type.getElementForElementName(elementname).getType();
  +								eleinfo = type.getElementForElementName(elementname);
  +								innerType = eleinfo.getType();
   								pinfo = new ParameterInfo(innerType,elementname);
  +								if (eleinfo.getMaxOccurs() > 1){
  +									pinfo.setArray(true);									
  +								}
   								pinfo.setElementName(type.getElementForElementName(elementname).getName());
   								if (innerType.getName().equals(CUtils.anyTypeQname))
   									pinfo.setAnyType(true);
  @@ -342,8 +347,12 @@
   								Type innerType;
   								for (int i = 0 ; i < elementlist.size(); i++) {
   									String elementname = (String)elementlist.get(i);
  -									innerType = type.getElementForElementName(elementname).getType();
  +									eleinfo = type.getElementForElementName(elementname);
  +									innerType = eleinfo.getType();
   									pinfo = new ParameterInfo(innerType,elementname);
  +									if (eleinfo.getMaxOccurs() > 1){
  +										pinfo.setArray(true);									
  +									}
   									pinfo.setElementName(type.getElementForElementName(elementname).getName());
   									if (innerType.getName().equals(CUtils.anyTypeQname))
   										pinfo.setAnyType(true);
  
  
  
  1.12      +14 -1     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WrapperUtils.java
  
  Index: WrapperUtils.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WrapperUtils.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- WrapperUtils.java	6 Jul 2004 07:16:03 -0000	1.11
  +++ WrapperUtils.java	20 Oct 2004 13:33:18 -0000	1.12
  @@ -172,6 +172,7 @@
   			if (type.isArray()){
   				String arrayName = CUtils.getCmplxArrayNameforType(getArrayType(type).getName());
   				if (null == arrayName){//simple type array
  +					/* Does the program flow ever come to this place ? if so in which situation ? - Susantha 20/10/2004 */
   					arrayName = CUtils.getBasicArrayNameforType(CUtils.getclass4qname(getArrayType(type).getName()));
   				}
   				return arrayName;
  @@ -179,7 +180,19 @@
   			else{
   				return param.getLangName()+"*"; //All complex types will be pointers	
   			}
  -		}else
  +		}else if(param.isArray()){
  +			/* This enables having simple type array declarations in the wrapping element
  +			 * <s:element name="GetProjectNamesResponse">
  +				<s:complexType>
  +					<s:sequence>
  +						<s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="return" type="s:string" />
  +					</s:sequence>
  +				</s:complexType>
  +			</s:element>
  +			 */
  +			return CUtils.getBasicArrayNameforType(CUtils.getclass4qname(type.getName()));
  +		}
  +		else
   			return param.getLangName();			
   	}
   	
  
  
  
  1.25      +31 -9     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
  
  Index: WrapWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- WrapWriter.java	6 Oct 2004 09:50:17 -0000	1.24
  +++ WrapWriter.java	20 Oct 2004 13:33:19 -0000	1.25
  @@ -131,7 +131,7 @@
   			throw new WrapperFault(e);
   		}
   	}
  -
  +	
   	/* (non-Javadoc)
   	 * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writePreprocssorStatements()
   	 */
  @@ -214,9 +214,15 @@
   					outparamType = CUtils.getclass4qname(retType.getBaseType()); 
   				}
   				else{
  -					outparamType = retType.getLanguageSpecificName();
  -					returntypeisarray = retType.isArray();
  -					returntypeissimple = CUtils.isSimpleType(outparamType);
  +					if (returntype.isArray()){
  +						outparamType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype, wscontext);
  +						returntypeissimple = (null != CUtils.getclass4qname(retType.getName()) && CUtils.isSimpleType(CUtils.getclass4qname(retType.getName())));
  +						returntypeisarray = true;
  +					}else{
  +						outparamType = retType.getLanguageSpecificName();
  +						returntypeissimple = CUtils.isSimpleType(outparamType);
  +						returntypeisarray = retType.isArray();
  +					}
   				}
   			}
   			else{
  @@ -252,8 +258,9 @@
   			type = this.wscontext.getTypemap().getType(param.getSchemaName());
   			if (type != null && type.isSimpleType()){ //schema defined simpleType possibly with restrictions
   				paraTypeName = CUtils.getclass4qname(type.getBaseType());;
  -			}
  -			else{
  +			}else if(param.isArray()){
  +				paraTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(param, wscontext);
  +			}else{
   				paraTypeName = param.getLangName();
   			}
   			parameterName = param.getParamName();
  @@ -263,7 +270,12 @@
   			}
   			else if((CUtils.isSimpleType(param.getLangName()))){
   				//for simple types	
  -				writer.write("\t"+paraTypeName+" v"+i+" = pIWSDZ->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(\""+elementName+"\",0);\n");
  +				if (param.isArray()){ /*parameters that are declared as arrays in the wrapping element.*/
  +					String containedType = CUtils.getclass4qname(type.getName());
  +					writer.write("\t"+paraTypeName+" v"+i+" = ("+CUtils.getBasicArrayNameforType(containedType)+"&)pIWSDZ->getBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+ ", \""+elementName+"\",0);\n");					
  +				}else{		
  +					writer.write("\t"+paraTypeName+" v"+i+" = pIWSDZ->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(\""+elementName+"\",0);\n");
  +				}
   			}else if((type != null) && type.isArray()){
   				Type arrayType = WrapperUtils.getArrayType(type);
   				QName qname = arrayType.getName();
  @@ -314,7 +326,12 @@
   			writer.write(");\n");
   			/* set the result */
   			if (returntypeissimple){
  -				writer.write("\treturn pIWSSZ->addOutputParam(\""+returnParamName+"\", (void*)&ret, "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
  +				if (returntype.isArray()){ /*parameters that are declared as arrays in the wrapping element.*/
  +					String containedType = CUtils.getclass4qname(retType.getName());
  +					writer.write("\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
  +				}else{					
  +					writer.write("\treturn pIWSSZ->addOutputParam(\""+returnParamName+"\", (void*)&ret, "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
  +				}
   			}else if(returntypeisarray){
   				Type arrayType = WrapperUtils.getArrayType(retType);
   				QName qname = arrayType.getName();
  @@ -373,7 +390,12 @@
   				}
   				returnParamName = param.getElementName().getLocalPart();
   				if (returntypeissimple){
  -					writer.write("\tpIWSSZ->addOutputParam(\""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
  +					if (param.isArray()){ /*parameters that are declared as arrays in the wrapping element.*/
  +						String containedType = CUtils.getclass4qname(retType.getName());
  +						writer.write("\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
  +					}else{				
  +						writer.write("\tpIWSSZ->addOutputParam(\""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
  +					}
   				}else if(returntypeisarray){
   					Type arrayType = WrapperUtils.getArrayType(retType);
   					QName qname = arrayType.getName();
  
  
  
  1.5       +0 -16     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/AttributeInfo.java
  
  Index: AttributeInfo.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/AttributeInfo.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AttributeInfo.java	12 Oct 2004 08:21:27 -0000	1.4
  +++ AttributeInfo.java	20 Oct 2004 13:33:19 -0000	1.5
  @@ -31,7 +31,6 @@
   	private boolean isSimpleType = true;
   	private boolean isAttribute = false;
   	private boolean isOptional = false;
  -	private boolean isArray = false;
   	private String typeName;
   	private String typeNamespace;
           private String className;
  @@ -101,21 +100,6 @@
   	 */
   	public void setTypeNamespace(String typeNamespace) {
   		this.typeNamespace = typeNamespace;
  -	}
  -
  -	/**
  -	 * @return boolean
  -	 */
  -	public boolean isArray() {
  -		return isArray;
  -	}
  -
  -	/**
  -	 * Sets the isArray.
  -	 * @param isArray The isArray to set
  -	 */
  -	public void setArray(boolean isArray) {
  -		this.isArray = isArray;
   	}
   
   	/**
  
  
  
  1.11      +16 -1     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/ParameterInfo.java
  
  Index: ParameterInfo.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/ParameterInfo.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ParameterInfo.java	27 Aug 2004 00:22:40 -0000	1.10
  +++ ParameterInfo.java	20 Oct 2004 13:33:19 -0000	1.11
  @@ -29,8 +29,23 @@
       protected String attribName;
   	protected QName elementName;
   	private boolean isAnyType = false;
  -	
  +	protected boolean isArray = false;	
   	private boolean isAttribute = false;
  +	
  +	/**
  +	 * @return boolean
  +	 */
  +	public boolean isArray() {
  +		return isArray;
  +	}
  +
  +	/**
  +	 * Sets the isArray.
  +	 * @param isArray The isArray to set
  +	 */
  +	public void setArray(boolean isArray) {
  +		this.isArray = isArray;
  +	}
   	
   	public boolean isAttribute(){
   		return this.isAttribute;