Java 7 WatchService - Ignorando várias ocorrências do mesmo evento

O javadoc paraStandardWatchEventKinds.ENTRY_MODIFY diz:

Entrada de diretório modificada. Quando um diretório é registrado para este evento, o WatchKey é enfileirado quando se observa que uma entrada no diretório foi modificada. A contagem de eventos para este evento é 1 ou maior.

Quando você edita o conteúdo de um arquivo por meio de um editor, ele modifica a data (ou outros metadados) e o conteúdo. Você, portanto, recebe doisENTRY_MODIFY eventos, mas cada um terá umcount de 1 (pelo menos é o que estou vendo).

Estou tentando monitorar um arquivo de configuração (servers.cfg previamente registrado com oWatchService) que é atualizado manualmente (ou seja, através da linha de comandovi) com o seguinte código:

while(true) {
    watchKey = watchService.take(); // blocks

    for (WatchEvent<?> event : watchKey.pollEvents()) {
        WatchEvent<Path> watchEvent = (WatchEvent<Path>) event;
        WatchEvent.Kind<Path> kind = watchEvent.kind();

        System.out.println(watchEvent.context() + ", count: "+ watchEvent.count() + ", event: "+ watchEvent.kind());
        // prints (loop on the while twice)
        // servers.cfg, count: 1, event: ENTRY_MODIFY
        // servers.cfg, count: 1, event: ENTRY_MODIFY

        switch(kind.name()) {
            case "ENTRY_MODIFY":
                handleModify(watchEvent.context()); // reload configuration class
                break;
            case "ENTRY_DELETE":
                handleDelete(watchEvent.context()); // do something else
                break;              
        }
    }   

    watchKey.reset();       
}

Desde que você tem doisENTRY_MODIFY eventos, o acima iria recarregar a configuração duas vezes quando apenas uma vez é necessário. Existe alguma maneira de ignorar todos menos um deles, assumindo que poderia haver mais de um evento?

Se oWatchService A API tem esse utilitário, tanto melhor. (Eu meio que não quero verificar os horários entre cada evento. Todos os métodos manipuladores no meu código são síncronos.

O mesmo ocorre se você criar (copiar / colar) um arquivo de um diretório para o diretório assistido. Como você pode combinar os dois em um evento?

questionAnswers(13)

yourAnswerToTheQuestion