You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2010/01/26 02:28:56 UTC

svn commit: r903039 - /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java

Author: nadiramra
Date: Tue Jan 26 01:28:56 2010
New Revision: 903039

URL: http://svn.apache.org/viewvc?rev=903039&view=rev
Log:
Add code to get around cyclic include problem

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java?rev=903039&r1=903038&r2=903039&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java Tue Jan 26 01:28:56 2010
@@ -443,6 +443,26 @@
                     + type.getName().getNamespaceURI() + "\";\n");
             c_writer.write("static const char Axis_TypeName_" + c_classname
                     + "[] = \"" + type.getName().getLocalPart() + "\";\n\n");
+            
+            // Define struct to avoid compilation issues (cycle in includes).
+            // This is a must for complex wsdl files.
+            typeSet = new HashSet();
+            for (int i = 0; i < attribs.length; i++)
+            {
+                if (!attribs[i].isArray() && 
+                        !(attribs[i].isSimpleType() || attribs[i].getType().isSimpleType())
+                        && !attribs[i].isAnyElement())
+                {
+                    typeSet.add(attribs[i].getTypeName());
+                } 
+            }
+            
+            itr = typeSet.iterator();
+            while (itr.hasNext())
+            {
+                String t = itr.next().toString();
+                c_writer.write("typedef struct " + t + "Tag " + t + ";\n");
+            }
         }
         catch (IOException e)
         {