Thank you for the detailed explanation. Nice to hear that your proof of concept is working.
As mentioned in my previous comment, the setComponentFactory method in Context should take a ComponentFactory instance, not a string of the factory name. It's just more efficient and is a small change with respect to what you developed already. You would simply move the code that instantiates a ComponentFactory given a clas name (a string), to ComponentFactoryAction which would also inject the instance into Context. Easy as pie.
As mentioned in my previous comment, the setComponentFactory method in Context should take a ComponentFactory instance, not a string of the factory name. It's just more efficient and is a small change with respect to what you developed already. You would simply move the code that instantiates a ComponentFactory given a clas name (a string), to ComponentFactoryAction which would also inject the instance into Context. Easy as pie.