/** *Deserialize an object with the given type signature. * * @throws SerializationException * @param string $typeSignature the type signature to deserialize * @return Object the deserialized object */ protected function deserialize($typeSignature) { $this->logger->info("deserialize :" . $typeSignature); $serializedInstRef = SerializabilityUtil::decodeSerializedInstanceReference($typeSignature); $this->logger->info("serializedInstRef : " . $serializedInstRef->getName() . " " . $serializedInstRef->getSignature()); /*MappedClass*/ $instanceClass = $this->mappedClassLoader->loadMappedClass($serializedInstRef->getName()); $instanceClass->setCRC($serializedInstRef->getSignature()); $this->serializationPolicy->validateDeserialize($instanceClass); // {90%} $this->validateTypeVersions($instanceClass, $serializedInstRef); // {cut} // Class customSerializer = SerializabilityUtil.hasCustomFieldSerializer(instanceClass); // instance = instantiate(customSerializer, instanceClass); // rememberDecodedObject(instance); $customSerializer = SerializabilityUtil::hasCustomFieldSerializer($instanceClass); // {100%} $instance = $this->instantiate($customSerializer, $instanceClass); // {100%} $this->rememberDecodedObject(&$instance); $this->deserializeImpl($customSerializer, $instanceClass, &$instance); return $instance; //$instance = $customSerializer->instantiate($this); //$instance = $this->deserializeImpl($customSerializer, $serializedInstRef->getName()); //$instance = $this->deserializeImpl($customSerializer, $serializedInstRef->getName(), $instance); //return $instance; }
/** * Returns the {@link Class} instance for the named class or primitive type. * * @param string $serializedName the serialized name of a class or primitive type * @param MappedClassLoader $mappedClassLoader the classLoader used to load {@link Class}es * @return MappedClass instance for the given type name * @throws ClassNotFoundException if the named type was not found */ private static function getClassFromSerializedName($serializedName, MappedClassLoader $mappedClassLoader) { // TODO: create TYPE_NAMES for primitive classes // $value = TYPE_NAMES.get(serializedName); //if (value != null) { // return value; //} return $mappedClassLoader->loadMappedClass($serializedName); }
/** *Deserialize an object with the given type signature. * * @throws SerializationException * @param string $typeSignature the type signature to deserialize * @return Object the deserialized object */ protected function deserialize($typeSignature) { $this->logger->debug("deserialize :" . $typeSignature); $serializedInstRef = SerializabilityUtil::decodeSerializedInstanceReference($typeSignature); $this->logger->debug("serializedInstRef : " . $serializedInstRef->getName() . " " . $serializedInstRef->getSignature()); /*MappedClass*/ $instanceClass = $this->mappedClassLoader->loadMappedClass($serializedInstRef->getName()); $instanceClass->setCRC($serializedInstRef->getSignature()); assert($this->serializationPolicy !== null); $this->serializationPolicy->validateDeserialize($instanceClass); // {90%} $this->validateTypeVersions($instanceClass, $serializedInstRef); // {cut} // Class customSerializer = SerializabilityUtil.hasCustomFieldSerializer(instanceClass); // instance = instantiate(customSerializer, instanceClass); // rememberDecodedObject(instance); $customSerializer = SerializabilityUtil::hasCustomFieldSerializer($instanceClass); // {100%} $index = $this->reserveDecodedObjectIndex(); $instance = $this->instantiate($customSerializer, $instanceClass); // {100%} $this->rememberDecodedObject($index, $instance); $replacement = $this->deserializeImpl($customSerializer, $instanceClass, $instance); // It's possible that deserializing an object requires the original proxy // object to be replaced. if ($instance !== $replacement) { $this->rememberDecodedObject($index, $instance); $instance = $replacement; } return $instance; //$instance = $customSerializer->instantiate($this); //$instance = $this->deserializeImpl($customSerializer, $serializedInstRef->getName()); //$instance = $this->deserializeImpl($customSerializer, $serializedInstRef->getName(), $instance); //return $instance; }