Hi Tony,
When I run this testcase with the RI I do see a SecurityException, but it's
thrown from the call to new SecurityManager() on the last line of the test()
method (and not the call to ucl.findResources("test.txt");). So unless I'm
doing something wrong it looks like the inconsistency between Harmony and
the RI is not in the findResources method.
Thanks,
Sian
On 09/01/07, Tony Wu <[EMAIL PROTECTED]> wrote:
I just scratched a testcase. It does cause a SecurityException on RI
whereas passes on Harmony. I post it below. Hope it could do some
help. bedtime ;-)
public class Harmony2939 extends TestCase {
public void test() throws IOException {
URL[] urls = new URL[1];
File dir = File.createTempFile("hytemp", "");
dir.delete();
dir.mkdir();
File file = new File(dir.getPath() + "/test.txt");
file.createNewFile();
urls[0] = new URL("file:///" + dir.getPath()+"/");
assertTrue(new File("/"+file.getAbsolutePath()).exists());
URLClassLoader ucl = URLClassLoader.newInstance(urls);
SecurityManager sm = new MySecurityManager(file.getPath());
System.setSecurityManager(sm);
ucl.findResources("test.txt");
System.setSecurityManager(new SecurityManager());
}
class MySecurityManager extends SecurityManager {
private String dir;
public MySecurityManager(String dir) {
super();
this.dir = dir;
}
public void checkPermission(Permission perm) {
FilePermission p = new FilePermission(dir, "read");
if(perm.equals(p)){
throw new SecurityException();
}
}
}
}
On 1/10/07, Sian January <[EMAIL PROTECTED]> wrote:
> Thanks Andrew and Alexey. I tried writing a test case for the
> SecurityException as Andrew described and the RI does not throw an
> Exception, so it's definitely right that we should catch the
> SecurityException. I'm still unsure about the IOException, especially
as
> the signature of the method states that an IOException is thrown, but if
it
> can't be tested then it's probably best to leave it.
>
> Sian
>
>
> On 09/01/07, Alexey Petrenko <[EMAIL PROTECTED]> wrote:
> >
> > Sian,
> >
> > the logic looks OK for me in this method. SecurityException shows that
> > testing url should not be added to reduced list in this case.
> >
> > SY, Alexey
> >
> > 2007/1/8, Sian January <[EMAIL PROTECTED]>:
> > > Hello everyone,
> > >
> > > I have recently been looking at ignored Exceptions in luni (i.e.
places
> > > where an Exception is caught but the catch block is empty). These
are
> > > generally a bad idea because if an Exception does occur it is lost -
the
> > > user doesn't see it and it's not logged anywhere either, so if it
causes
> > a
> > > problem in the program it is very difficult to find the root cause.
> > >
> > > I would like to discuss one of these in particular, in
> > > URLCLassLoader.findResources where an IOException and a
> > > SecurityException are ignored. Since the signature of the method
says
> > that
> > > it throws an IOException (and SecurityException is a subtype of
> > > RuntimeException) I thought the try-catch block could probably be
> > removed
> > > entirely. However it is an API method and I am finding it difficult
to
> > > write a test case for this because I'm not sure how to force either
of
> > those
> > > Exceptions.
> > >
> > > Geir suggested it might be an interesting topic for the mailing list
so
> > > please post your thoughts. Also if anyone knows how to write the
test
> > case
> > > that would be especially helpful. Details at
> > > https://issues.apache.org/jira/browse/HARMONY-2939.
> > >
> > > Thanks,
> > >
> > > Sian
> > >
> > > --
> > > Sian January
> > >
> > > IBM Java Technology Centre, UK
> > >
> > >
> >
>
>
>
> --
> Sian January
>
> IBM Java Technology Centre, UK
>
>
--
Tony Wu
China Software Development Lab, IBM
--
Sian January
IBM Java Technology Centre, UK