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 di...@apache.org on 2006/04/04 17:36:00 UTC
svn commit: r391340 [1/3] - in
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws: ./ cpp/
cpp/literal/
Author: dicka
Date: Tue Apr 4 08:35:58 2006
New Revision: 391340
URL: http://svn.apache.org/viewcvs?rev=391340&view=rev
Log:
AXISCPP-961
A number of important fixes are missing from WSDL2Ws for rpc/encoded WSDLs containing optional and nillable elements.
I have taken this as an opportunity to consolidate some of the WSDL2Ws code where they are otherwise identical for doc/literal and rpc/encoded WSDLs.
I have also included a fix to ensure response messages that are declared in the WSDL using an anonymous complex type are also correctly processed.
Removed:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/AllParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParamCPPFileWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/SourceWriterFactory.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParamCPPFileWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParmHeaderFileWriter.java
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/SourceWriterFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/SourceWriterFactory.java?rev=391340&r1=391339&r2=391340&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/SourceWriterFactory.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/SourceWriterFactory.java Tue Apr 4 08:35:58 2006
@@ -35,14 +35,14 @@
return new UndeploymentWriter(wscontext);
case WrapperConstants.GENERATOR_BUILDSCRIPT :
return new BuildScriptWriter(wscontext);
+ case WrapperConstants.GENERATOR_PARAM_CPP_ALL :
+ return new org.apache.axis.wsdl.wsdl2ws.cpp.AllParamWriter(wscontext);
}
if ("rpc".equals(wscontext.getWrapInfo().getWrapperStyle()))
{
switch (generatorType)
{
// C++
- case WrapperConstants.GENERATOR_PARAM_CPP_ALL :
- return new org.apache.axis.wsdl.wsdl2ws.cpp.AllParamWriter(wscontext);
case WrapperConstants.GENERATOR_WRAPPER_CPP :
return new org.apache.axis.wsdl.wsdl2ws.cpp.WrapWriter(wscontext);
case WrapperConstants.GENERATOR_WRAPPER_HPP :
@@ -82,8 +82,6 @@
switch (generatorType)
{
// C++
- case WrapperConstants.GENERATOR_PARAM_CPP_ALL :
- return new org.apache.axis.wsdl.wsdl2ws.cpp.literal.AllParamWriter(wscontext);
case WrapperConstants.GENERATOR_WRAPPER_CPP :
return new org.apache.axis.wsdl.wsdl2ws.cpp.literal.WrapWriter(wscontext);
case WrapperConstants.GENERATOR_WRAPPER_HPP :
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java?rev=391340&r1=391339&r2=391340&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java Tue Apr 4 08:35:58 2006
@@ -774,6 +774,34 @@
Iterator AllTypes = symbolTable.getTypeIndex().values().iterator();
}
}
+ Collection outputParameterTypes = method.getOutputParameterTypes();
+ paramIterator = outputParameterTypes.iterator();
+ while(paramIterator.hasNext())
+ {
+ ParameterInfo parameterInfo =(ParameterInfo)paramIterator.next();
+ Type parameterType = parameterInfo.getType();
+ if(parameterType.getName().equals(type.getQName()))
+ {
+ QName oldName = parameterType.getName();
+ QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), parameterType.getName().getLocalPart().substring(1));
+
+ Type innerClassType = wsContext.getTypemap().getType(parameterType.getName());
+ // innerClassType.setLanguageSpecificName(newTypeName);
+
+ // First thing to do is to expose the type so it gets created.
+ innerClassType.setLanguageSpecificName(newTypeName.getLocalPart().toString());
+
+ // also have to set the QName becuase this is used in generating the header info.
+ innerClassType.setName(newTypeName);
+
+ // The typemap we get back is a copy of the actual typemap so we have to set the new value explicitly
+ // firstly remove the old version
+ wsContext.getTypemap().removeType(oldName);
+ wsContext.getTypemap().addType(newTypeName, innerClassType);
+
+ Iterator AllTypes = symbolTable.getTypeIndex().values().iterator();
+ }
+ }
}
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java?rev=391340&r1=391339&r2=391340&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java Tue Apr 4 08:35:58 2006
@@ -56,57 +56,69 @@
try
{
type = (Type) types.next();
- if (type.isArray())
+ if (type.isArray())
+ {
+ if (WSDL2Ws.verbose)
{
- if (WSDL2Ws.verbose)
- {
- System.out.println("Array writer called ......");
- }
- QName qname = type.getName();
- if (CUtils.isSimpleType(qname)
- && !CUtils.isDefinedSimpleType(qname))
- {
- throw new WrapperFault(
- "No need to create an Array for simple type "
- + qname
- + "\n"
- + "It seems that some thing wrong with symbolTable population - Susantha");
- }
- ArrayParamHeaderWriter writer =
- (new ArrayParamHeaderWriter(wscontext, type));
- if (!writer.isSimpleTypeArray())
- {
- writer.writeSource();
- (new ArrayParamWriter(wscontext, type)).writeSource();
- }
+ System.out.println("Array writer called ......");
+ }
+ QName qname = type.getName();
+
+ String elementType = type.getElementType();
+ if (elementType != null)
+ {
+ elementType = elementType.replace('>', '_');
+ QName elementQname = new QName(qname.getNamespaceURI(), elementType);
+
+ Type currentType = wscontext.getTypemap().getType(elementQname);
+ if (currentType != null)
+ if ( currentType.isSimpleType())
+ continue;
+ }
+
+ if (CUtils.isSimpleType(qname)
+ && !CUtils.isDefinedSimpleType(qname))
+ {
+ throw new WrapperFault(
+ "No need to create an Array for simple type "
+ + qname
+ + "\n"
+ + "It seems that some thing wrong with symbolTable population - Susantha");
+ }
+ ArrayParamHeaderWriter writer =
+ (new ArrayParamHeaderWriter(wscontext, type));
+ if (!writer.isSimpleTypeArray())
+ {
+ writer.writeSource();
+ (new ArrayParamWriter(wscontext, type)).writeSource();
+ }
+ }
+ else
+ {
+ /* TODO check whether this type is referenced or not. Synthesize only if reference
+ * But of cause that depends on the command line option too */
+ if (type.getLanguageSpecificName().startsWith(">"))
+ {
+ /* TODO do some processing to this type before synthesizing to remove ">" charactors.
+ * And then it should also be synthesized if command line option says to */
+ if(WSDL2Ws.verbose)
+ System.out.println(
+ "ignoring anonymous type " + type.getLanguageSpecificName() + "\n");
}
else
{
- /* TODO check whether this type is referenced or not. Synthesize only if reference
- * But of cause that depends on the command line option too */
- if (type.getLanguageSpecificName().startsWith(">"))
+ if (WSDL2Ws.verbose)
{
- /* TODO do some processing to this type before synthesizing to remove ">" charactors.
- * And then it should also be synthesized if command line option says to */
System.out.println(
- "ignoring anonymous type "
- + type.getLanguageSpecificName()
- + "\n");
- }
- else
- {
- if (WSDL2Ws.verbose)
- {
- System.out.println(
- "struct writer called ......");
- }
- (new BeanParamWriter(wscontext, type))
- .writeSource();
- (new ParmHeaderFileWriter(wscontext, type))
- .writeSource();
+ "struct writer called ......");
}
+ (new BeanParamWriter(wscontext, type))
+ .writeSource();
+ (new ParmHeaderFileWriter(wscontext, type))
+ .writeSource();
}
}
+ }
catch (Exception e)
{
System.out.println(