Esta regra sinaliza a utilização do método java.nio.channels.FileChannel.lock(). No Java SE 6, o método lock() agora gera java.nio.channels.OverlappingFileLockException.
Esta regra sinalizará o método lock() que não possui um bloco try/catch com OverlappingFileLockException ou se o método circundante não gera OverlappingFileLockException.
Exemplo 1:
| public MyClass{
private void doX(){ FileChannel fc= getFileChannel(); fc.lock(); } } |
Exemplo 2:
| public MyClass extends FileChannel{
private void doX(){ super.lock(); } // mais código } |
Exemplo 3:
| public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{ super.lock(); } private void doY() { try{ super.lock(); catch {OverlappingFileLockException e} {} } // mais código } |
No Exemplo 1, a chamada fc.lock() será sinalizada.
No Exemplo 2, a chamada super.lock() será sinalizada.
No Exemplo 3, nada será sinalizado porque o método doX() já gera OverlappingFileLockException e o método doY() captura OverlappingFileLockException.
O Java SE 6 inclui a propriedade de sistema sun.nio.ch.disableSystemWideOverlappingFileLockCheck para controlar o comportamento de verificação do arquivo java.nio.channels.FileChannel.lock.
Para obter informações adicionais, consulte o item 4 no guia Compatibilidade do Java SE 6.