|
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