@Override public boolean isAssignableTo(final Class<?> type) { return handle.getAssignableTypes().contains(type); } }
@SuppressWarnings("unchecked") private <T> Class<T> getType(final String typeName, final FactoryHandle handle, final Class<?> defaultType) { for (final Class<?> type : handle.getAssignableTypes()) { if (type.getName().equals(typeName)) { return (Class<T>) type; } } return (Class<T>) defaultType; }
private void addFactory(final FactoryHandle handle) { for (final Class<?> assignableType : handle.getAssignableTypes()) { handlesByName.put(assignableType.getName(), handle); } if (handle.getBeanName() != null) { handlesByName.put(handle.getBeanName(), handle); } }
private void unregisterAsyncBean(final FactoryHandle handle) { final String name = (handle.getBeanName() != null ? handle.getBeanName() : handle.getActualType().getName()); typeNamesByName.remove(name, handle.getActualType().getName()); unloadedByFactoryName.remove(handle.getFactoryName()); for (final Class<?> assignable : handle.getAssignableTypes()) { final Iterator<UnloadedFactory<?>> unloadedIter = unloadedByTypeName.get(assignable.getName()).iterator(); while (unloadedIter.hasNext()) { final UnloadedFactory<?> unloaded = unloadedIter.next(); if (unloaded.getHandle().getFactoryName().equals(handle.getFactoryName())) { unloadedIter.remove(); break; } } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void registerAsyncBean(final FactoryHandle handle, final FactoryLoader<?> future) { final String beanName; if (handle.getBeanName() != null) { beanName = handle.getBeanName(); } else { beanName = handle.getActualType().getName(); } typeNamesByName.put(beanName, handle.getActualType().getName()); final UnloadedFactory unloaded = new UnloadedFactory(handle, future); for (final Class<?> assignable : handle.getAssignableTypes()) { unloadedByTypeName.put(assignable.getName(), unloaded); } unloadedByFactoryName.put(handle.getFactoryName(), unloaded); }