}
*/
final protected Container wrapComponentInstances(
final Class decoratingComponentAdapterClass, final Container yan, final Object[] wrapperDependencies) {
assertTrue(DelegatingComponent.class.isAssignableFrom(decoratingComponentAdapterClass));
final Container mutablePicoContainer = new DefaultContainer();
final int size = (wrapperDependencies != null ? wrapperDependencies.length : 0) + 1;
final Collection allComponentAdapters = yan.getComponents();
for (final Iterator iter = allComponentAdapters.iterator(); iter.hasNext();) {
//final Parameter[] parameters = new Parameter[size];
final Creator[] params = new Creator[size];
params[0] = Components.value(iter.next()).guard().singleton();
for (int i = 1; i < params.length; i++) {
Component tmp = Components.value(wrapperDependencies[i - 1]);
switch(i%3){//to test all singleton methods.
case 0:
tmp = tmp.singleton(new GlobalScope());
break;
case 1:
tmp = tmp.singleton(new ThreadLocalScope());
case 2:
tmp = tmp.singleton();
}
params[i] = tmp.guard();
}
Component cc = Components.ctor(decoratingComponentAdapterClass)
.withArguments(params);
final Container instantiatingPicoContainer = new DefaultContainer();
instantiatingPicoContainer.registerComponent("decorator",
cc);
mutablePicoContainer.registerComponent(
(Component) instantiatingPicoContainer.getInstance("decorator"));
}
return mutablePicoContainer;
}