init();
}
private void init() {
// The AsyncBeanManager API works in both synchronous and asynchronous IOC mode
AsyncBeanManager bm = IOC.getAsyncBeanManager();
// In the case that this method is executed before the first call has successfully processed all
// of its callbacks, we must cancel those uncompleted callbacks in flight to prevent duplicate
// data in the ListWidget.
for (WidgetCreationalCallback callback : callbacks) {
callback.discard();
}
callbacks.clear();
pendingCallbacks = 0;
// clean up the old widgets before we add new ones (this will eventually become a feature of the
// framework: ERRAI-375)
Iterator<Widget> it = panel.iterator();
while (it.hasNext()) {
bm.destroyBean(it.next());
it.remove();
}
if (items == null)
return;
pendingCallbacks = items.size();
AsyncBeanDef<W> itemBeanDef = bm.lookupBean(getItemWidgetType());
if (!itemBeanDef.getScope().equals(Dependent.class))
throw new InvalidBeanScopeException("ListWidget cannot contain ApplicationScoped widgets");
for (final M item : items) {