X-czh commented on issue #2170:
URL: https://github.com/apache/fury/issues/2170#issuecomment-2823017033

   I managed to capture the generated class:
   ```java
   package org.apache.flink.api.java.typeutils.runtime.fury;
   
   import org.apache.fury.Fury;
   import org.apache.fury.memory.MemoryBuffer;
   import org.apache.fury.resolver.NoRefResolver;
   import org.apache.fury.memory.Platform;
   import org.apache.fury.resolver.ClassInfo;
   import org.apache.fury.resolver.ClassInfoHolder;
   import org.apache.fury.resolver.ClassResolver;
   import org.apache.fury.builder.Generated;
   import org.apache.fury.serializer.CodegenSerializer.LazyInitBeanSerializer;
   import org.apache.fury.serializer.EnumSerializer;
   import org.apache.fury.serializer.Serializer;
   import org.apache.fury.serializer.StringSerializer;
   import org.apache.fury.serializer.ObjectSerializer;
   import org.apache.fury.serializer.CompatibleSerializer;
   import org.apache.fury.serializer.collection.AbstractCollectionSerializer;
   import org.apache.fury.serializer.collection.AbstractMapSerializer;
   import org.apache.fury.builder.Generated.GeneratedObjectSerializer;
   
   public final class PojoFuryCodec_0 extends GeneratedObjectSerializer {
   
     private final NoRefResolver refResolver;
     private final ClassResolver classResolver;
     private final StringSerializer strSerializer;
     private Fury fury;
     private ClassInfo mapClassInfo;
     private final StringSerializer stringSerializer;
     private ClassInfo listClassInfo;
     private final ClassInfoHolder map2ClassInfoHolder;
     private final ClassInfoHolder list2ClassInfoHolder;
   
     public PojoFuryCodec_0(Fury fury, Class classType) {
         super(fury, classType);
         this.fury = fury;
         fury.getClassResolver().setSerializerIfAbsent(classType, this);
     
         org.apache.fury.resolver.RefResolver refResolver0 = 
fury.getRefResolver();
         refResolver = ((NoRefResolver)refResolver0);
         classResolver = fury.getClassResolver();
         strSerializer = fury.getStringSerializer();
         mapClassInfo = classResolver.nilClassInfo();
         stringSerializer = 
((StringSerializer)classResolver.getRawSerializer(java.lang.String.class));
         listClassInfo = classResolver.nilClassInfo();
         map2ClassInfoHolder = classResolver.nilClassInfoHolder();
         list2ClassInfoHolder = classResolver.nilClassInfoHolder();
     }
   
     private AbstractMapSerializer writeMapClassInfo(MemoryBuffer memoryBuffer, 
java.util.Map map1) {
         ClassResolver classResolver = this.classResolver;
         Class value = mapClassInfo.getCls();
         Class cls = map1.getClass();
         if ((value != cls)) {
             mapClassInfo = classResolver.getClassInfo(cls);
         }
         classResolver.writeClass(memoryBuffer, mapClassInfo);
         return ((AbstractMapSerializer)mapClassInfo.getSerializer());
     }
   
     private void writeCollection(AbstractCollectionSerializer 
abstractCollectionSerializer, java.util.List list1, MemoryBuffer memoryBuffer1) 
{
         if (abstractCollectionSerializer.supportCodegenHook()) {
             java.util.List list0 = 
(java.util.List)abstractCollectionSerializer.onCollectionWrite(memoryBuffer1, 
list1);
             int value0 = list0.size();
             if ((value0 > 0)) {
                 int value1 = 
abstractCollectionSerializer.writeNullabilityHeader(memoryBuffer1, list0);
                 boolean hasNull = (value1 & 2) == 2;
                 for (int i = 0; i < value0; i+=1) {
                   Object object = list0.get(i);
                   Long castedValue = (Long)object;
                   if (hasNull) {
                       if ((castedValue == null)) {
                           memoryBuffer1.writeByte(((byte)-3));
                       } else {
                           memoryBuffer1.writeByte(((byte)-1));
                           memoryBuffer1.writeSliInt64(castedValue);
                       }
                   } else {
                       memoryBuffer1.writeSliInt64(castedValue);
                   }
                 }
             }
         } else {
             abstractCollectionSerializer.write(memoryBuffer1, list1);
         }
     }
   
     private java.util.Map.Entry writeChunk(MemoryBuffer memoryBuffer2, 
java.util.Map.Entry entry, java.util.Iterator iterator) {
         ClassResolver classResolver = this.classResolver;
         StringSerializer stringSerializer = this.stringSerializer;
         String key = (String)entry.getKey();
         java.util.List value2 = (java.util.List)entry.getValue();
         Class valueType = value2.getClass();
         memoryBuffer2.writeInt16(((short)-1));
         int chunkSizeOffset = memoryBuffer2.writerIndex() - 1;
         int chunkHeader = 4;
         if ((listClassInfo.getCls() != valueType)) {
             listClassInfo = classResolver.getClassInfo(valueType);
         }
         classResolver.writeClass(memoryBuffer2, listClassInfo);
         AbstractCollectionSerializer serializer = 
(AbstractCollectionSerializer)listClassInfo.getSerializer();
         memoryBuffer2.putByte((chunkSizeOffset - 1), chunkHeader);
         int chunkSize = 0;
         while (true) {
           if (((key == null) || (value2.getClass() != valueType))) {
               break;
           }
           strSerializer.writeCharsString(memoryBuffer2, key);
           this.writeCollection(serializer, value2, memoryBuffer2);
           chunkSize = (chunkSize + 1);
           if (iterator.hasNext()) {
               entry = ((java.util.Map.Entry)iterator.next());
               key = ((String)entry.getKey());
               value2 = ((java.util.List)entry.getValue());
           } else {
               entry = null;
               break;
           }
           if ((chunkSize == 255)) {
               break;
           }
         }
         memoryBuffer2.putByte(chunkSizeOffset, chunkSize);
         return entry;
     }
   
     private void writeFields(MemoryBuffer memoryBuffer3, 
org.apache.flink.api.java.typeutils.runtime.fury.Pojo pojo1) {
         StringSerializer stringSerializer = this.stringSerializer;
         java.util.Map stringInt64ListMap = pojo1.stringInt64ListMap;
         if ((stringInt64ListMap == null)) {
             memoryBuffer3.writeByte(((byte)-3));
         } else {
             memoryBuffer3.writeByte(((byte)-1));
             AbstractMapSerializer abstractMapSerializer = 
this.writeMapClassInfo(memoryBuffer3, stringInt64ListMap);
             if (abstractMapSerializer.supportCodegenHook()) {
                 java.util.Map map0 = 
abstractMapSerializer.onMapWrite(memoryBuffer3, stringInt64ListMap);
                 if ((!map0.isEmpty())) {
                     java.util.Iterator iterator0 = map0.entrySet().iterator();
                     java.util.Map.Entry entry0 = 
(java.util.Map.Entry)iterator0.next();
                     while ((entry0 != null)) {
                       entry0 = 
abstractMapSerializer.writeJavaNullChunk(memoryBuffer3, entry0, iterator0, 
stringSerializer, null);
                       if ((entry0 != null)) {
                           entry0 = this.writeChunk(memoryBuffer3, entry0, 
iterator0);
                       }
                     }
                 }
             } else {
                 abstractMapSerializer.write(memoryBuffer3, stringInt64ListMap);
             }
         }
     }
   
     private Object readCollection(MemoryBuffer memoryBuffer4, 
AbstractCollectionSerializer abstractCollectionSerializer1) {
         Object object2;
         if (abstractCollectionSerializer1.supportCodegenHook()) {
             java.util.Collection collection = 
abstractCollectionSerializer1.newCollection(memoryBuffer4);
             int size = abstractCollectionSerializer1.getAndClearNumElements();
             if ((size > 0)) {
                 boolean hasNull0 = (memoryBuffer4.readByte() & 2) == 2;
                 for (int i0 = 0; i0 < size; i0+=1) {
                   if (hasNull0) {
                       if ((memoryBuffer4.readByte() != ((byte)-3))) {
                           collection.add(memoryBuffer4._readSliInt64OnLE());
                       } else {
                           collection.add(null);
                       }
                   } else {
                       collection.add(memoryBuffer4._readSliInt64OnLE());
                   }
                 }
             }
             Object object0 = 
abstractCollectionSerializer1.onCollectionRead(collection);
             object2 = object0;
         } else {
             Object object1 = abstractCollectionSerializer1.read(memoryBuffer4);
             object2 = object1;
         }
         return object2;
     }
   
     private int readChunk(MemoryBuffer memoryBuffer5, int value3, int value4, 
java.util.Map map3) {
         int chunkSize0 = memoryBuffer5.readUnsignedByte();
         AbstractCollectionSerializer serializer0 = 
(AbstractCollectionSerializer)classResolver.readClassInfo(memoryBuffer5, 
list2ClassInfoHolder).getSerializer();
         for (int i1 = 0; i1 < chunkSize0; i1+=1) {
           String string = strSerializer.readCharsString(memoryBuffer5);
           Object object3 = this.readCollection(memoryBuffer5, serializer0);
           map3.put(string, object3);
           value3 = (value3 - 1);
         }
         if ((value3 > 0)) {
             return ((value3 << 8) | memoryBuffer5.readUnsignedByte());
         } else {
             return 0;
         }
     }
   
     private void 
readFields(org.apache.flink.api.java.typeutils.runtime.fury.Pojo pojo2, 
MemoryBuffer memoryBuffer6) {
         StringSerializer stringSerializer = this.stringSerializer;
         if ((memoryBuffer6.readByte() != ((byte)-3))) {
             AbstractMapSerializer mapSerializer = 
(AbstractMapSerializer)classResolver.readClassInfo(memoryBuffer6, 
map2ClassInfoHolder).getSerializer();
             Object object5;
             if (mapSerializer.supportCodegenHook()) {
                 java.util.Map map4 = mapSerializer.newMap(memoryBuffer6);
                 int size0 = mapSerializer.getAndClearNumElements();
                 int value5;
                 if ((size0 == 0)) {
                     value5 = 0;
                 } else {
                     value5 = memoryBuffer6.readUnsignedByte();
                 }
                 while ((size0 > 0)) {
                   long sizeAndHeader = 
mapSerializer.readJavaNullChunk(memoryBuffer6, map4, value5, size0, 
stringSerializer, null);
                   value5 = ((int)(sizeAndHeader & 255));
                   size0 = ((int)(sizeAndHeader >>> 8));
                   int value6 = this.readChunk(memoryBuffer6, size0, value5, 
map4);
                   value5 = (value6 & 255);
                   size0 = (value6 >>> 8);
                 }
                 object5 = mapSerializer.onMapRead(map4);
             } else {
                 Object object4 = mapSerializer.read(memoryBuffer6);
                 object5 = object4;
             }
             
             pojo2.stringInt64ListMap = ((java.util.Map)object5);
         } else {
             pojo2.stringInt64ListMap = null;
         }
     }
   
     @Override public final void write(MemoryBuffer buffer, Object obj) {
         org.apache.flink.api.java.typeutils.runtime.fury.Pojo pojo3 = 
(org.apache.flink.api.java.typeutils.runtime.fury.Pojo)obj;
         this.writeFields(buffer, pojo3);
     }
   
     @Override public final Object read(MemoryBuffer buffer) {
         org.apache.flink.api.java.typeutils.runtime.fury.Pojo pojo4 = new 
org.apache.flink.api.java.typeutils.runtime.fury.Pojo();
         refResolver.reference(pojo4);
         this.readFields(pojo4, buffer);
         return pojo4;
     }
   
   }
   ```


-- 
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