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;