rubys       02/01/20 16:01:57

  Modified:    java/src/org/apache/soap/encoding/soapenc
                        VectorSerializer.java
  Log:
  Check for and de-reference hrefs, if present.
  Submitted by: Simon Fell <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.8       +16 -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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- VectorSerializer.java     6 Sep 2001 20:34:17 -0000       1.7
  +++ VectorSerializer.java     21 Jan 2002 00:01:57 -0000      1.8
  @@ -180,11 +180,24 @@
                  String actualEncStyle = declEncStyle != null
                                                                  ? declEncStyle
                                                                        : 
inScopeEncStyle;
  -          QName declItemType = SoapEncUtils.getTypeQName(tempEl);
  +
  +               // If it's a local reference, follow it.
  +               String href = tempEl.getAttribute(Constants.ATTR_REFERENCE);
  +               Element actualEl = tempEl;
  +               if(href != null && !href.equals("") && (href.charAt(0) == '#'))
  +               {
  +             href = href.substring(1);
  +             actualEl = 
DOMUtils.getElementByID(src.getOwnerDocument().getDocumentElement(),href);
  +             if (actualEl == null) {
  +               throw new IllegalArgumentException("No such ID '" + href + "'");
  +            }
  +          }
  +                                                                     
  +          QName declItemType = SoapEncUtils.getTypeQName(actualEl);
             QName actualItemType = declItemType;
   
  -                  Bean itemBean = xjmr.unmarshall(actualEncStyle, actualItemType,
  -                                                  tempEl, ctx);
  +          Bean itemBean = xjmr.unmarshall(actualEncStyle, actualItemType,
  +                                                  actualEl, ctx);
   
                  v.addElement(itemBean.value);
   
  
  
  


Reply via email to