A interface DynamicIndexCallback foi projetada para aplicativos que desejam obter notificações nos eventos de indexação de ready, error ou destroy. O DynamicIndexCallback é um parâmetro opcional para o método createDynamicIndex do BackingMap. Com uma instância DynamicIndexCallback registrada, os aplicativos podem executar a lógica de negócios ao receber notificação de um evento de indexação.
BackingMap personBackingMap = ivObjectGrid.getMap("person");
DynamicIndexCallback callback = new DynamicIndexCallbackImpl();
personBackingMap.createDynamicIndex("CODE", true, "employeeCode", callback);
class DynamicIndexCallbackImpl implements DynamicIndexCallback {
public DynamicIndexCallbackImpl() {
}
public void ready(String indexName) {
System.out.println("DynamicIndexCallbackImpl.ready() -> indexName = " + indexName);
// Simulate what an application would do when notified that the index is ready.
// Normally, the application would wait until the ready state is reached and then proceed
// with any index usage logic.
if("CODE".equals(indexName)) {
ObjectGridManager ogManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid og = ogManager.createObjectGrid("grid");
Session session = og.getSession();
ObjectMap map = session.getMap("person");
MapIndex codeIndex = (MapIndex) map.getIndex("CODE");
Iterator iter = codeIndex.findAll(codeValue);
// Close the session (optional in Version 7.1.1 and later)
for improved performance
session.close();
}
}
public void error(String indexName, Throwable t) {
System.out.println("DynamicIndexCallbackImpl.error() -> indexName = " + indexName);
t.printStackTrace();
}
public void destroy(String indexName) {
System.out.println("DynamicIndexCallbackImpl.destroy() -> indexName = " + indexName);
}
}