Load-time weaving support for WildFly 13+ (#22297)
Load-time weaving support for WildFly 13+ (JBoss Modules 1.8+)
This commit is contained in:
parent
248d3f8e8b
commit
85474297be
|
@ -41,7 +41,8 @@ public class JBossLoadTimeWeaver implements LoadTimeWeaver {
|
||||||
|
|
||||||
private static final String DELEGATING_TRANSFORMER_CLASS_NAME =
|
private static final String DELEGATING_TRANSFORMER_CLASS_NAME =
|
||||||
"org.jboss.as.server.deployment.module.DelegatingClassFileTransformer";
|
"org.jboss.as.server.deployment.module.DelegatingClassFileTransformer";
|
||||||
|
|
||||||
|
private static final String WRAPPER_TRANSFORMER_CLASS_NAME = "org.jboss.modules.JLIClassTransformer";
|
||||||
|
|
||||||
private final ClassLoader classLoader;
|
private final ClassLoader classLoader;
|
||||||
|
|
||||||
|
@ -76,12 +77,25 @@ public class JBossLoadTimeWeaver implements LoadTimeWeaver {
|
||||||
}
|
}
|
||||||
transformer.setAccessible(true);
|
transformer.setAccessible(true);
|
||||||
|
|
||||||
this.delegatingTransformer = transformer.get(classLoader);
|
Object suggestedTransformer = transformer.get(classLoader);
|
||||||
if (!this.delegatingTransformer.getClass().getName().equals(DELEGATING_TRANSFORMER_CLASS_NAME)) {
|
|
||||||
|
if (suggestedTransformer.getClass().getName().equals(WRAPPER_TRANSFORMER_CLASS_NAME)) {
|
||||||
|
Field wrappedTransformer = ReflectionUtils.findField(suggestedTransformer.getClass(), "transformer");
|
||||||
|
if (wrappedTransformer == null) {
|
||||||
|
throw new IllegalArgumentException("Could not find 'transformer' field on JBoss ClassTransformer: " +
|
||||||
|
suggestedTransformer.getClass().getName());
|
||||||
|
}
|
||||||
|
wrappedTransformer.setAccessible(true);
|
||||||
|
suggestedTransformer = wrappedTransformer.get(suggestedTransformer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!suggestedTransformer.getClass().getName().equals(DELEGATING_TRANSFORMER_CLASS_NAME)) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Transformer not of the expected type DelegatingClassFileTransformer: " +
|
"Transformer not of the expected type DelegatingClassFileTransformer: " +
|
||||||
this.delegatingTransformer.getClass().getName());
|
suggestedTransformer.getClass().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.delegatingTransformer = suggestedTransformer;
|
||||||
|
|
||||||
Method addTransformer = ReflectionUtils.findMethod(this.delegatingTransformer.getClass(),
|
Method addTransformer = ReflectionUtils.findMethod(this.delegatingTransformer.getClass(),
|
||||||
"addTransformer", ClassFileTransformer.class);
|
"addTransformer", ClassFileTransformer.class);
|
||||||
|
|
Loading…
Reference in New Issue