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 2006/07/18 22:06:15 UTC

svn commit: r423228 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws: ./ c/ c/literal/ cpp/ cpp/literal/ info/

Author: nadiramra
Date: Tue Jul 18 13:06:13 2006
New Revision: 423228

URL: http://svn.apache.org/viewvc?rev=423228&view=rev
Log:
AXISCPP-985 - Add methods to determine anonymous types and whether Type should be externalized.

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ParmHeaderFileWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.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/ArrayParamHeaderWriter.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/ServiceHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java?rev=423228&r1=423227&r2=423228&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 Jul 18 13:06:13 2006
@@ -117,8 +117,12 @@
             String wsdlfile = cmdLineArgs.getArgument(0);
             wsdlParser.run(wsdlfile);
 
-            //get the target namespace
+            //get the symbol table
             symbolTable = wsdlParser.getSymbolTable();
+            if (WSDL2Ws.verbose)
+                symbolTable.dump(System.out);
+            
+            //get the target namespace
             targetNameSpaceOfWSDL = symbolTable.getDefinition().getTargetNamespace();
         }
         catch (Exception e)
@@ -353,7 +357,6 @@
             { 
                 // for non-wrapped style wsdl's
                 String elementName = (String) element.getQName().getLocalPart();
-                symbolTable.dump(System.out);
                 pinfo = new ParameterInfo(type, elementName);
                 pinfo.setElementName(type.getName());
                 if (type.getName().equals(CUtils.anyTypeQname))
@@ -600,7 +603,14 @@
             type = (TypeEntry) it.next();
             Node node = type.getNode();
             if (node != null)
+            {
+                if (WSDL2Ws.verbose)
+                {
+                    System.out.println( "==>getTypeInfo: Processing type...." + type.getQName());                    
+                }
+                                
                 createTypeInfo(type, targetLanguage);
+            }
         }
         return typeMap;
     }
@@ -669,9 +679,8 @@
             {
                 System.out.println(it.next());
             }
-            
-            symbolTable.dump(System.out);
         }
+        
         wsg.generate();
     }
 
@@ -714,7 +723,6 @@
                         + "]unexpected condition occurred "
                         + ".. please inform the axis-dev@apache.org mailing list ASAP");
             }
-            type.getRefType();
         }
         return createTypeInfo(type, targetLanguage);
     }
@@ -728,10 +736,15 @@
 
     public Type createTypeInfo(TypeEntry type, String targetLanguage) throws WrapperFault
     {
+        Type typedata;
+        
         // Do not add types which are not used in the wsdl
         if (!type.isReferenced())
             return null;
         
+        if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+            System.out.println("Attempting to create type: " + type.getQName());
+        
         if (type instanceof CollectionElement)
         { //an array
         }
@@ -739,16 +752,16 @@
         { 
             // if element references another type, process the referenced type
             if (type.getRefType() != null)
+            {
+                if (WSDL2Ws.verbose)
+                    System.out.println("Attempting to creat new type from element-ref: " + type.getRefType().getQName());
+                
                 return createTypeInfo(type.getRefType(), targetLanguage);
+            }
 
             return null;
         }
         
-        // type is a inbuilt type or a already created type?
-        Type typedata = typeMap.getType(type.getQName());
-        if (typedata != null)
-            return typedata;
-
         if (-1 != type.getQName().getLocalPart().indexOf('['))
         { 
             /* it seems that this is an array */
@@ -763,7 +776,20 @@
                 return null;
             
             QName newqn = new QName(type.getQName().getNamespaceURI(), qn.getLocalPart() + "_Array");
+            // type is a inbuilt type or a already created type?
+            typedata = typeMap.getType(newqn);
+            if (typedata != null)
+            {
+                if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+                    System.out.println("Type not created, already exists: " + type.getQName());
+                
+                return typedata;
+            }            
+            
             typedata = new Type(newqn, newqn.getLocalPart(), true, targetLanguage);
+ 
+            if (WSDL2Ws.verbose)
+                System.out.println("Created new array type from array ref: " + newqn);
             
             if (type.getRefType().getRefType() != null)
                 typedata.setElementType(type.getRefType().getRefType().getQName().getLocalPart());
@@ -774,15 +800,29 @@
         }
         else
         {
+            // type is a inbuilt type or a already created type?
+            typedata = typeMap.getType(type.getQName());
+            if (typedata != null)
+            {
+                if (WSDL2Ws.verbose && !typeMap.isSimpleType(type.getQName()))
+                    System.out.println("Type not created, already exists: " + type.getQName());
+                
+                return typedata;
+            }
+            
             typedata = new Type(type.getQName(),
                                 type.getQName().getLocalPart(),
                                 true,
                                 targetLanguage);
+
+            if (WSDL2Ws.verbose)
+                System.out.println("Created new type: " + type.getQName());
+            
             typeMap.addType(type.getQName(), typedata);
         }
         
         // work out whether this type will be generated or not 
-        typedata.setGenerated(isTypeGenerated(type));
+        typedata.externalize(isTypeGenerated(type, typedata));
 
         Node node = type.getNode();
 
@@ -881,6 +921,9 @@
                     //}
 
                     // Process the attributes
+                    if (WSDL2Ws.verbose)
+                        System.out.println("Processing attributes for type: " + type.getQName());
+
                     Vector attributes = CSchemaUtils.getContainedAttributeTypes(te.getNode(),
                                                                                 symbolTable);
                     if (attributes != null)
@@ -893,21 +936,25 @@
                         }
                     
                     // Process the elements
+                    if (WSDL2Ws.verbose)
+                        System.out.println("Processing elements for type: " + type.getQName());
+                    
                     Vector elements =  CSchemaUtils.getContainedElementDeclarations(te.getNode(),
                                                                                     symbolTable);
                     if (elements != null)
                         for (int j = 0; j < elements.size(); j++)
                         {
+                            Type newType = null;
                             ElementInfo eleinfo = null;
+                            
                             CElementDecl elem = (CElementDecl) elements.get(j);
+                            
                             if (elem.getAnyElement())
                             {
-                                Type anyType =
-                                    new Type(CUtils.anyTypeQname,
-                                             CUtils.anyTypeQname.getLocalPart(),
-                                             true,
-                                             targetLanguage);
-                                eleinfo = new ElementInfo(elem.getName(), anyType);
+                                newType =  new Type(CUtils.anyTypeQname,
+                                                    CUtils.anyTypeQname.getLocalPart(),
+                                                    true,
+                                                    targetLanguage);
                             }
                             else
                             {
@@ -917,31 +964,20 @@
                                     String localpart =
                                         typeName.getLocalPart().substring(
                                             0, typeName.getLocalPart().indexOf('['));
-                                    typeName =
-                                        new QName(typeName.getNamespaceURI(), localpart);
+                                    
+                                    typeName = new QName(typeName.getNamespaceURI(), localpart);
+                                    
                                     if (CUtils.isBasicType(typeName))
-                                    {
-                                        eleinfo =
-                                            new ElementInfo(
-                                                elem.getName(),
-                                                createTypeInfo(typeName, targetLanguage));
-                                    }
+                                        newType = createTypeInfo(typeName, targetLanguage);
                                     else
-                                    {
-                                        eleinfo =
-                                            new ElementInfo(
-                                                elem.getName(),
-                                                createTypeInfo(elem.getType(), targetLanguage));
-                                    }
+                                        newType = createTypeInfo(elem.getType(), targetLanguage);
                                 }
                                 else
-                                {
-                                    eleinfo =
-                                        new ElementInfo(
-                                            elem.getName(),
-                                            createTypeInfo(typeName, targetLanguage));
-                                }
+                                    newType = createTypeInfo(typeName, targetLanguage);
                             }
+                            
+                            eleinfo = new ElementInfo(elem.getName(), newType);
+                            
                             eleinfo.setMinOccurs(elem.getMinOccurs());
                             eleinfo.setMaxOccurs(elem.getMaxOccurs());
                             eleinfo.setNillable( elem.isNillable());
@@ -1060,20 +1096,21 @@
                             if(WSDL2Ws.verbose)
                                 System.out.println( "EXPOSE1: Checking whether to expose ref-types for "+defType.getQName().getLocalPart());
 
-                            // If ref type is not currently exposed because it's an "inner" type (marked by ">")
-                            // then expose as a class by simply changing the name !                            
+                            // If ref type is anonymous and thus currently not exposed because 
+                            // it's an "inner" type, expose it and any nested types (latter is TODO).                            
                             
                             if(referencedType.getQName().getLocalPart().startsWith(">") 
                                     && referencedType.getQName().getLocalPart().lastIndexOf(">") == 0)
                             {
                                 if(WSDL2Ws.verbose)
-                                    System.out.println( "EXPOSE1: Exposing ref-type "+defType.getRefType().getQName());
+                                    System.out.println( "EXPOSE1: Exposing ref-type "+referencedType.getQName());
 
-                                Type innerClassType = wsContext.getTypemap().getType(defType.getRefType().getQName());
+                                Type innerClassType = wsContext.getTypemap().getType(referencedType.getQName());
                                 innerClassType.setLanguageSpecificName(new QName(defType.getQName().getLocalPart()).toString());
                                 
                                 // also have to set the QName becuase this is used in generating the header info.
                                 innerClassType.setName(new QName(innerClassType.getName().getNamespaceURI(), innerClassType.getLanguageSpecificName()));
+                                innerClassType.externalize(true);
                             }
                         }
                     }
@@ -1126,7 +1163,7 @@
                               if(parameterType.getName().equals(type.getQName()))
                               {
                                   if(WSDL2Ws.verbose)
-                                      System.out.println( "EXPOSE2: Matches input parm, exposing anon type "+type.getQName().getLocalPart());
+                                      System.out.println( "EXPOSE2: Matches input parm, exposing anon type "+parameterType.getName());
                          
                                   QName oldName = parameterType.getName();
                                   QName newTypeName = 
@@ -1140,6 +1177,7 @@
                                   
                                   // also have to set the QName becuase this is used in generating the header info.
                                   innerClassType.setName(newTypeName);
+                                  innerClassType.externalize(true);
                                   
                                   // 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
@@ -1158,7 +1196,7 @@
                               if(parameterType.getName().equals(type.getQName()))
                               {
                                   if(WSDL2Ws.verbose)
-                                      System.out.println( "EXPOSE2: Matches output parm, exposing anon type "+type.getQName().getLocalPart());
+                                      System.out.println( "EXPOSE2: Matches output parm, exposing anon type "+parameterType.getName());
                               
                                   QName oldName = parameterType.getName();
                                   QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), parameterType.getName().getLocalPart().substring(1));
@@ -1170,6 +1208,7 @@
                                   
                                   // also have to set the QName becuase this is used in generating the header info.
                                   innerClassType.setName(newTypeName);
+                                  innerClassType.externalize(true);
                                   
                                   // remove the old version and add new one
                                   wsContext.getTypemap().removeType(oldName);
@@ -1223,11 +1262,11 @@
                               QName oldName = nestedType.getQName();
                                   
                               if(WSDL2Ws.verbose)
-                                  System.out.println( "EXPOSE3: Exposing nestedType "+oldName);
+                                  System.out.println( "EXPOSE3: Exposing nestedType "+nestedType.getQName());
                                   
                               QName newTypeName =new QName(oldName.getNamespaceURI(), CUtils.sanitiseClassName(oldName.getLocalPart().toString()));
                               
-                              Type innerClassType =  wsContext.getTypemap().getType(oldName);
+                              Type innerClassType =  wsContext.getTypemap().getType(nestedType.getQName());
                               if(innerClassType!=null)
                               {
                                   //     First thing to do is to expose the type so it gets created.
@@ -1235,6 +1274,7 @@
                               
                                   //     also have to set the QName because this is used in generating the header info.
                                   innerClassType.setName(newTypeName);
+                                  innerClassType.externalize(true);
 
                                   // remove the old version and add new one
                                   wsContext.getTypemap().removeType(oldName);
@@ -1319,15 +1359,13 @@
     /**
      * Work out the various conditions that dictate whether this type will be generated into a new
      * file or not.
-     * This method is only very partically implemented and will usually default to true. This is becuase we have 
-     * this kind of logic already dispersed around the code (it usually just looks for a ">" in the name).
-     * But it's much better to encapsulate here.
+     * This method is only very partially implemented. 
      *   
      * @param type
      * @return true if the type will not be generated. False otherwise
      * 
      */
-    private boolean isTypeGenerated(TypeEntry type)
+    private boolean isTypeGenerated(TypeEntry type, Type typedata)
     {
         // If the referenced type is actually a type that will not get generated because it's
         //     a base type array then tell other people of this case. Do this to two levels of indirection
@@ -1336,6 +1374,9 @@
             if(type.getRefType().getRefType()!=null && type.getRefType().getRefType().isBaseType())
                 return false;
             
-        return true;
+        if (typedata.isAnonymous())
+            return false;
+        else
+            return true;
     }
 }

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java Tue Jul 18 13:06:13 2006
@@ -64,21 +64,25 @@
                 type = (Type) types.next();
                 if (type.isArray())
                 {
-                    if (WSDL2Ws.verbose)
-                        System.out.println("Array writer called ......");
-                    
                     QName qname = type.getName();
                     
                     String elementType = type.getElementType();
                     if (elementType != null)
                     {
+                        if (WSDL2Ws.verbose)
+                            System.out.println("Array element type: " + elementType);
                         elementType = elementType.replace('>', '_');
                         QName elementQname = new QName(qname.getNamespaceURI(), elementType);
                         
                         Type currentType = wscontext.getTypemap().getType(elementQname);
                         if (currentType != null)
                             if ( currentType.isSimpleType())
+                            {
+                                if (WSDL2Ws.verbose)
+                                    System.out.println("Array writer not called - element type is simple");
+
                                 continue;
+                            }
                     }
                     
                     if (CUtils.isSimpleType(qname) && !CUtils.isDefinedSimpleType(qname))
@@ -91,16 +95,15 @@
                     ArrayParamHeaderWriter writer = (new ArrayParamHeaderWriter(wscontext, type));
                     if (!writer.isSimpleTypeArray())
                     {
+                        if (WSDL2Ws.verbose)
+                            System.out.println("Array writer called ......");
+                        
                         writer.writeSource();
                         (new ArrayParamWriter(wscontext, type)).writeSource();
                     }
                 }
-                /* TODO check whether this type is referenced or not. Synthesize only if  reference
-                 * But of course that depends on the commandline option too  */
-                else if (type.getLanguageSpecificName().startsWith(">"))
+                else if (type.isAnonymous() && !type.isExternalized())
                 {
-                    /* TODO do some processing to this type before synthesizing to remove ">" charactors.
-                     * And then it should also be synthesized if commandline option says to */
                     if(WSDL2Ws.verbose)
                     {                          
                         System.out.println(

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -232,7 +232,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
 
                 typeName = WrapperUtils.getLanguageTypeName4Type(atype);

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=423228&r1=423227&r2=423228&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 Jul 18 13:06:13 2006
@@ -385,7 +385,8 @@
                     continue;
                 
                 typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">") || !typeName.equals(classname))
+                if ((type.isAnonymous() && !type.isExternalized())
+                        || !typeName.equals(classname))
                     continue;
                 
                 typeSet.add(typeName);

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -204,7 +204,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
                 if (!atype.isArray())
                     typeSet.insertElementAt(atype.getLanguageSpecificName(), 0);

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java Tue Jul 18 13:06:13 2006
@@ -56,7 +56,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
                 typeSet.add(atype.getLanguageSpecificName());
             }

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -64,7 +64,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
                 writer.write(
                         "#include \"" + atype.getLanguageSpecificName() + CUtils.C_HEADER_SUFFIX + "\"\n");
@@ -538,11 +538,10 @@
                 if (type.isArray())
                     continue;
                 
-                typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">"))
+                if (type.isAnonymous() && !type.isExternalized())
                     continue;
                 
-                typeSet.add(typeName);
+                typeSet.add(type.getLanguageSpecificName());
             }
             
             Iterator itr = typeSet.iterator();

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java?rev=423228&r1=423227&r2=423228&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 Jul 18 13:06:13 2006
@@ -58,23 +58,27 @@
                 type = (Type) types.next();
                 if (type.isArray())
                 {
-                    if (WSDL2Ws.verbose)
-                        System.out.println("Array writer called ......");
-
                     QName qname = type.getName();
                     
                     String elementType = type.getElementType();
                     if (elementType != null)
                     {
+                        if (WSDL2Ws.verbose)
+                            System.out.println("Array element type: " + elementType);
                         elementType = elementType.replace('>', '_');
                         QName elementQname = new QName(qname.getNamespaceURI(), elementType);
                         
                         Type currentType = wscontext.getTypemap().getType(elementQname);
                         if (currentType != null)
                             if ( currentType.isSimpleType())
+                            {
+                                if (WSDL2Ws.verbose)
+                                    System.out.println("Array writer not called - element type is simple");
+
                                 continue;
+                            }
                     }
-                    
+                                            
                     if (CUtils.isSimpleType(qname) && !CUtils.isDefinedSimpleType(qname))
                     {
                         throw new WrapperFault(
@@ -85,29 +89,25 @@
                     ArrayParamHeaderWriter writer = (new ArrayParamHeaderWriter(wscontext, type));
                     if (!writer.isSimpleTypeArray())
                     {
+                        if (WSDL2Ws.verbose)
+                            System.out.println("Array writer called for......" + type.getName());
+                        
                         writer.writeSource();
                         (new ArrayParamWriter(wscontext, type)).writeSource();
                     }
                 }
+                else if (type.isAnonymous() && !type.isExternalized())
+                {
+                    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(">"))
-                    {
-                        /* 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
-                    {
-                        if (WSDL2Ws.verbose)
-                            System.out.println("struct writer called ......");
+                    if (WSDL2Ws.verbose)
+                        System.out.println("struct writer called for......" + type.getName());
 
-                        (new BeanParamWriter(wscontext, type)).writeSource();
-                        (new ParmHeaderFileWriter(wscontext, type)).writeSource();
-                    }
+                    (new BeanParamWriter(wscontext, type)).writeSource();
+                    (new ParmHeaderFileWriter(wscontext, type)).writeSource();
                 }
             }
             catch (Exception e)

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -125,27 +125,6 @@
     {
         try
         {
-            Iterator    itForTypes = wscontext.getTypemap().getTypes().iterator();
-            boolean        nillable = false;
-            
-            while( itForTypes.hasNext())
-            {
-                Type aType = (Type) itForTypes.next();
-                
-                if( aType.getLanguageSpecificName().indexOf( ">") > -1)
-                {
-                    Iterator    itForElemName = aType.getElementnames();
-                    
-                    while( itForElemName.hasNext() && !nillable)
-                    {
-                        String key = (String) itForElemName.next();
-                        
-                        if( aType.getElementForElementName( key).getNillable())
-                            nillable = true;
-                    }
-                }
-            }
-            
             writer.write("class STORAGE_CLASS_INFO " + classname + " : public Axis_Array\n");
             writer.write("{\n");
             writer.write("\tpublic:\n");

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -256,7 +256,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
 
                 typeName = WrapperUtils.getLanguageTypeName4Type(atype);

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java Tue Jul 18 13:06:13 2006
@@ -870,10 +870,10 @@
                 type = (Type) types.next();
                 if (type.isArray())
                     continue;
-                typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">"))
+
+                if (type.isAnonymous() && !type.isExternalized())
                     continue;
-                typeSet.add(typeName);
+                typeSet.add(type.getLanguageSpecificName());
             }
             Iterator itr = typeSet.iterator();
             while (itr.hasNext())

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -291,17 +291,14 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
-                {
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
-                }
+
                 typeName = WrapperUtils.getLanguageTypeName4Type(atype);
                 if (null != typeName)
-                {
                     typeSet.add(typeName);
-                }
-
             }
+            
             Iterator itr = typeSet.iterator();
             while (itr.hasNext())
             {

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -881,12 +881,10 @@
             while (types.hasNext())
             {
                 type = (Type) types.next();
-                if (type.isArray())
+                if (type.isArray() 
+                        || (type.isAnonymous() && !type.isExternalized()))
                     continue;
-                typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">"))
-                    continue;
-                typeSet.add(typeName);
+                typeSet.add(type.getLanguageSpecificName());
             }
             Iterator itr = typeSet.iterator();
             while (itr.hasNext())

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -190,7 +190,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if(atype.isGenerated())
+                if(atype.isExternalized())
                 {
                     if (atype.isArray())
                         if (atype.getElementType().equals("string"))
@@ -199,9 +199,6 @@
                     if (atype.getBaseType() != null)
                         if (atype.getBaseType().getLocalPart().equals("string"))
                             removeSet.add(atype.getLanguageSpecificName() + "_Array");
-                    
-                    if (atype.getLanguageSpecificName().startsWith(">"))
-                        continue;
 
                     typeSet.add(atype.getLanguageSpecificName());
                 }

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java Tue Jul 18 13:06:13 2006
@@ -1146,11 +1146,10 @@
                 if (type.isArray())
                     continue;
 
-                typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">"))
+                if (type.isAnonymous() && !type.isExternalized())
                     continue;
 
-                typeSet.add(typeName);
+                typeSet.add(type.getLanguageSpecificName());
             }
             
             Iterator itr = typeSet.iterator();

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java Tue Jul 18 13:06:13 2006
@@ -94,7 +94,7 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
-                if (atype.getLanguageSpecificName().startsWith(">"))
+                if (atype.isAnonymous() && !atype.isExternalized())
                     continue;
 
                 typeSet.add(atype.getLanguageSpecificName());

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java Tue Jul 18 13:06:13 2006
@@ -681,11 +681,10 @@
                 if (type.isArray())
                     continue;
 
-                typeName = type.getLanguageSpecificName();
-                if (typeName.startsWith(">"))
+                if (type.isAnonymous() && !type.isExternalized())
                     continue;
 
-                typeSet.add(typeName);
+                typeSet.add(type.getLanguageSpecificName());
             }
             
             Iterator itr = typeSet.iterator();

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java?rev=423228&r1=423227&r2=423228&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java Tue Jul 18 13:06:13 2006
@@ -45,14 +45,17 @@
      * with simpleContent
      */
     private ElementInfo extensionBaseType = null;
+    
     /**
      * 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.
@@ -63,28 +66,34 @@
     
     /* This can be null */
     private String languageSpecificName;
+    
     /* element names and the type of the elements (QName,ElementInfo)*/
     private Hashtable elements;
+    
     /* This vector was added to preserve the order of types parsed from the wsdl. 
      * This may be a hack. Should be improved if necessary
      */
     private Vector vElements;
+    
     /* attribute names and the type of the attributes (QName,QName)*/
     private Hashtable attributes;
+    
     /* This vector was added to preserve the order of types parsed from the wsdl. 
      * This may be a hack. Should be improved if necessary
      */
     private Vector vAttributes;
+    
     /* has the attributes are specified with order <sequence> in the schema */
     private boolean hasOrder;
+    
     /*if order presents the order is set in the vector */
     private Vector attribOrder;
+    
     /* weather the type is Array */
     private boolean isArray;
 
-    private boolean isreferenced = false;
-
     private String language;
+    
     //Samisa: element type
     private String elementType;
     
@@ -94,33 +103,11 @@
     /* Is this type an attachment under the http://xml.apache.org/xml-soap namespace? */
     private boolean isAttachment = false;
 
-    /* Should this type be generated or not */
-    /* this value is currently only used in limited places. usually we use the ">" symbol */
-    private boolean generated;
+    /* Should this type be generated or not - by default, set to true except for anonymous types */
+    private boolean externalize = true;
     
     /* Is anonymous type? qname.localname is checked, and if starts with '>', then true */
     private boolean isAnonymous = false;
-    
-    /* Has type been exposed - only valid for anonymous types */
-    private boolean anonymousTypeExposed = false;
-    
-    public boolean isAnonymous()
-    {
-        return isAnonymous;
-    }
-    
-    public void exposeAnonymousType()
-    {
-        // Exposing anonymous type means removing starting '>' characters.
-        if (isAnonymous && !anonymousTypeExposed)
-        {
-            languageSpecificName = CUtils.getUniqueName(languageSpecificName);
-            
-            name = new QName(name.getNamespaceURI(), languageSpecificName);
-            anonymousTypeExposed = true;
-        }
-    }
-
 
     public Type(QName name, String languageSpecificName, boolean hasOrder, String language)
     {
@@ -148,6 +135,14 @@
                 this.languageSpecificName = TypeMap.getBasicTypeClass4qname(name);
         }
 
+        // Indicate whether type is anonymous. Anonymous type start with '>' and are not
+        // externalized by default.
+        if (this.name.getLocalPart().charAt(0) == '>')
+        {
+            isAnonymous = true;
+            externalize = false;
+        }
+
         //if it is not a simple type try name using usual QName -> language specific name mapping
         if (this.languageSpecificName == null)
             this.languageSpecificName = qname2LSN();
@@ -156,27 +151,8 @@
             //remove any funny Charactors
             this.languageSpecificName = this.languageSpecificName.replaceAll("/", "_");
             this.languageSpecificName = this.languageSpecificName.replaceAll(":", "_");
-            
-            // This arrived in case of inner type declaration. And for compilation
-            // we replace all '>' by '_' (not the first one). Quick and durty fix.
-            if (this.languageSpecificName.length() > 1)
-            {
-                if (this.languageSpecificName.charAt(0) == '>')
-                {
-                    this.languageSpecificName =
-                        ">" + this.languageSpecificName.substring(1).replaceAll(">","_");
-                }
-                else
-                {
-                    this.languageSpecificName =
-                        this.languageSpecificName.replaceAll(">", "_");
-                }
-            }
+            this.languageSpecificName = this.languageSpecificName.replaceAll(">", "_");
         }     
-        
-        // Indicate whether type is anonymous. Anonymous type start with '>'.
-        if (this.languageSpecificName.charAt(0) == '>')
-            isAnonymous = true;
                             
         this.attribOrder = new Vector();
 
@@ -190,9 +166,6 @@
         {
              isAttachment = true;
         }
-        
-        // generated is always true by default so as not to break any other logic prior to this value being put in
-        generated=true;
     }
 
     /**
@@ -204,24 +177,6 @@
     }
 
     /**
-     * @return String 
-     */
-    public String getLocalPartOfName()
-    {
-        String attribName = name.getLocalPart();
-        if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
-        {
-            attribName =
-                attribName.substring(
-                    attribName.lastIndexOf(SymbolTable.ANON_TOKEN) + 1,
-                    attribName.length());
-        }
-        attribName = TypeMap.resolveWSDL2LanguageNameClashes(attribName, this.language);
-
-        return attribName;
-    }
-
-    /**
      * Sets the name.
      * @param name The name to set
      */
@@ -241,23 +196,6 @@
      */
     public void setTypeForAttributeName(String attribName, Type type)
     {
-        //Samisa:    
-        // Check to see if this is an anonymous type,
-        // if it is, replace Axis' ANON_TOKEN with
-        // an underscore to make sure we don't run
-        // into name collisions with similarly named
-        // non-anonymous types
-        // StringBuffer sb = new StringBuffer(attribName);
-        // int aidx = -1;
-
-        // while ((aidx = sb.toString().indexOf(SymbolTable.ANON_TOKEN)) > -1) {
-        // sb.replace(aidx, aidx + SymbolTable.ANON_TOKEN.length(), "_");
-        // }
-
-        // attribName = sb.toString();
-        // Nithya:
-        // To resolve fault soap message issue
-
         if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
         {
             attribName =
@@ -295,23 +233,6 @@
             TypeMap.resolveWSDL2LanguageNameClashes(
                 element.getName().getLocalPart(),this.language);
 
-        //Samisa:    
-        // Check to see if this is an anonymous type,
-        // if it is, replace Axis' ANON_TOKEN with
-        // an underscore to make sure we don't run
-        // into name collisions with similarly named
-        // non-anonymous types
-        //StringBuffer sb = new StringBuffer(attribName);
-        //int aidx = -1;
-
-        //while ((aidx = sb.toString().indexOf(SymbolTable.ANON_TOKEN)) > -1) {
-        //    sb.replace(aidx, aidx + SymbolTable.ANON_TOKEN.length(), "_");
-        // }
-
-        //attribName = sb.toString();
-        //Nithya:
-        //to resolve fault soap message
-
         if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1)
         {
             attribName =
@@ -475,6 +396,7 @@
         else
         {
             str = str + "isAnonymous =" + isAnonymous + "\n";
+            str = str + "externalize =" + externalize + "\n";
             str = str + "isArray =" + isArray + "\n";
             str = str + "Elements[\n";
             Iterator c = elements.values().iterator();
@@ -504,24 +426,6 @@
     /**
      * @return boolean
      */
-    public boolean isIsreferenced()
-    {
-        return isreferenced;
-    }
-
-    /**
-     * Sets the isreferenced.
-     * @param isreferenced The isreferenced to set
-     */
-    public void setIsreferenced(boolean isreferenced)
-    {
-        this.isreferenced = isreferenced;
-        /* TODO also make the inner type of this be referenced*/
-
-    }
-    /**
-     * @return boolean
-     */
     public boolean isSimpleType()
     {
         return isSimpleType;
@@ -594,21 +498,45 @@
     {
         return isAttachment;
     }
-
+    
     /**
-     * @param b
+     * Whether the type represents an anonymous type.
      */
-    public void setGenerated(boolean b)
+    public boolean isAnonymous()
     {
-       generated=b;
+        return isAnonymous;
     }
     
     /**
-     * Whether this type will be generated or not. NOT This is not always valid. Be sure that this is being set properly for your instance
-     * @return
+     * Whether this type will be generated or not. 
      */
-    public boolean isGenerated()
+    public boolean isExternalized()
     {
-        return generated; 
+        return externalize; 
     }
+    
+    /**
+     * Ensure type is generated (i.e. externalized).
+     */
+    public void externalize(boolean flag)
+    {   
+        // if false, simply set the flag and return. 
+        if (!flag)
+        {
+            externalize = false; 
+            return;
+        }
+        
+        // Exposing anonymous type also means cleaning up the name. A TODO for now.
+        if (isAnonymous && !externalize)
+        {
+            // Remove leading '_' from language specific name
+//            int i=0;
+//            while (languageSpecificName.charAt(i) == '_') ++i;
+//            languageSpecificName = languageSpecificName.substring(i);
+        }
+        
+        externalize = true;
+    }
+    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org