gdaniels    02/02/20 20:01:48

  Modified:    java/src/org/apache/axis/message MessageElement.java
  Log:
  In case there isn't a deserialization context available when trying to
  string-ize a MessageElement (for instance, when the MessageElement
  has been dynamically created), just use whatever the current
  MessageContext is to get the TypeMappings which are in scope.
  
  This fixes a bug discovered by Romin Irani (thanks, Romin!)
  
  Revision  Changes    Path
  1.75      +18 -17    xml-axis/java/src/org/apache/axis/message/MessageElement.java
  
  Index: MessageElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/MessageElement.java,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- MessageElement.java       19 Feb 2002 17:38:21 -0000      1.74
  +++ MessageElement.java       21 Feb 2002 04:01:48 -0000      1.75
  @@ -412,24 +412,30 @@
   
       public Document getAsDocument() throws Exception
       {
  +        String elementString = getAsString();
  +
  +        Reader reader = new StringReader(elementString);
  +        Document doc = XMLUtils.newDocument(new InputSource(reader));
  +        if (doc == null)
  +            throw new Exception(
  +                    JavaUtils.getMessage("noDoc00", elementString));
  +        return doc;
  +    }
  +
  +    private String getAsString() throws Exception {
           SerializationContext serializeContext = null;
           StringWriter writer = new StringWriter();
  -        if(context != null)
  -        {
  -            MessageContext msgContext = context.getMessageContext();
  -            serializeContext = new SerializationContextImpl(writer, msgContext);
  +        MessageContext msgContext;
  +        if (context != null) {
  +            msgContext = context.getMessageContext();
           } else {
  -            serializeContext = new SerializationContextImpl(writer);
  +            msgContext = MessageContext.getCurrentContext();
           }
  +        serializeContext = new SerializationContextImpl(writer, msgContext);
           output(serializeContext);
           writer.close();
   
  -        Reader reader = new StringReader(writer.getBuffer().toString());
  -        Document doc = XMLUtils.newDocument(new InputSource(reader));
  -        if (doc == null)
  -            throw new Exception(
  -                    JavaUtils.getMessage("noDoc00", writer.getBuffer().toString()));
  -        return doc;
  +        return writer.getBuffer().toString();
       }
   
       public Element getAsDOM() throws Exception
  @@ -503,12 +509,7 @@
   
       public String toString() {
           try {
  -            StringWriter  writer = new StringWriter();
  -            SerializationContext serContext = new SerializationContextImpl(writer, 
  -                                                                           null);
  -            serContext.setSendDecl(false);
  -            this.output(serContext);
  -            return( writer.toString() );
  +            return getAsString();
           }
           catch( Exception exp ) {
               exp.printStackTrace();
  
  
  


Reply via email to