harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Cornwall (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4447) XMLEncoder.flush() should not always flush
Date Thu, 12 Jul 2007 17:23:04 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-4447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512182
] 

Andrew Cornwall commented on HARMONY-4447:
------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0" class="java.beans.XMLDecoder">
<string>hello</string>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0" class="java.beans.XMLDecoder">
<string>hello</string>
</java>

A possible fix is to implement a boolean dirty=false, and set it to true when writeObject
or writeStatement happens, and false when a flush is done. The writeAll in the flush should
only be done if the dirty flag is true.

(I'm not sure if this means you also have to override the parent writeExpression/write methods
to update the flag there as well.)

> XMLEncoder.flush() should not always flush
> ------------------------------------------
>
>                 Key: HARMONY-4447
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4447
>             Project: Harmony
>          Issue Type: Bug
>         Environment: M2 on Win x86.
>            Reporter: Andrew Cornwall
>            Priority: Minor
>
> The flush() method in XMLEncoder doesn't take into account the fact that data may have
already been written. Consequently, calling XMLEncoder.flush() may result in the same data
being written twice.
> Here's a testcase:
> import java.beans.XMLEncoder;
> import java.io.ByteArrayOutputStream;
> public class Bugzilla125927 {
>     public static void main (String args[]) {
> 	Object object = "hello";
> 	byte[] out = null;
> 	ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
> 	XMLEncoder encoder = new XMLEncoder(outputStream);
> 	try{
> 	    encoder.writeObject(object);
> 	    encoder.flush();
> 	    encoder.close();
> 	    outputStream.close();
> 	}
> 	catch (Exception ex) { 
> 	    ex.printStackTrace();
> 	}
> 	System.out.println(new String(outputStream.toByteArray()));
>     }
> }
> On the Sun JDK, this results in the following output:
> <?xml version="1.0" encoding="UTF-8"?>
> <java version="1.5.0_04" class="java.beans.XMLDecoder">
>  <string>hello</string>
> </java>
> On Harmony, you get the following:

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message