/** * @param Entity $entity * @param string|null $expectedEntityType * @param EntityId|null $expectedEntityId * * @return EntityHolder */ private function newHolder(Entity $entity, $expectedEntityType = null, EntityId $expectedEntityId = null) { $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $codec = new EntityContentDataCodec(new BasicEntityIdParser(), $wikibaseRepo->getInternalEntitySerializer(), $wikibaseRepo->getInternalEntityDeserializer()); $blob = $codec->encodeEntity($entity, CONTENT_FORMAT_JSON); return new DeferredDecodingEntityHolder($codec, $blob, CONTENT_FORMAT_JSON, $expectedEntityType ?: $entity->getType(), $expectedEntityId); }
/** * @param Content $content * @param string|null $format * * @throws InvalidArgumentException * @throws MWContentSerializationException * @return string */ public function serializeContent(Content $content, $format = null) { if (!$content instanceof EntityContent) { throw new InvalidArgumentException('$content must be an instance of EntityContent'); } if ($content->isRedirect()) { $redirect = $content->getEntityRedirect(); return $this->contentCodec->encodeRedirect($redirect, $format); } else { // TODO: If we have an un-decoded Entity in a DeferredDecodingEntityHolder, just re-use // the encoded form. $entity = $content->getEntity(); return $this->contentCodec->encodeEntity($entity, $format); } }