@Override public Class<? extends Annotation> getScope() { return beanDef.getScope(); }
@Override public Class<? extends Annotation> getScope() { return beanDef.getScope(); }
@Override public T next() { final SyncBeanDef<T> bean = delegate.next(); final T instance = bean.getInstance(); if (Dependent.class.equals(bean.getScope())) { dependentInstances.put(key, instance); } lastCreatedInstance = instance; return instance; }
@Override public T get() { final SyncBeanDef<T> bean = IOCUtil.getSyncBean(key.type, qualifierArray()); final T instance = bean.getInstance(); if (Dependent.class.equals(bean.getScope())) { dependentInstances.put(key, instance); } return instance; }
private <T extends Activity> Set<T> secure(final Collection<SyncBeanDef<T>> activityBeans, final boolean protectedAccess) { final Set<T> activities = new HashSet<T>(activityBeans.size()); for (final SyncBeanDef<T> activityBean : activityBeans) { if (!activityBean.isActivated()) { continue; } final T instance = activityBean.getInstance(); if (!protectedAccess || authzManager.authorize(instance, identity) && activitiesAuthorizationManager.authorizeActivity(instance)) { activities.add(instance); } else { // Since user does not have permission, destroy bean to avoid memory leak if (activityBean.getScope().equals(Dependent.class)) { iocManager.destroyBean(instance); } } } return activities; }
@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); }