MirageIOException extends IOException implements MirageException { @Override public Mirage.Source getSource() { return source; } MirageIOException(Mirage.Source source);  MirageIOException(Mirage.Source source, Throwable cause); @Override Mirage.Source getSource();  }
@Test public void testSource() throws Exception { MirageIOException e = new MirageIOException(Mirage.Source.EXTERNAL); Assert.assertEquals(Mirage.Source.EXTERNAL, e.getSource()); e = new MirageIOException(Mirage.Source.DISK, new IOException("test exception")); Assert.assertEquals(Mirage.Source.DISK, e.getSource()); }