| | |
| | | import org.opends.server.core.AddOperation; |
| | | import org.opends.server.synchronization.changelog.Changelog; |
| | | import org.opends.server.synchronization.common.LogMessages; |
| | | import org.opends.server.synchronization.common.ServerState; |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.core.DeleteOperation; |
| | | import org.opends.server.types.DirectoryException; |
| | |
| | | private static Map<DN, SynchronizationDomain> domains = |
| | | new HashMap<DN, SynchronizationDomain>() ; |
| | | |
| | | /** |
| | | * Get the ServerState associated to the SynchronizationDomain |
| | | * with a given DN. |
| | | * |
| | | * @param baseDn The DN of the Synchronization Domain for which the |
| | | * ServerState must be returned. |
| | | * @return the ServerState associated to the SynchronizationDomain |
| | | * with the DN in parameter. |
| | | */ |
| | | public static ServerState getServerState(DN baseDn) |
| | | { |
| | | SynchronizationDomain domain = findDomain(baseDn); |
| | | return domain.getServerState(); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | |
| | | public SynchronizationProviderResult handleConflictResolution( |
| | | ModifyOperation modifyOperation) |
| | | { |
| | | SynchronizationDomain domain = findDomain(modifyOperation.getEntryDN()); |
| | | SynchronizationDomain domain = |
| | | findDomain(modifyOperation.getEntryDN(), modifyOperation); |
| | | if (domain == null) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | |
| | | public SynchronizationProviderResult handleConflictResolution( |
| | | AddOperation addOperation) throws DirectoryException |
| | | { |
| | | SynchronizationDomain domain = findDomain(addOperation.getEntryDN()); |
| | | SynchronizationDomain domain = |
| | | findDomain(addOperation.getEntryDN(), addOperation); |
| | | if (domain == null) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | |
| | | public SynchronizationProviderResult handleConflictResolution( |
| | | DeleteOperation deleteOperation) throws DirectoryException |
| | | { |
| | | SynchronizationDomain domain = findDomain(deleteOperation.getEntryDN()); |
| | | SynchronizationDomain domain = |
| | | findDomain(deleteOperation.getEntryDN(), deleteOperation); |
| | | if (domain == null) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | |
| | | public SynchronizationProviderResult handleConflictResolution( |
| | | ModifyDNOperation modifyDNOperation) throws DirectoryException |
| | | { |
| | | SynchronizationDomain domain = findDomain(modifyDNOperation.getEntryDN()); |
| | | SynchronizationDomain domain = |
| | | findDomain(modifyDNOperation.getEntryDN(), modifyDNOperation); |
| | | if (domain == null) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | |
| | | public SynchronizationProviderResult |
| | | doPreOperation(ModifyOperation modifyOperation) |
| | | { |
| | | SynchronizationDomain domain = findDomain(modifyOperation.getEntryDN()); |
| | | if (domain == null) |
| | | DN operationDN = modifyOperation.getEntryDN(); |
| | | SynchronizationDomain domain = findDomain(operationDN, modifyOperation); |
| | | |
| | | if ((domain == null) || (!domain.solveConflict())) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | | Historical historicalInformation = (Historical) |
| | |
| | | @Override |
| | | public SynchronizationProviderResult doPreOperation(AddOperation addOperation) |
| | | { |
| | | SynchronizationDomain domain = findDomain(addOperation.getEntryDN()); |
| | | SynchronizationDomain domain = |
| | | findDomain(addOperation.getEntryDN(), addOperation); |
| | | if (domain == null) |
| | | return new SynchronizationProviderResult(true); |
| | | |
| | |
| | | * @param dn The DN for which the domain must be returned. |
| | | * @return The Synchronization domain for this DN. |
| | | */ |
| | | private static SynchronizationDomain findDomain(DN dn) |
| | | private static SynchronizationDomain findDomain(DN dn, Operation op) |
| | | { |
| | | /* |
| | | * Don't run the special synchronization code on Operation that are |
| | | * specifically marked as don't synchronize. |
| | | */ |
| | | if (op.dontSynchronize()) |
| | | return null; |
| | | |
| | | SynchronizationDomain domain = null; |
| | | DN temp = dn; |
| | | do |
| | |
| | | } |
| | | } while (domain == null); |
| | | |
| | | /* |
| | | * Don't apply synchronization to the special entry where the ServerState |
| | | * is stored. |
| | | */ |
| | | if ((domain!= null) && (domain.getServerStateDN().equals(dn))) |
| | | return null; |
| | | |
| | | return domain; |
| | | } |
| | | |
| | |
| | | */ |
| | | private void genericPostOperation(Operation operation, DN dn) |
| | | { |
| | | SynchronizationDomain domain = findDomain(dn); |
| | | SynchronizationDomain domain = findDomain(dn, operation); |
| | | if (domain == null) |
| | | return; |
| | | |