Verificaţi OverlappingFileLockException pentru metoda FileChannel lock()

Această regulă semnalează utilizarea metodei java.nio.channels.FileChannel.lock(). În Java SE 6, metoda lock() aruncă acum java.nio.channels.OverlappingFileLockException.

Această regulă va semnala metoda lock() care nu are un bloc try/catch cu OverlappingFileLockException sau dacă metoda nu aruncă OverlappingFileLockException.

Exemplul 1:

public MyClass{
private void doX(){
FileChannel fc= getFileChannel();
fc.lock();
}
}

Exemplul 2:

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// more code
}

Exemplul 3:

public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// more code
}

În exemplul 1, apelul fc.lock() va fi semnalat.

În exemplul 2, va fi semnalat apelul super.lock().

În exemplu 3 nu va fi semnalat nimic deoarece metoda doX() aruncă deja OverlappingFileLockException şi metoda doY() prinde OverlappingFileLockException.

Java SE 6 a adăugat proprietatea de sistem sun.nio.ch.disableSystemWideOverlappingFileLockCheck pentru a controla comportamentul de verificare a fişierului java.nio.channels.FileChannel.lock.

Pentru informaţii suplimentare, vedeţi articolul 4 din ghidul Java SE 6 Compatibility.