Comments (9)
What's your interceptor class, including annotations and imports?
from byte-buddy.
Hi , thanks for replying,
Is it technically possible to modify this method?
--> Code:
`import io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig;
import io.confluent.rest.RestConfigException;
import javassist.NotFoundException;
import net.bytebuddy.agent.ByteBuddyAgent;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.asm.MemberSubstitution;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.matcher.ElementMatchers;
import net.bytebuddy.utility.JavaModule;
import org.apache.kafka.common.config.ConfigDef;
import java.lang.instrument.Instrumentation;
import java.security.ProtectionDomain;
import java.util.Properties;
import static net.bytebuddy.matcher.ElementMatchers.*;
public class MainX2 {
public static void main(String[] args) throws RestConfigException, NotFoundException {
SchemaRegistryConfig test = new SchemaRegistryConfig(new Properties());
Instrumentation instrumentation = ByteBuddyAgent.install();
new AgentBuilder.Default()
.with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
.with(AgentBuilder.RedefinitionStrategy.REDEFINITION)
.with(AgentBuilder.RedefinitionStrategy.Listener.StreamWriting.toSystemError())
.with(AgentBuilder.Listener.StreamWriting.toSystemError().withTransformationsOnly())
.with(AgentBuilder.InstallationListener.StreamWriting.toSystemError())
.type(ElementMatchers.named("io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig"))
.transform(new AgentBuilder.Transformer() {
@Override
public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription typeDescription,
ClassLoader classLoader, JavaModule module, ProtectionDomain protectionDomain) {
try {
return builder
.visit(MemberSubstitution.strict()
.method(named("baseSchemaRegistryConfigDef"))
.replaceWith(MainX2.class.getMethod("baseSchemaRegistryConfigDef"))
.on(any()));
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
}).installOn(instrumentation);
SchemaRegistryConfig teSchemaRegistryConfig = new SchemaRegistryConfig(new Properties());
System.out.println(teSchemaRegistryConfig.baseSchemaRegistryConfigDef().configKeys().size());
}
public static ConfigDef baseSchemaRegistryConfigDef() {
return new ConfigDef();
}
`
I would like to know if it is possible to replace the body of that method with a modified one. I have tried some examples but no success.
from byte-buddy.
It is, but the static initializer will not be rerun on a retransformation. In this case, you would need to hook before the class is loaded for the first time.
from byte-buddy.
I agree Rafael, with AgentBuilder could I achieve it?
If you have any reference it would help me a lot for what I am looking for
from byte-buddy.
You mean rerun the static initializer? That is not possible, unfortunately, the JVM does not support it.
from byte-buddy.
If I understood what you indicated... ("you would need to hook before the class is loaded for the first time.")
could you give me some reference on how I could resolve this case? thank you so much :)
from byte-buddy.
@raphw
Could you just tell me which api to use?
from byte-buddy.
You are doing it right, but there's nothing that can fix your problem if the initializer already ran.
from byte-buddy.
Thank you very much for the support! , I found everything about bytebuddy interesting.
from byte-buddy.
Related Issues (20)
- Setting value in constructor aliases collections HOT 5
- Is it possible to lazily instantiate AllArguments?
- install transformer takes too long time HOT 3
- Example that could be used in documentation HOT 6
- Issues attaching to Solaris Hotspot on Solaris 10 and 11. HOT 1
- How to generate multi-level generic code ? HOT 2
- java.lang.IllegalAccessError HOT 15
- InjectionStrategy.UsingUnsafe.OfFactory HOT 1
- java.lang.IncompatibleClassChangeError: Interface method reference: java.util.stream.Sink.begin(J)V HOT 1
- defineField not working well HOT 1
- JDK class enhancements HOT 3
- ByteBuddy is incompatible with CDS due to the Java 6 baseline HOT 3
- No JPMS module-info or Automatic-Module-Name in byte-buddy-dep HOT 2
- How to call method self when use Advice HOT 4
- "Set value cannot be assigned" when setting lambda to static field in type initializer HOT 4
- Publish blocking HOT 9
- Return value if matches condition or call original method HOT 5
- Is `@Advice.SuperCall` supported? How can I call `super.originalMethod()` inside my instrumenting code? HOT 1
- Side effects of bytebuddy rebasing to weaving process? HOT 2
- Can ByteBuddy provide a list of the JDK classes it makes use of?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from byte-buddy.