@Override public Class getType() { return beanDef.getType(); }
@Override public Class<T> getType() { return beanDef.getType(); }
@Override public <T> void registerBean(final SyncBeanDef<T> beanDef) { runtimeBeanDefsByName.put(beanDef.getType().getName(), beanDef); if (!beanDef.getType().getName().equals(beanDef.getBeanClass().getName())) { runtimeBeanDefsByName.put(beanDef.getBeanClass().getName(), beanDef); } if (beanDef.getName() != null) { runtimeBeanDefsByName.put(beanDef.getName(), beanDef); } }
@SuppressWarnings("unchecked") @Override public ListComponent provide(final Class<?>[] typeargs, final Annotation[] qualifiers) { final Annotation[] filteredQualifiers = filterQualifiers(qualifiers); final Optional<ListContainer> listContainer = getListContainer(qualifiers); final HTMLElement root = (HTMLElement) Document.get().createElement(listContainer.map(anno -> anno.value()).orElse("div")); final SyncBeanDef<?> beanDef = IOC.getBeanManager().lookupBean(typeargs[1], filteredQualifiers); final Supplier<?> supplier = () -> beanDef.getInstance(); final Consumer<?> destroyer = (!Dependent.class.equals(beanDef.getScope()) ? c -> {} : c -> IOC.getBeanManager().destroyBean(c)); final Function<?, HTMLElement> elementAccessor; if (beanDef.isAssignableTo(IsElement.class)) { elementAccessor = c -> ((IsElement) c).getElement(); } else if (beanDef.isAssignableTo(IsWidget.class)) { elementAccessor = c -> (HTMLElement) ((IsWidget) c).asWidget().getElement(); } else { throw new RuntimeException("Cannot create element accessor for " + beanDef.getType().getName() + ". Must implement IsElement or IsWidget."); } return new DefaultListComponent(root, supplier, destroyer, elementAccessor); }
@SuppressWarnings("unchecked") @Override public ListComponent provide(final Class<?>[] typeargs, final Annotation[] qualifiers) { final Annotation[] filteredQualifiers = filterQualifiers(qualifiers); final Optional<ListContainer> listContainer = getListContainer(qualifiers); final HTMLElement root = (HTMLElement) Document.get().createElement(listContainer.map(anno -> anno.value()).orElse("div")); final SyncBeanDef<?> beanDef = IOC.getBeanManager().lookupBean(typeargs[1], filteredQualifiers); final Supplier<?> supplier = () -> beanDef.getInstance(); final Consumer<?> destroyer = (!Dependent.class.equals(beanDef.getScope()) ? c -> {} : c -> IOC.getBeanManager().destroyBean(c)); final Function<?, HTMLElement> elementAccessor; if (beanDef.isAssignableTo(IsElement.class)) { elementAccessor = c -> ((IsElement) c).getElement(); } else if (beanDef.isAssignableTo(IsWidget.class)) { elementAccessor = c -> (HTMLElement) ((IsWidget) c).asWidget().getElement(); } else { throw new RuntimeException("Cannot create element accessor for " + beanDef.getType().getName() + ". Must implement IsElement or IsWidget."); } return new DefaultListComponent(root, supplier, destroyer, elementAccessor); }