|
3 | 3 | import io.kafbat.ui.serde.api.SchemaDescription; |
4 | 4 | import io.kafbat.ui.serde.api.Serde; |
5 | 5 | import java.io.Closeable; |
6 | | -import java.lang.reflect.InvocationTargetException; |
7 | 6 | import java.util.Optional; |
8 | 7 | import java.util.function.Supplier; |
9 | 8 | import java.util.regex.Pattern; |
10 | 9 | import javax.annotation.Nullable; |
11 | 10 | import lombok.Getter; |
12 | 11 | import lombok.RequiredArgsConstructor; |
13 | 12 | import lombok.extern.slf4j.Slf4j; |
14 | | -import org.springframework.cglib.proxy.Proxy; |
| 13 | +import org.apache.kafka.common.header.Headers; |
15 | 14 |
|
16 | 15 | @Slf4j |
17 | 16 | @RequiredArgsConstructor |
@@ -80,20 +79,20 @@ public boolean canDeserialize(String topic, Serde.Target type) { |
80 | 79 | } |
81 | 80 |
|
82 | 81 | public Serde.Serializer serializer(String topic, Serde.Target type) { |
83 | | - var serializer = serde.serializer(topic, type); |
84 | | - // Create a dynamic proxy instance for the Serde.Serializer interface |
85 | | - return (Serde.Serializer) Proxy.newProxyInstance( |
86 | | - classLoader, |
87 | | - new Class<?>[] { Serde.Serializer.class }, |
88 | | - (proxy, method, args) -> wrapWithClassloader(() -> { // Invocation handler to wrap method calls |
89 | | - try { |
90 | | - // Invoke the actual serializer method with the provided arguments |
91 | | - return method.invoke(serializer, args); |
92 | | - } catch (IllegalAccessException | InvocationTargetException e) { |
93 | | - throw new RuntimeException("Error invoking serializer method", e.getCause()); |
94 | | - } |
95 | | - }) |
96 | | - ); |
| 82 | + return wrapWithClassloader(() -> { |
| 83 | + var serializer = serde.serializer(topic, type); |
| 84 | + return new Serde.Serializer() { |
| 85 | + @Override |
| 86 | + public byte[] serialize(String input) { |
| 87 | + return wrapWithClassloader(() -> serializer.serialize(input)); |
| 88 | + } |
| 89 | + |
| 90 | + @Override |
| 91 | + public byte[] serialize(String input, Headers headers) { |
| 92 | + return wrapWithClassloader(() -> serializer.serialize(input, headers)); |
| 93 | + } |
| 94 | + }; |
| 95 | + }); |
97 | 96 | } |
98 | 97 |
|
99 | 98 | public Serde.Deserializer deserializer(String topic, Serde.Target type) { |
|
0 commit comments