/** * Copy-constructor that does not copy transient fields. They will be initialized once required. */ protected KryoSerializer(KryoSerializer<T> toCopy) { this.type = checkNotNull(toCopy.type, "Type class cannot be null."); this.defaultSerializerClasses = toCopy.defaultSerializerClasses; this.defaultSerializers = new LinkedHashMap<>(toCopy.defaultSerializers.size()); this.kryoRegistrations = new LinkedHashMap<>(toCopy.kryoRegistrations.size()); // deep copy the serializer instances in defaultSerializers for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>> entry : toCopy.defaultSerializers.entrySet()) { this.defaultSerializers.put(entry.getKey(), deepCopySerializer(entry.getValue())); } // deep copy the serializer instances in kryoRegistrations for (Map.Entry<String, KryoRegistration> entry : toCopy.kryoRegistrations.entrySet()) { KryoRegistration kryoRegistration = entry.getValue(); if (kryoRegistration.getSerializerDefinitionType() == KryoRegistration.SerializerDefinitionType.INSTANCE) { ExecutionConfig.SerializableSerializer<? extends Serializer<?>> serializerInstance = kryoRegistration.getSerializableSerializerInstance(); if (serializerInstance != null) { kryoRegistration = new KryoRegistration( kryoRegistration.getRegisteredClass(), deepCopySerializer(serializerInstance)); } } this.kryoRegistrations.put(entry.getKey(), kryoRegistration); } }
/** * Copy-constructor that does not copy transient fields. They will be initialized once required. */ protected KryoSerializer(KryoSerializer<T> toCopy) { this.type = checkNotNull(toCopy.type, "Type class cannot be null."); this.defaultSerializerClasses = toCopy.defaultSerializerClasses; this.defaultSerializers = new LinkedHashMap<>(toCopy.defaultSerializers.size()); this.kryoRegistrations = new LinkedHashMap<>(toCopy.kryoRegistrations.size()); // deep copy the serializer instances in defaultSerializers for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>> entry : toCopy.defaultSerializers.entrySet()) { this.defaultSerializers.put(entry.getKey(), deepCopySerializer(entry.getValue())); } // deep copy the serializer instances in kryoRegistrations for (Map.Entry<String, KryoRegistration> entry : toCopy.kryoRegistrations.entrySet()) { KryoRegistration kryoRegistration = entry.getValue(); if (kryoRegistration.getSerializerDefinitionType() == KryoRegistration.SerializerDefinitionType.INSTANCE) { ExecutionConfig.SerializableSerializer<? extends Serializer<?>> serializerInstance = kryoRegistration.getSerializableSerializerInstance(); if (serializerInstance != null) { kryoRegistration = new KryoRegistration( kryoRegistration.getRegisteredClass(), deepCopySerializer(serializerInstance)); } } this.kryoRegistrations.put(entry.getKey(), kryoRegistration); } }
/** * Copy-constructor that does not copy transient fields. They will be initialized once required. */ protected KryoSerializer(KryoSerializer<T> toCopy) { this.type = checkNotNull(toCopy.type, "Type class cannot be null."); this.defaultSerializerClasses = toCopy.defaultSerializerClasses; this.defaultSerializers = new LinkedHashMap<>(toCopy.defaultSerializers.size()); this.kryoRegistrations = new LinkedHashMap<>(toCopy.kryoRegistrations.size()); // deep copy the serializer instances in defaultSerializers for (Map.Entry<Class<?>, ExecutionConfig.SerializableSerializer<?>> entry : toCopy.defaultSerializers.entrySet()) { this.defaultSerializers.put(entry.getKey(), deepCopySerializer(entry.getValue())); } // deep copy the serializer instances in kryoRegistrations for (Map.Entry<String, KryoRegistration> entry : toCopy.kryoRegistrations.entrySet()) { KryoRegistration kryoRegistration = entry.getValue(); if (kryoRegistration.getSerializerDefinitionType() == KryoRegistration.SerializerDefinitionType.INSTANCE) { ExecutionConfig.SerializableSerializer<? extends Serializer<?>> serializerInstance = kryoRegistration.getSerializableSerializerInstance(); if (serializerInstance != null) { kryoRegistration = new KryoRegistration( kryoRegistration.getRegisteredClass(), deepCopySerializer(serializerInstance)); } } this.kryoRegistrations.put(entry.getKey(), kryoRegistration); } }