Yeah I like your idea of using a MoveContext and a RenameContext along with a MoveAndRenameContext. This solves the problem quickly but I wonder if it is the best option.
as I changed the interceptors operation to use instances of ServiceContext instead of multiple parameters, I'm facing a difficult semantic problem with the modifyDN operation. This operation gather three different semantics :
- a rename operation, if the RDN is changed, but not the base DN
- a move operation if the RDN is not changed but the base DN is changed
- and a move+rename operation if both RDN and base DN are changed
As I can't have two move() operations, because the signatureis now the same (move(ServiceContext)), so I wanted to rename the method, but which name using ? ... Another option would be to keep the two move() methods, but instead of using the ServcieContext interface, to use the specific sub-class : move( MoveContext ) and move( ChangeContext ), where the MoveContext is used if the RDN does not change, and the other one if it change.