/**
  * Sets the discriminator values used by this class.
  * Used for JOINED and SINGLE_TABLE inheritance mapping strategies.
  *
  * @param array $map
  */
 public function setDiscriminatorMap(array $map)
 {
     foreach ($map as $value => $className) {
         if (strpos($className, '\\') === false && strlen($this->namespace)) {
             $className = $this->namespace . '\\' . $className;
         }
         $this->discriminatorMap[$value] = $className;
         if ($this->name == $className) {
             $this->discriminatorValue = $value;
         } else {
             if (!class_exists($className)) {
                 throw MappingException::invalidClassInDiscriminatorMap($className, $this->name);
             }
             if (is_subclass_of($className, $this->name)) {
                 $this->subClasses[] = $className;
             }
         }
     }
 }
 /**
  * Add one entry of the discriminator map with a new class and corresponding name.
  *
  * @param string $name
  * @param string $className
  * @throws MappingException
  * @return void
  */
 public function addDiscriminatorMapClass($name, $className)
 {
     if (strlen($this->namespace) > 0 && strpos($className, '\\') === false) {
         $className = $this->namespace . '\\' . $className;
     }
     $className = ltrim($className, '\\');
     $this->discriminatorMap[$name] = $className;
     if ($this->name == $className) {
         $this->discriminatorValue = $name;
     } else {
         if (!class_exists($className)) {
             throw MappingException::invalidClassInDiscriminatorMap($className, $this->name);
         }
         if (is_subclass_of($className, $this->name) && !in_array($className, $this->subClasses)) {
             $this->subClasses[] = $className;
         }
     }
 }
 /**
  * Adds one entry of the discriminator map with a new class and corresponding name.
  *
  * @param string $name
  * @param string $className
  *
  * @return void
  *
  * @throws MappingException
  */
 public function addDiscriminatorMapClass($name, $className)
 {
     $className = $this->fullyQualifiedClassName($className);
     $className = ltrim($className, '\\');
     $this->discriminatorMap[$name] = $className;
     if ($this->name === $className) {
         $this->discriminatorValue = $name;
         return;
     }
     if (!(class_exists($className) || interface_exists($className))) {
         throw MappingException::invalidClassInDiscriminatorMap($className, $this->name);
     }
     if (is_subclass_of($className, $this->name) && !in_array($className, $this->subClasses)) {
         $this->subClasses[] = $className;
     }
 }