public boolean isResolvable( PicoContainer container, ComponentAdapter adapter, Class expectedType) { if (clazz.isAssignableFrom(expectedType)) { return true; } return super.isResolvable(container, adapter, expectedType); };
@Override public Object resolveInstance( PicoContainer container, ComponentAdapter adapter, Class expectedType) { if (clazz.isAssignableFrom(expectedType)) { return obj; } return super.resolveInstance(container, adapter, expectedType); } }
/** * Check wether the given Parameter can be statisfied by the container. * * @return <code>true</code> if the Parameter can be verified. * @throws org.picocontainer.PicoInitializationException {@inheritDoc} * @see org.picocontainer.Parameter#isResolvable(org.picocontainer.PicoContainer, * org.picocontainer.ComponentAdapter, java.lang.Class) */ public boolean isResolvable(PicoContainer container, ComponentAdapter adapter, Class expectedType) { return resolveAdapter(container, adapter, expectedType) != null; }
public void verify(PicoContainer container, ComponentAdapter adapter, Class expectedType) { try { super.verify(container, adapter, expectedType); } catch (UnsatisfiableDependenciesException e) { if (collectionParameter != null) { collectionParameter.verify(container, adapter, expectedType); return; } throw e; } }
/** * Accept the visitor for the current {@link Parameter}. If internally a * {@link CollectionComponentParameter}is used, it is visited also. * * @see org.picocontainer.defaults.BasicComponentParameter#accept(org.picocontainer.PicoVisitor) */ public void accept(PicoVisitor visitor) { super.accept(visitor); if (collectionParameter != null) { collectionParameter.accept(visitor); } } }
private ComponentAdapter resolveAdapter(PicoContainer container, ComponentAdapter adapter, Class expectedType) { final ComponentAdapter result = getTargetAdapter(container, expectedType,adapter); if (result == null) { return null; } if (!expectedType.isAssignableFrom(result.getComponentImplementation())) { // check for primitive value if (expectedType.isPrimitive()) { try { final Field field = result.getComponentImplementation().getField("TYPE"); final Class type = (Class) field.get(result.getComponentInstance(null)); if (expectedType.isAssignableFrom(type)) { return result; } } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (ClassCastException e) { } } return null; } return result; }
private static void registerEvaluationContextFactory(final MutablePicoContainer container) { // PoolingEvaluationContextFactory depends on DefaultEvaluationContextFactory. // however both implement the same interface users depend on which causes an ambiguity. // therefore DefaultEvaluationContextFactory should be only visible to PoolingEvaluationContextFactory. final ConstructorInjectionComponentAdapter _serviceCA = new ConstructorInjectionComponentAdapter(DefaultEvaluationContextFactory.class, DefaultEvaluationContextFactory.class); final ConstructorInjectionComponentAdapter _poolingServiceCA = new ConstructorInjectionComponentAdapter(EvaluationContextFactory.class, PoolingEvaluationContextFactory.class, new Parameter[] {BasicComponentParameter.BASIC_DEFAULT, new BasicComponentParameter(DefaultEvaluationContextFactory.class)}); final LocalParameterComponentAdapter _localParamCA = new LocalParameterComponentAdapter(_poolingServiceCA, new ComponentAdapter[] {_serviceCA}); final ComponentAdapter _cachingCA = new CachingComponentAdapter(_localParamCA); container.registerComponent(_cachingCA); }
public Object resolveInstance(PicoContainer container, ComponentAdapter adapter, Class expectedType) { // type check is done in isResolvable Object result = super.resolveInstance(container, adapter, expectedType); if (result == null && collectionParameter != null) { result = collectionParameter.resolveInstance(container, adapter, expectedType); } return result; }
public boolean isResolvable(PicoContainer container, ComponentAdapter adapter, Class expectedType) { if (!super.isResolvable(container, adapter, expectedType)) { if (collectionParameter != null) { return collectionParameter.isResolvable(container, adapter, expectedType); } return false; } return true; }
public void verify(PicoContainer container, ComponentAdapter adapter, Class expectedType) { final ComponentAdapter componentAdapter = resolveAdapter(container, adapter, expectedType); if (componentAdapter == null) { final HashSet set = new HashSet(); set.add(expectedType); throw new UnsatisfiableDependenciesException(adapter, set, container); } componentAdapter.verify(container); }
public Object resolveInstance(PicoContainer container, ComponentAdapter adapter, Class expectedType) { final ComponentAdapter componentAdapter = resolveAdapter(container, adapter, expectedType); if (componentAdapter != null) { return container.getComponentInstance(componentAdapter.getComponentKey()); } return null; }