You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gd...@apache.org on 2005/04/26 15:00:47 UTC

svn commit: r164783 - /geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java

Author: gdamour
Date: Tue Apr 26 06:00:44 2005
New Revision: 164783

URL: http://svn.apache.org/viewcvs?rev=164783&view=rev
Log:
Support mapping to attributes.

Modified:
    geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java

Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java?rev=164783&r1=164782&r2=164783&view=diff
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java (original)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightTypeInfoBuilder.java Tue Apr 26 06:00:44 2005
@@ -43,6 +43,7 @@
 import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingType;
 import org.apache.geronimo.xbeans.j2ee.JavaXmlTypeMappingType;
 import org.apache.geronimo.xbeans.j2ee.VariableMappingType;
+import org.apache.xmlbeans.SchemaLocalAttribute;
 import org.apache.xmlbeans.SchemaParticle;
 import org.apache.xmlbeans.SchemaType;
 
@@ -150,7 +151,7 @@
         }
         typeInfo.setQName(axisKey);
 
-        Map nameToType = new HashMap();
+        Map paramNameToType = new HashMap();
         if (null  == schemaType.getContentModel()) {
             ;
         } else if (SchemaParticle.SEQUENCE == schemaType.getContentModel().getParticleType()
@@ -158,17 +159,27 @@
             SchemaParticle[] properties = schemaType.getContentModel().getParticleChildren();
             for (int i = 0; i < properties.length; i++) {
                 SchemaParticle parameter = properties[i];
-                nameToType.put(parameter.getName(), parameter);
+                paramNameToType.put(parameter.getName(), parameter);
             }
         } else if (SchemaParticle.ELEMENT == schemaType.getContentModel().getParticleType()) {
             SchemaParticle parameter = schemaType.getContentModel();
-            nameToType.put(parameter.getName(), parameter);
+            paramNameToType.put(parameter.getName(), parameter);
         } else {
             throw new DeploymentException("Only element, sequence, and all particle types are supported." +
                     " SchemaType name =" + schemaType.getName());
         }
 
+        Map attNameToType = new HashMap();
+        if (null != schemaType.getAttributeModel()) {
+            SchemaLocalAttribute[] attributes = schemaType.getAttributeModel().getAttributes();
+            for (int i = 0; i < attributes.length; i++) {
+                SchemaLocalAttribute attribute = attributes[i];
+                attNameToType.put(attribute.getName(), attribute);
+            }
+        }
+        
         VariableMappingType[] variableMappings = javaXmlTypeMapping.getVariableMappingArray();
+        
         FieldDesc[] fields = new FieldDesc[variableMappings.length];
         typeInfo.setFields(fields);
 
@@ -196,9 +207,17 @@
                 }
                 QName xmlName = new QName("", variableMapping.getXmlAttributeName().getStringValue().trim());
                 attributeDesc.setXmlName(xmlName);
-                // TODO retrieve the type of the attribute.
-                QName xmlType = schemaType.getName();
-                attributeDesc.setXmlType(xmlType);
+                
+                SchemaLocalAttribute attribute = (SchemaLocalAttribute) attNameToType.get(xmlName);
+                if (null == attribute) {
+                    xmlName = new QName(ns, variableMapping.getXmlAttributeName().getStringValue().trim());
+                    attribute = (SchemaLocalAttribute) attNameToType.get(xmlName);
+                    if (null == attribute) {
+                        throw new DeploymentException("attribute " + xmlName + " not found in schema " + schemaType.getName());
+                    }
+                }
+                attributeDesc.setXmlType(attribute.getType().getName());
+
                 fields[i] = attributeDesc;
             } else {
                 ElementDesc elementDesc = new ElementDesc();
@@ -214,10 +233,10 @@
                     }
                 }
                 QName xmlName = new QName("", variableMapping.getXmlElementName().getStringValue().trim());
-                SchemaParticle particle = (SchemaParticle) nameToType.get(xmlName);
+                SchemaParticle particle = (SchemaParticle) paramNameToType.get(xmlName);
                 if (null == particle) {
                     xmlName = new QName(ns, variableMapping.getXmlElementName().getStringValue().trim());
-                    particle = (SchemaParticle) nameToType.get(xmlName);
+                    particle = (SchemaParticle) paramNameToType.get(xmlName);
                     if (null == particle) {
                         throw new DeploymentException("element " + xmlName + " not found in schema " + schemaType.getName());
                     }