You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by gd...@apache.org on 2001/05/11 19:38:39 UTC

cvs commit: xml-soap/java/src/org/apache/soap/encoding/soapenc ArraySerializer.java MapSerializer.java ParameterSerializer.java SoapEncUtils.java VectorSerializer.java

gdaniels    01/05/11 10:38:38

  Modified:    java/src/org/apache/soap/encoding/soapenc
                        ArraySerializer.java MapSerializer.java
                        ParameterSerializer.java SoapEncUtils.java
                        VectorSerializer.java
  Log:
  Finish ability to recognize 1999, 2000, and 2001 schema types.  We were
  already mapping all the XSD types correctly, but we had been looking for
  only the CURRENT schema XSI prefix when deserializing.
  
  Now we check for all three namespaces for the "type" attribute, which
  seems to work fine.
  
  Revision  Changes    Path
  1.7       +1 -3      xml-soap/java/src/org/apache/soap/encoding/soapenc/ArraySerializer.java
  
  Index: ArraySerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/ArraySerializer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ArraySerializer.java	2001/03/19 06:20:51	1.6
  +++ ArraySerializer.java	2001/05/11 17:38:08	1.7
  @@ -168,9 +168,7 @@
         String actualEncStyle = declEncStyle != null
                                 ? declEncStyle
                                 : inScopeEncStyle;
  -      QName declItemType = SoapEncUtils.getAttributeValue(tempEl,
  -        Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, "array item",
  -        false);
  +      QName declItemType = SoapEncUtils.getTypeQName(tempEl);
         QName actualItemType = declItemType != null
                                ? declItemType
                                : arrayItemType;
  
  
  
  1.6       +1 -2      xml-soap/java/src/org/apache/soap/encoding/soapenc/MapSerializer.java
  
  Index: MapSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/MapSerializer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MapSerializer.java	2001/03/19 06:20:51	1.5
  +++ MapSerializer.java	2001/05/11 17:38:12	1.6
  @@ -198,8 +198,7 @@
         String actualEncStyle = declEncStyle != null
             ? declEncStyle
             : inScopeEncStyle;
  -      QName declItemType = SoapEncUtils.getAttributeValue(targetEl,
  -          Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, STR_ITEM, false);
  +      QName declItemType = SoapEncUtils.getTypeQName(targetEl);
   
         return xjmr.unmarshall(actualEncStyle, declItemType, targetEl, ctx);
     }
  
  
  
  1.8       +2 -8      xml-soap/java/src/org/apache/soap/encoding/soapenc/ParameterSerializer.java
  
  Index: ParameterSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/ParameterSerializer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ParameterSerializer.java	2001/03/19 06:20:51	1.7
  +++ ParameterSerializer.java	2001/05/11 17:38:15	1.8
  @@ -128,10 +128,7 @@
           }
           
           QName soapType = 
  -                        SoapEncUtils.getAttributeValue(paramEl,
  -                                                       Constants.NS_URI_CURRENT_SCHEMA_XSI,
  -                                                       Constants.ATTR_TYPE,
  -                                                       "parameter", false);
  +                        SoapEncUtils.getTypeQName(paramEl);
           
           if (soapType == null) {
             // no xsi:type attribute found: determine the type as the 
  @@ -155,10 +152,7 @@
       }
       else {
         QName soapType = 
  -        SoapEncUtils.getAttributeValue(paramEl,
  -                                       Constants.NS_URI_CURRENT_SCHEMA_XSI,
  -                                       Constants.ATTR_TYPE,
  -                                       "parameter", false);
  +        SoapEncUtils.getTypeQName(paramEl);
         
         if (soapType == null) {
           // no xsi:type attribute found: determine the type as the 
  
  
  
  1.6       +26 -0     xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java
  
  Index: SoapEncUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SoapEncUtils.java	2001/03/19 06:20:51	1.5
  +++ SoapEncUtils.java	2001/05/11 17:38:19	1.6
  @@ -243,4 +243,30 @@
         return null;
       }
     }
  +
  +  /** Get the value of the xsi:type attribute, for varying values of
  +   * the xsi namespace.
  +   * 
  +   */
  +  public static QName getTypeQName(Element el)
  +    throws IllegalArgumentException
  +  {
  +    // Try 1999
  +    QName typeQName = getAttributeValue(el, Constants.NS_URI_1999_SCHEMA_XSI,
  +                                        Constants.ATTR_TYPE, null, false);
  +    if (typeQName != null)
  +      return typeQName;
  +    
  +    // Try 2000
  +    typeQName = getAttributeValue(el, Constants.NS_URI_2000_SCHEMA_XSI,
  +                                  Constants.ATTR_TYPE, null, false);
  +    if (typeQName != null)
  +      return typeQName;
  +    
  +    // Try 2001
  +    typeQName = getAttributeValue(el, Constants.NS_URI_2001_SCHEMA_XSI,
  +                                  Constants.ATTR_TYPE, null, false);
  +    
  +    return typeQName;
  +  }
   }
  
  
  
  1.6       +1 -3      xml-soap/java/src/org/apache/soap/encoding/soapenc/VectorSerializer.java
  
  Index: VectorSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/VectorSerializer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- VectorSerializer.java	2001/03/19 06:20:51	1.5
  +++ VectorSerializer.java	2001/05/11 17:38:22	1.6
  @@ -179,9 +179,7 @@
   		  String actualEncStyle = declEncStyle != null
   								  ? declEncStyle
   									: inScopeEncStyle;
  -          QName declItemType = SoapEncUtils.getAttributeValue(tempEl,
  -                                                              Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, "Vector item",
  -                                                              false);
  +          QName declItemType = SoapEncUtils.getTypeQName(tempEl);
             QName actualItemType = declItemType;
   
                     Bean itemBean = xjmr.unmarshall(actualEncStyle, actualItemType,