b4851fc75ef4634840dcbadec085d586d36b434d 495 |
|
02-Oct-2006 |
neil_a_wilson |
Perform significant refactoring in the core and plugin code in order to help
make it easier for external developers to extend OpenDS. In particular, this
is a big step towards eliminating the need for developers to reference anything
in the core package, and it's also a signficant simplification to the plugin
API because it helps expose which operation methods are safe to call at various
points in the plugin processing.
The most significant changes in this commit include:
- I've created a new org.opends.server.types.operation package and added
a lot of interfaces into it. These interfaces define the set of methods
that may be called on operations at various points in plugin processing
(e.g., there's a PreParseAddOperation interface that exposes the methods
of the AddOperation class that are safe to call from a pre-parse
plugin). All of the core operation types now implement the appropriate
set of interfaces, and the plugin API methods now take these interfaces
as arguments rather than the Operation subclass itself.
- I've moved a number of classes from the core package to the types
package. All references to these classes anywhere in the code were
updated to reflect the change. The classes that were moved include:
* CancelledOperationException
* CancelRequest
* CancelResult
* CryptoManager
* DirectoryException
* InitializationException
* LockManager
* OperationType
* Schema
- I've also moved the test cases for the DirectoryException and
InitializationException classes from the core to the types package.
- Some general cleanup in the core operation classes. Virtually all
methods should now be marked final. All methods inherited from the
abstract Operation class now use "{@inheritDoc}" for the javadoc
documentation and have the "@override" annotation.
- The DirectoryServerPlugin class has been updated so that the default
implementations for all plugin methods now throw a runtime exception to
indicate that the requested functionality has not been implemented. |