Ricerca di OverlappingFileLockException per il metodo FileChannel lock()

Questa regola contrassegna l'utilizzo del metodo java.nio.channels.FileChannel.lock(). In Java SE 6, il metodo lock() genera ora un'eccezione java.nio.channels.OverlappingFileLockException.

Questa regola contrassegna il metodo lock() che non ha un blocco try/catch con OverlappingFileLockException o se il metodo circostante non genera l'eccezione OverlappingFileLockException.

Esempio 1:

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

Esempio 2:

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

Esempio 3:

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

Nell'esempio 1, la chiamata fc.lock() verrà contrassegnata.

Nell'esempio 2, la chiamata super.lock() verrà contrassegnata.

Nell'esempio 3, non verrà contrassegnato nulla, poiché il metodo doX() genera già un'eccezione OverlappingFileLockException ed il metodo doY() cattura OverlappingFileLockException.

Java SE 6 ha aggiunto la proprietà di sistema sun.nio.ch.disableSystemWideOverlappingFileLockCheck per controllare il comportamento di verifica del file java.nio.channels.FileChannel.lock.

Per ulteriori informazioni, consultare l'elemento 4 nella guida Java SE 6 Compatibility.