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/16 15:04:12 UTC
cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info Type.java
susantha 2004/03/16 06:04:12
Modified: c/src/wsdl/org/apache/axis/wsdl/wsdl2ws CUtils.java
WSDL2Ws.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
ClientStubWriter.java WrapWriter.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info Type.java
Log:
WSDL2Ws tool improvements to handle SimpleType and enumerations - few more fixes
Revision Changes Path
1.7 +2 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java
Index: CUtils.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CUtils.java 16 Mar 2004 08:26:28 -0000 1.6
+++ CUtils.java 16 Mar 2004 14:04:11 -0000 1.7
@@ -63,7 +63,6 @@
import java.util.Hashtable;
import javax.xml.namespace.QName;
-import org.apache.axis.wsdl.wsdl2ws.WrapperConstants;
import java.util.Vector;
import org.w3c.dom.Node;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
@@ -73,6 +72,7 @@
import org.apache.axis.wsdl.symbolTable.TypeEntry;
import javax.xml.rpc.holders.BooleanHolder;
import org.apache.axis.wsdl.symbolTable.SchemaUtils;
+import org.apache.axis.wsdl.wsdl2ws.info.Type;
import org.apache.axis.wsdl.wsdl2ws.info.TypeMap;
public class CUtils {
@@ -246,6 +246,7 @@
}
return arrayName;
}
+
public static String getBasicArrayNameforType(String stype){
if (type2BasicArrayName.containsKey(stype))
return (String)type2BasicArrayName.get(stype);
1.19 +0 -1 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.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- WSDL2Ws.java 16 Mar 2004 08:26:28 -0000 1.18
+++ WSDL2Ws.java 16 Mar 2004 14:04:11 -0000 1.19
@@ -491,7 +491,6 @@
typedata.setTypeNameForElementName(new ElementInfo(type.getQName(),
createTypeInfo(type.getRefType().getQName(),targetLanguage)));
typedata.setArray(true);
- typedata.setCanThisOccuredmoreThanOnceAllTheTime(true);
}else{
//is this a SOAPEnc array type
QName arrayType =
1.10 +14 -2 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
Index: ClientStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ClientStubWriter.java 16 Mar 2004 08:26:28 -0000 1.9
+++ ClientStubWriter.java 16 Mar 2004 14:04:12 -0000 1.10
@@ -300,13 +300,19 @@
typeissimple = CUtils.isSimpleType(paraTypeName);
if(typeisarray){
//arrays
- QName qname = WrapperUtils.getArrayType(type).getName();
+ Type arrayType = WrapperUtils.getArrayType(type);
+ QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname)){
containedType = CUtils.getclass4qname(qname);
writer.write("\tm_pCall->AddBasicArrayParameter(");
writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
}
+ else if (arrayType.isSimpleType()){//SimpleType in the schema
+ containedType = CUtils.getclass4qname(arrayType.getBaseType());
+ writer.write("\tm_pCall->AddBasicArrayParameter(");
+ writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
+ }
else{
containedType = qname.getLocalPart();
writer.write("\tm_pCall->AddCmplxArrayParameter(");
@@ -345,12 +351,17 @@
currentParamName = "*OutValue"+i;
// Some code need to be merged as we have some duplicated in coding here.
if (typeisarray){
- QName qname = WrapperUtils.getArrayType(type).getName();
+ Type arrayType = WrapperUtils.getArrayType(type);
+ QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname)){
containedType = CUtils.getclass4qname(qname);
writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getElementName().getLocalPart()+"\", 0);\n");
}
+ else if (arrayType.isSimpleType()){//SimpleType in the schema
+ containedType = CUtils.getclass4qname(arrayType.getBaseType());
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
else{
containedType = qname.getLocalPart();
writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetCmplxArray((void*) Axis_DeSerialize_"+containedType);
@@ -412,6 +423,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.11 +19 -3 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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- WrapWriter.java 16 Mar 2004 08:26:28 -0000 1.10
+++ WrapWriter.java 16 Mar 2004 14:04:12 -0000 1.11
@@ -268,12 +268,17 @@
//for simple types
writer.write("\t"+paraTypeName+" v"+i+" = pIWSDZ->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(\""+elementName+"\",0);\n");
}else if((type = this.wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
- QName qname = WrapperUtils.getArrayType(type).getName();
+ Type arrayType = WrapperUtils.getArrayType(type);
+ QName qname = arrayType.getName();
String containedType = null;
if (CUtils.isSimpleType(qname)){
containedType = CUtils.getclass4qname(qname);
writer.write("\t"+paraTypeName+" v"+i+" = ("+CUtils.getBasicArrayNameforType(containedType)+"&)pIWSDZ->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+ ", \""+elementName+"\",0);\n");
}
+ else if (arrayType.isSimpleType()){//SimpleType in the schema
+ containedType = CUtils.getclass4qname(arrayType.getBaseType());
+ writer.write("\t"+paraTypeName+" v"+i+" = ("+CUtils.getBasicArrayNameforType(containedType)+"&)pIWSDZ->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+ ", \""+elementName+"\",0);\n");
+ }
else{
containedType = qname.getLocalPart();
writer.write("\t"+paraTypeName+" v"+i+" = ("+paraTypeName+"&)pIWSDZ->GetCmplxArray((void*)Axis_DeSerialize_"+containedType+
@@ -310,12 +315,17 @@
if (returntypeissimple){
writer.write("\treturn pIWSSZ->AddOutputParam(\""+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 pIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
}
+ else if (arrayType.isSimpleType()){//SimpleType in the schema
+ containedType = CUtils.getclass4qname(arrayType.getBaseType());
+ writer.write("\treturn pIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
+ }
else{
containedType = qname.getLocalPart();
writer.write("\treturn pIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&ret),"+
@@ -354,12 +364,17 @@
if (returntypeissimple){
writer.write("\tpIWSSZ->AddOutputParam(\""+returnParamName+"\", (void*)&out"+i+", "+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("\tpIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&out"+i+"),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
}
+ else if (arrayType.isSimpleType()){//SimpleType in the schema
+ containedType = CUtils.getclass4qname(arrayType.getBaseType());
+ writer.write("\tpIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&out"+i+"),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
+ }
else{
containedType = qname.getLocalPart();
writer.write("\tpIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&out"+i+"),"+
@@ -398,6 +413,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.11 +31 -20 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java
Index: Type.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Type.java 16 Mar 2004 08:26:28 -0000 1.10
+++ Type.java 16 Mar 2004 14:04:12 -0000 1.11
@@ -68,6 +68,7 @@
import javax.xml.namespace.QName;
+import org.apache.axis.wsdl.symbolTable.BaseType;
import org.apache.axis.wsdl.symbolTable.TypeEntry;
import org.apache.axis.wsdl.wsdl2ws.WrapperConstants;
import org.apache.axis.wsdl.wsdl2ws.WrapperUtils;
@@ -77,8 +78,15 @@
/* max no of attribs expected in a type */
private static final int MAXIMUM_NO_ATTRIBS = 101;
private QName name;
+ /**
+ * Indicate whether this is a schema defined simpleType
+ */
private boolean isSimpleType=false;
/**
+ * In case this is schema defined simpleType, this is the base type.
+ */
+ private QName baseType;
+ /**
* If the specified node represents a supported JAX-RPC restriction,
* a Vector is returned which contains the base type and the values.
* The first element in the vector is the base type (an TypeEntry).
@@ -107,9 +115,6 @@
/* weather the type is Array */
private boolean isArray;
- private boolean canThisOccuredmoreThanOnceAllTheTime = false;
- //to handle <xsd:element name="three" type="typens:enum" maxOccurs="unbounded" />
- //types at the top level. But this is not allowed in the Schema spec.
private boolean isreferenced = false;
private String language;
@@ -283,21 +288,7 @@
}
return false;
}
- /**
- * @return
- */
- public boolean isCanThisOccuredmoreThanOnceAllTheTime() {
- return canThisOccuredmoreThanOnceAllTheTime;
- }
-
- /**
- * @param b
- */
- public void setCanThisOccuredmoreThanOnceAllTheTime(boolean b) {
- canThisOccuredmoreThanOnceAllTheTime = b;
- }
-
-
+
/**
* If the specified node represents a supported JAX-RPC enumeration,
* a Vector is returned which contains the base type and the enumeration values.
@@ -314,8 +305,13 @@
* @param vector
*/
public void setRestrictiondata(Vector vector) {
- isSimpleType = true;
- enumerationdata = vector;
+ if (vector != null){
+ isSimpleType = true;
+ BaseType basetype = (BaseType)vector.firstElement();
+ if (basetype != null)
+ setBaseType(basetype.getQName());
+ enumerationdata = vector;
+ }
}
/* (non-Javadoc)
@@ -380,6 +376,21 @@
*/
public void setSimpleType(boolean isSimpleType) {
this.isSimpleType = isSimpleType;
+ }
+
+ /**
+ * @return QName
+ */
+ public QName getBaseType() {
+ return baseType;
+ }
+
+ /**
+ * Sets the baseType.
+ * @param baseType The baseType to set
+ */
+ public void setBaseType(QName baseType) {
+ this.baseType = baseType;
}
}