ByteBuddy - Changing the set of types of an existing AgentBuilder to modify a subset of the instrumented...
up vote
1
down vote
favorite
I have the following case: I'm using ByteBuddy and its Advice which I applied to several methods of a bunch of classes.
Assuming I have the following classes:
- x.y.z.MyClass1A
- x.y.z.MyClass2A
- x.y.z.MyClass1B
- x.y.z.MyClass2B
To add my Advice to all of these classes, the AgentBuilder is used and the classes are selected using an ElementMatcher: .type(startsWith("x.y.z.MyClass"))
. Using the builders visit(..)
method I apply the Advice.
This works quite fine and, in the end, gives me an instance of ResettableClassFileTransformer
. Now, all of the four example classes contains the advice.
Now, I want to change the ElementMatcher to something like this: .type(endsWith("A"))
I want to archive that only the matching classes (in this example ending with 'A') keeps the advice. The classes which are not matching anymore should be resettet to their original state. Furthermore, if there are other classes that are matching the new ElementMatcher, those should also get the Advice applied.
Is this possible using ByteBuddy and its AgentBuilder?
java byte-buddy
add a comment |
up vote
1
down vote
favorite
I have the following case: I'm using ByteBuddy and its Advice which I applied to several methods of a bunch of classes.
Assuming I have the following classes:
- x.y.z.MyClass1A
- x.y.z.MyClass2A
- x.y.z.MyClass1B
- x.y.z.MyClass2B
To add my Advice to all of these classes, the AgentBuilder is used and the classes are selected using an ElementMatcher: .type(startsWith("x.y.z.MyClass"))
. Using the builders visit(..)
method I apply the Advice.
This works quite fine and, in the end, gives me an instance of ResettableClassFileTransformer
. Now, all of the four example classes contains the advice.
Now, I want to change the ElementMatcher to something like this: .type(endsWith("A"))
I want to archive that only the matching classes (in this example ending with 'A') keeps the advice. The classes which are not matching anymore should be resettet to their original state. Furthermore, if there are other classes that are matching the new ElementMatcher, those should also get the Advice applied.
Is this possible using ByteBuddy and its AgentBuilder?
java byte-buddy
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have the following case: I'm using ByteBuddy and its Advice which I applied to several methods of a bunch of classes.
Assuming I have the following classes:
- x.y.z.MyClass1A
- x.y.z.MyClass2A
- x.y.z.MyClass1B
- x.y.z.MyClass2B
To add my Advice to all of these classes, the AgentBuilder is used and the classes are selected using an ElementMatcher: .type(startsWith("x.y.z.MyClass"))
. Using the builders visit(..)
method I apply the Advice.
This works quite fine and, in the end, gives me an instance of ResettableClassFileTransformer
. Now, all of the four example classes contains the advice.
Now, I want to change the ElementMatcher to something like this: .type(endsWith("A"))
I want to archive that only the matching classes (in this example ending with 'A') keeps the advice. The classes which are not matching anymore should be resettet to their original state. Furthermore, if there are other classes that are matching the new ElementMatcher, those should also get the Advice applied.
Is this possible using ByteBuddy and its AgentBuilder?
java byte-buddy
I have the following case: I'm using ByteBuddy and its Advice which I applied to several methods of a bunch of classes.
Assuming I have the following classes:
- x.y.z.MyClass1A
- x.y.z.MyClass2A
- x.y.z.MyClass1B
- x.y.z.MyClass2B
To add my Advice to all of these classes, the AgentBuilder is used and the classes are selected using an ElementMatcher: .type(startsWith("x.y.z.MyClass"))
. Using the builders visit(..)
method I apply the Advice.
This works quite fine and, in the end, gives me an instance of ResettableClassFileTransformer
. Now, all of the four example classes contains the advice.
Now, I want to change the ElementMatcher to something like this: .type(endsWith("A"))
I want to archive that only the matching classes (in this example ending with 'A') keeps the advice. The classes which are not matching anymore should be resettet to their original state. Furthermore, if there are other classes that are matching the new ElementMatcher, those should also get the Advice applied.
Is this possible using ByteBuddy and its AgentBuilder?
java byte-buddy
java byte-buddy
asked 7 hours ago
Ehler
1557
1557
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371317%2fbytebuddy-changing-the-set-of-types-of-an-existing-agentbuilder-to-modify-a-su%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown