OPENDJ-1566 (CR-4587) Migrate core code from FutureResult to Promise

Minor changes in the opendj3 core server are:

* ConfigurationHandler.java
** As the SearchResultHandler, ConfigSearchResultHandler does not implements ResultHandler anymore.

* CollectClientConnectionsFilter.java
** Remove the DoBindResultHandler and use Promise chaining to complete the doFilter() method

* HttpClientConnection.java
** Change the OperationWithFutureResult class to use a FutureResultImpl instead of old AsynchronousFutureResult implementation.
** Add a SearchOperationWithFutureResultClass to handle a reference on the SearchResultHandler of the search operation.
** Create a new appSearchOperationInProgress method to handle the special case of a search operation.

* SdkConnectionAdapter.java
** Ensure compatibility with the new AbstractAsynchronousConnection class by removing ResultHandler parameter from all xxxAsync methods.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11018 41b1ffd8-f28e-4786-ab96-9950f0a78031
Checkpoint commit for OPENDJ-1536: Rename ErrorResultException to LdapException and remove ErrorResultIOException

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11020 41b1ffd8-f28e-4786-ab96-9950f0a78031
Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend to support cn=changelog

Merged + corrected backend error messages by passing in the backendID into the error messages + fixed translations (!?!)
Started implementing ChangelogBackend by adding error messages.
Used Collections.emptySet() for supported controls and / or features, where applicable.
Generecized Backend class with the type of the configuration object + applied specific types to sub-classes of Backend.
Code cleanups + factorized code by extracting methods + ran AutoRefactor.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11021 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1388 CR-3446 Implement simple changelog db based on single log file

[Note: actual merge of all org.opends.server.replication.server.changelog.file
 package content to be done in one shot in a future commit]

* Add new package org.opends.server.replication.server.changelog.file 
 containing the log file implementation 

* The new package contains the following classes :
** Classes implementing the log - independant from changelog and built from scratch
  - LogFile : implementation of log based on a single file
  - LogWriter : writer for the log
  - LogReaderPool : pool of readers for the log
  - Record : a (key, value) log record
  - RecordParser : interface for the convertion from record to bytes and bytes to record
  - DecodingException : exception thrown when record decoding fails
** Classes implementing the changelog API, based on the log implementation. 
 - FileChangelogDB
 - FileChangeNumberIndexDB
 - FileChangeNumberIndexDBCursor
 - FileReplicaDB
 - FileReplicaDBCursor
 - ReplicationEnvironment

* Add unit tests for org.opends.server.replication.server.changelog.file package

* Add new attribute 'ds-cfg-replication-db-implementation' in 
 ds-cfg-replication-server (ServerReplicationConfig class), allowing
 to choose the db implementation to use for changelog in directory server: 
 either je or log file. Default is 'je'.

* Add new option 'org.opends.test.replicationDbImpl' for test target in build.xml
 to choose the db implementation to for changelog when running the tests.
 Default is 'log' (log file).

* Update all replication unit tests to allow the selection of changelog db implementation
 to use in tests.
 
* Fix the ReferentialIntegerityPluginTestCase to do better cleanup at end of test in
 order to avoid side-effect on other tests.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11023 41b1ffd8-f28e-4786-ab96-9950f0a78031
Removed useless getChangeNumber() and setChangeNumber methods from *Operation interfaces.
These methods are useless because setChangeNumber() is never set inside production code, so changeNumber is always equal to -1 for all the update operations. In addition it is very unlikely the ChangeNumberIndexer could have computed the changeNumber before a results are sent to a persistent search.


AddOperation*.java, DeleteOperation*.java, ModifyDNOperation*.java, ModifyOperation*.java:
Removed changeNumber fields + getters and setters.
Code cleanup.

PersistentSearch.java:
In process*() public methods, removed the long changeNumber attributes.
Removed baseDN, scope and filter fields, and retrieve them directly from the SearchOperation.
Extracted methods isInScope(), isInScopeForModify(), isAnyInScopeForModify(), matchesFilter(), anyMatchesFilter(), sendEntry(), createControls().
to factorize duplicated code.

LocalBackend*Operation.java:
Consequence of the changes to PersistentSearch.process*() methods.
Code cleanup.

ECLServerWriter.java:
In publish(), consequence of the change to PersistentSearch.processAdd().
In doIt(), simplified code by extracting takeECLUpdate() method.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11024 41b1ffd8-f28e-4786-ab96-9950f0a78031