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 sa...@apache.org on 2004/10/08 13:28:22 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal ClientStubWriter.java

samisa      2004/10/08 04:28:22

  Modified:    c/src/wsdl/org/apache/axis/wsdl/wsdl2ws CUtils.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
                        ClientStubWriter.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
                        ClientStubWriter.java
  Log:
  Resolved AXISCPP-64 by including init logic for simple types
  
  Revision  Changes    Path
  1.23      +37 -0     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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- CUtils.java	1 Oct 2004 07:04:08 -0000	1.22
  +++ CUtils.java	8 Oct 2004 11:28:22 -0000	1.23
  @@ -44,6 +44,7 @@
   	/* This type mapping only maps simple types the mapping for
   	   complex types are done with in the type class */
   	private static Hashtable class2QNamemap = new Hashtable();
  +	private static Hashtable initValues = new Hashtable();
   	private static Hashtable qname2classmap = new Hashtable();
   	private static Hashtable schemaDefinedSimpleTypesMap = new Hashtable();
   	private static Hashtable type2getValueMethodName = new Hashtable();
  @@ -75,6 +76,7 @@
   		class2QNamemap.put("xsd__unsignedShort", new QName(WrapperConstants.SCHEMA_NAMESPACE, "unsignedShort"));
   		class2QNamemap.put("xsd__QName", new QName(WrapperConstants.SCHEMA_NAMESPACE, "QName"));
   		class2QNamemap.put("xsd__NMTOKEN", new QName(WrapperConstants.SCHEMA_NAMESPACE,"NMTOKEN"));
  +
   		qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "int"), "int");
   		qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "byte"), "unsigned char");
   		qname2classmap.put(new QName(WrapperConstants.SCHEMA_NAMESPACE, "float"), "float");
  @@ -196,6 +198,32 @@
   		basicType2EnumMap.put("xsd__anyURI","XSD_ANYURI");
   		basicType2EnumMap.put("xsd__QName","XSD_QNAME");
   		basicType2EnumMap.put("xsd__NMTOKEN","XSD_NMTOKEN");
  +
  +
  +		initValues.put("int", "0"); 
  +		initValues.put("unsigned char", "0"); 
  +		initValues.put("float", "0.0"); 
  +		initValues.put("long", "0"); 
  +		initValues.put("long", "0"); 
  +		initValues.put("double", "0.0"); 
  +		initValues.put("char", "0"); 
  +		initValues.put("short", "0"); 
  +		initValues.put("xsd__string", "NULL"); 
  +		//initValues.put("xsd__dateTime", "0"); 
  +		//initValues.put("xsd__date", "0"); 
  +		//initValues.put("xsd__time", "0"); 
  +		//initValues.put("xsd__base64Binary", "0"); 
  +		//initValues.put("xsd__hexBinary", "0"); 
  +		initValues.put("xsd__decimal", "0.0"); 
  +		initValues.put("xsd__boolean", "false_"); 
  +		initValues.put("xsd__byte", "0"); 
  +		initValues.put("xsd__anyURI", "NULL"); 
  +		initValues.put("xsd__unsignedByte", "0"); 
  +		initValues.put("xsd__unsignedInt", "0"); 
  +		initValues.put("xsd__unsignedLong", "0"); 
  +		initValues.put("xsd__unsignedShort", "0"); 
  +		initValues.put("xsd__QName", "NULL"); 
  +		initValues.put("xsd__NMTOKEN", "NULL"); 
   	}
   	
   	public static void addSchemaDefinedSimpleType(QName qname, String type){
  @@ -256,6 +284,15 @@
   			return (String) val;
   		return null;
   	}
  +
  +	 public static String getInitValue(String typeName) {
  +		Object val = initValues.get(typeName);
  +		if (val != null)
  +			return (String) val;
  +                
  +		return null;
  +	}
  +        
   	public static String getWebServiceNameFromWrapperName(String wname){
   		return wname.substring(0, wname.length()- CUtils.WRAPPER_NAME_APPENDER.length());
   	}
  
  
  
  1.54      +13 -1     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.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- ClientStubWriter.java	8 Sep 2004 06:41:14 -0000	1.53
  +++ ClientStubWriter.java	8 Oct 2004 11:28:22 -0000	1.54
  @@ -238,7 +238,19 @@
   				//for complex types
   			}else{
   				//for simple types
  -				writer.write(outparamTypeName+" Ret;\n");
  +                                String initValue = CUtils.getInitValue(outparamTypeName);
  +                                if (initValue != null)
  +				    writer.write(outparamTypeName+" Ret = " + initValue + ";\n");
  +				else if (outparamTypeName.equals("xsd__base64Binary") || outparamTypeName.equals("xsd__hexBinary"))
  +                                {
  +                                    writer.write(outparamTypeName+" Ret;\n");
  +                                    writer.write("\tRet.__ptr = NULL;\n");
  +                                    writer.write("\tRet.__size = 0;\n");
  +                                }
  +
  +				else
  +				    writer.write(outparamTypeName+" Ret;\n");
  +				    
   				//TODO initialize return parameter appropriately.
   			}
   		}
  
  
  
  1.44      +12 -1     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.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- ClientStubWriter.java	29 Sep 2004 10:38:50 -0000	1.43
  +++ ClientStubWriter.java	8 Oct 2004 11:28:22 -0000	1.44
  @@ -284,7 +284,18 @@
   				//for complex types
   			}else{
   				//for simple types
  -				writer.write(outparamType+" Ret;\n");
  +				String initValue = CUtils.getInitValue(outparamType);
  +                                if (initValue != null)
  +                                    writer.write(outparamType+" Ret = " + initValue + ";\n");
  +                                else if (outparamType.equals("xsd__base64Binary") || outparamType.equals("xsd__hexBinary"))
  +                                {
  +       				    writer.write(outparamType+" Ret;\n");
  +				    writer.write("\tRet.__ptr = NULL;\n");	
  +				    writer.write("\tRet.__size = 0;\n");	
  +				}
  +				else
  +                                    writer.write(outparamType+" Ret;\n");
  +
   				//TODO initialize return parameter appropriately.
   			}
   		}