/**
  *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;
 }
Esempio n. 2
0
 /**
  * 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;
 }