/** * Write an entity type and associated attributes. * * @param ResourceType $resourceType Resource type * @param array $associationTypesInResourceTypeNamespace Collection of * association types for the given resource types * array(string, AssociationType) * * @return nothing */ private function _writeEntityType(ResourceType $resourceType, $associationTypesInResourceTypeNamespace) { $this->_iOdataWriter->startElement(ODataConstants::ENTITY_TYPE); $this->_iOdataWriter->writeAttribute(ODataConstants::NAME, $resourceType->getName()); if ($resourceType->isAbstract()) { $this->_iOdataWriter->writeAttribute(ODataConstants::ABSTRACT1, "true"); } if ($resourceType->isMediaLinkEntry() && (!$resourceType->hasBaseType() || $resourceType->hasBaseType() && $resourceType->getBaseType()->isMediaLinkEntry())) { $this->_iOdataWriter->writeAttributeNs(ODataConstants::ODATA_METADATA_NAMESPACE_PREFIX, ODataConstants::DATAWEB_ACCESS_HASSTREAM_ATTRIBUTE, null, "true"); } if ($resourceType->hasBaseType()) { $this->_iOdataWriter->writeAttribute(ODataConstants::BASE_TYPE, $resourceType->getBaseType()->getFullName()); } else { $this->_iOdataWriter->startElement(ODataConstants::KEY); foreach ($resourceType->getKeyProperties() as $resourceProperty) { $this->_iOdataWriter->startElement(ODataConstants::PROPERTY_REF); $this->_iOdataWriter->writeAttribute(ODataConstants::NAME, $resourceProperty->getName()); $this->_iOdataWriter->endElement(); } $this->_iOdataWriter->endElement(); } $this->_writeProperties($resourceType, $associationTypesInResourceTypeNamespace); $this->_writeNamedStreams($resourceType); $this->_iOdataWriter->endElement(); }