private function addEmbedMapping(ClassMetadataInfo $class, $embed, $type)
{
$attributes = $embed->attributes();
$defaultStrategy = $type == 'one' ? ClassMetadataInfo::STORAGE_STRATEGY_SET : CollectionHelper::DEFAULT_STRATEGY;
$mapping = array('type' => $type, 'embedded' => true, 'targetDocument' => isset($attributes['target-document']) ? (string) $attributes['target-document'] : null, 'collectionClass' => isset($attributes['collection-class']) ? (string) $attributes['collection-class'] : null, 'name' => (string) $attributes['field'], 'strategy' => isset($attributes['strategy']) ? (string) $attributes['strategy'] : $defaultStrategy);
if (isset($attributes['fieldName'])) {
$mapping['fieldName'] = (string) $attributes['fieldName'];
}
if (isset($embed->{'discriminator-field'})) {
$attr = $embed->{'discriminator-field'};
$mapping['discriminatorField'] = (string) $attr['name'];
}
if (isset($embed->{'discriminator-map'})) {
foreach ($embed->{'discriminator-map'}->{'discriminator-mapping'} as $discriminatorMapping) {
$attr = $discriminatorMapping->attributes();
$mapping['discriminatorMap'][(string) $attr['value']] = (string) $attr['class'];
}
}
if (isset($embed->{'default-discriminator-value'})) {
$mapping['defaultDiscriminatorValue'] = (string) $embed->{'default-discriminator-value'}['value'];
}
if (isset($attributes['not-saved'])) {
$mapping['notSaved'] = 'true' === (string) $attributes['not-saved'];
}
if (isset($attributes['also-load'])) {
$mapping['alsoLoadFields'] = explode(',', $attributes['also-load']);
}
$this->addFieldMapping($class, $mapping);
}