Verificar a OverlappingFileLockException para o método FileChannel lock()

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.