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 na...@apache.org on 2008/07/12 01:30:23 UTC

svn commit: r676101 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl: symbolTable/CSchemaUtils.java wsdl2ws/WSDL2Ws.java

Author: nadiramra
Date: Fri Jul 11 16:30:23 2008
New Revision: 676101

URL: http://svn.apache.org/viewvc?rev=676101&view=rev
Log:
AXISCPP-894 - Elements in the generated request message is not namespace qualified

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/symbolTable/CSchemaUtils.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/symbolTable/CSchemaUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/symbolTable/CSchemaUtils.java?rev=676101&r1=676100&r2=676101&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/symbolTable/CSchemaUtils.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/symbolTable/CSchemaUtils.java Fri Jul 11 16:30:23 2008
@@ -2069,4 +2069,46 @@
         }       
         return null;
     }
+    
+    /*
+     * check whether node should be namespace qualified or not.
+     */
+    public static boolean shouldWeNamespaceQualifyNode(Node elementNode, boolean defaultAnswer)
+    {
+        String form = Utils.getAttribute(elementNode, "form");
+        if (form != null)
+        {
+            if (form.equals("qualified"))
+                return true;
+            else 
+                return false;
+        }
+        else
+            return defaultAnswer;
+    }
+    
+    public static boolean isElementFormDefaultQualified(Node elementNode)
+    {
+        if (elementNode != null)
+        {
+            String def = Utils.getScopedAttribute(elementNode, "elementFormDefault");
+            if ((def != null) && def.equals("qualified"))
+                return true;
+        }
+        
+        return false;
+    }
+    
+    public static boolean isAttributeFormDefaultQualified(Node attributeNode)
+    {
+        if (attributeNode != null)
+        {
+            String def = Utils.getScopedAttribute(attributeNode, "attributeFormDefault");
+            if ((def != null) && def.equals("qualified"))
+                return true;
+        }
+        
+        return false;
+    }
+    
 }

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=676101&r1=676100&r2=676101&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 Fri Jul 11 16:30:23 2008
@@ -965,6 +965,7 @@
                     if (c_verbose)
                         System.out.println("Processing attributes for type: " + type.getQName());
 
+                    // TODO Need to handle whether attributes are qualified?
                     Vector attributes = CSchemaUtils.getContainedAttributeTypes(te.getNode(), c_symbolTable);
                     if (attributes != null)
                     {
@@ -984,10 +985,24 @@
                     
                     Vector elements =  CSchemaUtils.getContainedElementDeclarations(te.getNode(), c_symbolTable);
                     if (elements != null)
+                    {
+                        // The following will get elementFormDefault for the schema the element is in.
+                        boolean nsQualifyElementDefault = CSchemaUtils.isElementFormDefaultQualified(te.getNode());
+                        
+                        // Now process the elements.
                         for (int j = 0; j < elements.size(); j++)
                         {   
                             CElementDecl elem = (CElementDecl) elements.get(j);
                             
+                            // Set whether to namespace qualify or not. We only process if not set.
+                            if (!elem.getNsQualified())
+                            {
+                                boolean nsQualifyElement = 
+                                    CSchemaUtils.shouldWeNamespaceQualifyNode(elem.getTypeEntry().getNode(), 
+                                                                              nsQualifyElementDefault);
+                                elem.setNsQualified(nsQualifyElement);
+                            }
+                            
                             if (elem.getAnyElement())
                             {
                                 newSecondaryType =  new Type(CUtils.anyTypeQname,
@@ -1017,7 +1032,8 @@
                                                        
                             typedata.setTypeNameForElementName(elem);
                         }
-                }
+                    }
+                } // for-loop
             }
         }
         return typedata;