/*******************************************************************************
* ADSync4J (https://github.com/zagyi/adsync4j)
*
* Copyright (c) 2013 Balazs Zagyvai
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Balazs Zagyvai
******************************************************************************/
package org.adsync4j.spi;
import java.util.List;
import java.util.UUID;
/**
* A call-back interface through which clients of ADSync4J can obtain the new/changed/deleted LDAP entries during
* synchronization.
* <p/>
* In case of a full synchronization, all entries are reported as new.
*
* @param <LDAP_ATTRIBUTE> The LDAP attribute type determined by the {@link LdapClient} implementation in use.
*/
public interface EntryProcessor<LDAP_ATTRIBUTE> {
/**
* Call-back method invoked during a full or incremental synchronization.
*
* @param entry The list of attributes of a new entry. It's guaranteed that this list contains the same number of
* attribute values in the same order as it's determined by the {@link
* DomainControllerAffiliation#getAttributesToSync() attributesToSync} property of the affiliation record
* which was used for synchronization. Note that some of the values might be {@code null} in case the
* corresponding attribute is not present on the entry.
*/
void processNew(List<LDAP_ATTRIBUTE> entry);
/**
* Call-back method invoked during an incremental synchronization.
*
* @param entry The list of attributes of a changed entry. It's guaranteed that this list contains the same number of
* attribute values in the same order as it's determined by the {@link
* DomainControllerAffiliation#getAttributesToSync() attributesToSync} property of the affiliation record
* which was used for synchronization. Note that some of the values might be {@code null} in case the
* corresponding attribute is not present on the entry.
*/
void processChanged(List<LDAP_ATTRIBUTE> entry);
/**
* Call-back method invoked during an incremental synchronization.
*
* @param entryId The GUID of an entry that has been deleted since the last synchronization.
*/
void processDeleted(UUID entryId);
}