Munoon opened a new issue, #1481:
URL: https://github.com/apache/incubator-fury/issues/1481

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/incubator-fury/issues) and found no similar 
issues.
   
   
   ### Version
   
   0.4.1
   
   ### Component(s)
   
   Java
   
   ### Minimal reproduce step
   
   ```java
   import io.fury.Fury;
   import io.fury.memory.MemoryBuffer;
   import io.fury.serializer.Serializer;
   import io.fury.serializer.collection.MapSerializers;
   
   import java.util.HashMap;
   
   public class Test {
       public static void main(String[] args) {
           Fury fury = Fury.builder().requireClassRegistration(false).build();
           fury.registerSerializer(Storage.class, StorageSerializer.class);
   
           HashMap<Key, String> map = new HashMap<>();
           map.put(new Key(1, 2), "abc");
           Storage storage = new Storage(map);
           byte[] data = fury.serializeJavaObject(storage);
   
           Storage deserializedStorage = fury.deserializeJavaObject(data, 
Storage.class);
           System.out.println(deserializedStorage.map().get(new Key(1, 0)));
       }
   
       public static class StorageSerializer extends Serializer<Storage> {
           public StorageSerializer(Fury fury) {
               super(fury, Storage.class);
           }
   
           @Override
           public void write(MemoryBuffer buffer, Storage value) {
               MapSerializers.HashMapSerializer mapSerializer = new 
MapSerializers.HashMapSerializer(fury);
               mapSerializer.setKeySerializer(new KeySerializer(fury));
   
               mapSerializer.write(buffer, value.map());
           }
   
           @Override
           public Storage read(MemoryBuffer buffer) {
               MapSerializers.HashMapSerializer mapSerializer;
               mapSerializer = new MapSerializers.HashMapSerializer(fury);
               mapSerializer.setKeySerializer(new KeySerializer(fury));
   
               HashMap<Key, String> map = mapSerializer.read(buffer);
               return new Storage(map);
           }
       }
   
       public static class KeySerializer extends Serializer<Key> {
   
           public KeySerializer(Fury fury) {
               super(fury, Key.class);
           }
   
           @Override
           public void write(MemoryBuffer buffer, Key value) {
               buffer.writeInt(value.a());
           }
   
           @Override
           public Key read(MemoryBuffer buffer) {
               int a = buffer.readInt();
               return new Key(a, 0);
           }
       }
   
       public record Storage(
               HashMap<Key, String> map
       ) {
       }
   
       public record Key(
               int a,
               int b
       ) {
       }
   }
   ```
   
   ### What did you expect to see?
   
   Better performance. Also I don't wont to initialize 
`MapSerializers.HashMapSerializer` on each read/write.
   
   ### What did you see instead?
   
   If I reuse `MapSerializers.HashMapSerializer`, which was created in the 
serializer constructor for example, I got an exception.
   
   ### Anything Else?
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [X] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to