*
* @param mixinClass the mixin class
* @param mixinCalledFromLoader classloader of the target class advised by the mixin (app server packaging)
*/
private static MixinFactory createMixinFactory(final Class mixinClass, final ClassLoader mixinCalledFromLoader) {
final MixinDefinition mixinDefinition = getMixinDefinition(mixinClass, mixinCalledFromLoader);
String factoryClassName = mixinDefinition.getFactoryClassName();
try {
Class containerClass;
if (factoryClassName == null) {
containerClass = ContextClassLoader.forName(mixinClass.getClassLoader(), DEFAULT_MIXIN_FACTORY);
} else {
containerClass = ContextClassLoader.forName(mixinClass.getClassLoader(), factoryClassName);
}
Constructor constructor = containerClass.getConstructor(new Class[]{Class.class, DeploymentModel.class});
final MixinFactory factory = (MixinFactory) constructor.newInstance(
new Object[]{mixinClass, mixinDefinition.getDeploymentModel()}
);
return factory;
} catch (InvocationTargetException e) {
throw new DefinitionException(e.getTargetException().toString());
} catch (NoSuchMethodException e) {