/** * @param EntityDescriptor|EntitiesDescriptor $entityDescriptor * * @return FixedEntityDescriptorStore * * @throws \InvalidArgumentException */ public function add($entityDescriptor) { if ($entityDescriptor instanceof EntityDescriptor) { if (false == $entityDescriptor->getEntityID()) { throw new \InvalidArgumentException('EntityDescriptor must have entityId set'); } $this->descriptors[$entityDescriptor->getEntityID()] = $entityDescriptor; } elseif ($entityDescriptor instanceof EntitiesDescriptor) { foreach ($entityDescriptor->getAllItems() as $item) { $this->add($item); } } else { throw new \InvalidArgumentException('Expected EntityDescriptor or EntitiesDescriptor'); } return $this; }