Actually, here's a simpler first step:
Figure out if there are ANY "SUBCLASS" methods which do NOT want an automatic makeIngredients.
If none, then do makeIngredients for everything.
If there is one or two, figure out why - and figure out how to to do makeIngredients for everything except the tiny handful of exceptions, rather than every SUBCLASS, most of which do not want to be exceptions.
Looking at the list of classes from that grep that I gave you and the list of mixing types in CreateItemRequest.constructInstance that are handled by subclasses, the only one which does not do "makeIngredients" is CLIPART and ClipartRequest. No surprise, since that class creates things by summoning from a tome, rather than using ingredients, per se. Perhaps CreateItemRequest.run() should have:
Code:
if ( this.mixingMethod != CraftingType.CLIPART &&
this.mixingMethod != CraftingType.ROLLING_PIN &&
!this.makeIngredients() )
{
return;
}
instead of
Code:
if ( this.mixingMethod != CraftingType.SUBCLASS &&
this.mixingMethod != CraftingType.ROLLING_PIN &&
!this.makeIngredients() )
{
return;
}
... and all the simplification that would entail in the run() methods of the various subclasses.
Go for it.