Package org.apache.lucene.store

# Class LockValidatingDirectoryWrapper

java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.store.FilterDirectory
org.apache.lucene.store.LockValidatingDirectoryWrapper

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public final class LockValidatingDirectoryWrapper extends FilterDirectory
This class makes a best-effort check that a provided `Lock` is valid before any destructive filesystem operation.

## Field Summary

### Fields inherited from class org.apache.lucene.store.FilterDirectory

`in`

## Constructor Summary

Constructors
Constructor
Description
`LockValidatingDirectoryWrapper(Directory in, Lock writeLock)`

## Method Summary

Modifier and Type
Method
Description
`void`
`copyFrom(Directory from, String src, String dest, IOContext context)`
Copies an existing `src` file from directory `from` to a non-existent file `dest` in this directory.
`IndexOutput`
`createOutput(String name, IOContext context)`
Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.
`void`
`deleteFile(String name)`
Removes an existing file in the directory.
`void`
`rename(String source, String dest)`
Renames `source` file to `dest` file where `dest` must not already exist in the directory.
`void`
`sync(Collection<String> names)`
Ensures that any writes to these files are moved to stable storage (made durable).
`void`
`syncMetaData()`
Ensures that directory metadata, such as recent file renames, are moved to stable storage.

### Methods inherited from class org.apache.lucene.store.FilterDirectory

`close, createTempOutput, ensureOpen, fileLength, getDelegate, getPendingDeletions, listAll, obtainLock, openInput, toString, unwrap`

### Methods inherited from class org.apache.lucene.store.Directory

`getTempFileName, openChecksumInput`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### LockValidatingDirectoryWrapper

public LockValidatingDirectoryWrapper(Directory in, Lock writeLock)

## Method Details

### deleteFile

public void deleteFile(String name) throws IOException
Description copied from class: `Directory`
Removes an existing file in the directory.

This method must throw either `NoSuchFileException` or `FileNotFoundException` if `name` points to a non-existing file.

Overrides:
  `deleteFile` in class `FilterDirectory`
Parameters:
  `name` - the name of an existing file.
Throws:
  `IOException` - in case of I/O error

### createOutput

public IndexOutput createOutput(String name, IOContext context) throws IOException
Description copied from class: `Directory`
Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.

This method must throw `FileAlreadyExistsException` if the file already exists.

Overrides:
  `createOutput` in class `FilterDirectory`
Parameters:
  `name` - the name of the file to create.
Throws:
  `IOException` - in case of I/O error

### copyFrom

public void copyFrom(Directory from, String src, String dest, IOContext context) throws IOException
Description copied from class: `Directory`
Copies an existing `src` file from directory `from` to a non-existent file `dest` in this directory. The given IOContext is only used for opening the destination file.

Overrides:
  `copyFrom` in class `Directory`
Throws:
  `IOException`

### rename

public void rename(String source, String dest) throws IOException
Description copied from class: `Directory`
Renames `source` file to `dest` file where `dest` must not already exist in the directory.

It is permitted for this operation to not be truly atomic, for example both `source` and `dest` can be visible temporarily in `Directory.listAll()`. However, the implementation of this method must ensure the content of `dest` appears as the entire `source` atomically. So once `dest` is visible for readers, the entire content of previous `source` is visible.

This method is used by IndexWriter to publish commits.

Overrides:
  `rename` in class `FilterDirectory`
Throws:
  `IOException`

### syncMetaData

public void syncMetaData() throws IOException
Description copied from class: `Directory`
Ensures that directory metadata, such as recent file renames, are moved to stable storage.

Overrides:
  `syncMetaData` in class `FilterDirectory`
Throws:
  `IOException`
See Also:
  - `Directory.sync(Collection)`

### sync

public void sync(Collection<String> names) throws IOException
Description copied from class: `Directory`
Ensures that any writes to these files are moved to stable storage (made durable).

Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.

Overrides:
  `sync` in class `FilterDirectory`
Throws:
  `IOException`
See Also:
  - `Directory.syncMetaData()`