On Wed, Nov 4, 2009 at 4:11 AM, Tim Ellison <t.p.elli...@gmail.com> wrote:

> Like everyone else, I'm avoiding studying sources of Sun code, so can
> you show the test case here (or on a JIRA)?
>

I attached it in the first message, but it looks like the mailing list
software silently discards attachments. Here's the test inline:

import java.io.BufferedOutputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;


public class Scratch {


  public static void main(String[] args) throws Exception {

    new ProcessBuilder()

        .command("/usr/bin/hdiutil", "create", "-fs", "HFS+", "-size",
"10m",

            "-volname", "refreshing", "-attach", "/tmp/refreshing.dmg")

        .start()

        .waitFor();


    ChmoddedFileMaker coke = new
ChmoddedFileMaker("/Volumes/refreshing/refreshing.txt");

    ChmoddedFileMaker pepsi = new
ChmoddedFileMaker("/Volumes/refreshing/refreshing.txt");


    // this write will succeed because the volume exists

    coke.writeAndChmod("Coke");


    new ProcessBuilder().command("/sbin/umount", "-f",
"/Volumes/refreshing/")

        .start()

        .waitFor();


    // this write will fail because the volume has disappeared

    pepsi.writeAndChmod("Pepsi");

  }


  static class ChmoddedFileMaker {

    private final String file;

    private final OutputStream out;


    ChmoddedFileMaker(String file) throws FileNotFoundException {

      this.file = file;

      this.out = new BufferedOutputStream(new FileOutputStream(this.file));

    }


    void writeAndChmod(String contents) throws IOException,
InterruptedException {

      out.write(contents.getBytes());

      out.close();

    }

  }

}


When this program is executed on the RI, the 2nd write fails but no
exceptions are thrown.

Reply via email to