I think this method has a flaw in it's signature. It is impossible to call this method with any other class object than the Authority.class. For example if I try:

  Authority[] auth = user.getAuthorities(WritePermission.class);

I get the following compile error (cleaned up a bit):

  [javac] BaseUserManager.java:118: cannot find symbol
  [javac] symbol  : method getAuthorities(Class<WritePermission>)
  [javac] location: class net.sf.basedb.clients.ftp.BaseUser
  [javac]                   user.getAuthorities(WritePermission.class);
  [javac]                       ^

A workaround is to do:

  Class c = WritePermission.class;
  Authority[] auth = user.getAuthorities(c);

I think the proper solution is to change the method signature to:

   Authority[] getAuthorities(Class<? extends Authority> clazz);

This would allow any subclass of the Authority class to be used as a parameter.

Just a final note. It is no big deal for me. I am not going to call this method in my code and it seems like it is not called anywhere internally in the FTP Server code either. It was just something I noticed while implementing the User interface and trying to test my implementation of it.

/Nicklas

Reply via email to