@Override public String toString() { return "[JsTypeBeanDef: factoryName=" + provider.getFactoryName() + ", name=" + provider.getName() + "]"; } }
@SuppressWarnings({ "rawtypes", "unchecked" }) public Collection<SyncBeanDef> lookupBeans(final String name, final boolean keepJsDups) { Assert.notNull(name); logger.debug("Looking up beans for {}", name); final Collection<FactoryHandle> handles = handlesByName.get(name); final Collection<SyncBeanDef<?>> runtimeBeanDefs = runtimeBeanDefsByName.get(name); final JsArray<JsTypeProvider<?>> jsProviders = getJsProviders(name); final Set<String> beanDefFactoryNames = new HashSet<>(); final Collection beanDefs = new ArrayList<SyncBeanDef<Object>>(handles.size()+runtimeBeanDefs.size()+jsProviders.length()); beanDefs.addAll(runtimeBeanDefs); for (final FactoryHandle handle : handles) { if (handle.isAvailableByLookup()) { beanDefs.add(new IOCBeanDefImplementation<>(handle, this.<Object>getType(name, handle, handle.getActualType()))); beanDefFactoryNames.add(handle.getFactoryName()); } } for (final JsTypeProvider<?> provider : JsArray.iterable(jsProviders)) { logger.debug("Found JS provider for name {} from factory {}", provider.getName(), provider.getFactoryName()); if (keepJsDups || provider.getFactoryName() == null || !beanDefFactoryNames.contains(provider.getFactoryName())) { logger.debug("Keeping JS provider for name {} from factory {}", provider.getName(), provider.getFactoryName()); beanDefs.add(new JsTypeBeanDefImplementation(provider, name)); } else { logger.debug("Rejecting duplicate JS provider for name {} from factory {}", provider.getName(), provider.getFactoryName()); } } logger.debug("Looked up {} beans: {}", beanDefs.size(), beanDefs); return beanDefs; }