From aa1454562c8cba01c3c45b496a7da84870567ad0 Mon Sep 17 00:00:00 2001 From: Paulo de Freitas Date: Wed, 3 Dec 2014 19:51:51 -0200 Subject: [PATCH] Fix sequence-generator in MetaData exporter for XML Driver. --- .../ORM/Tools/Export/Driver/XmlExporter.php | 6 ++++ .../Export/XmlClassMetadataExporterTest.php | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php b/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php index 14ff8322d..29bb57bac 100644 --- a/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php +++ b/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php @@ -171,6 +171,12 @@ class XmlExporter extends AbstractExporter if ($idGeneratorType = $this->_getIdGeneratorTypeString($metadata->generatorType)) { $generatorXml = $idXml->addChild('generator'); $generatorXml->addAttribute('strategy', $idGeneratorType); + if($metadata->generatorType === ClassMetadataInfo::GENERATOR_TYPE_SEQUENCE && $metadata->sequenceGeneratorDefinition) { + $sequenceGeneratorXml = $idXml->addChild('sequence-generator'); + $sequenceGeneratorXml->addAttribute('sequence-name', $metadata->sequenceGeneratorDefinition['sequenceName']); + $sequenceGeneratorXml->addAttribute('allocation-size', $metadata->sequenceGeneratorDefinition['allocationSize']); + $sequenceGeneratorXml->addAttribute('initial-value', $metadata->sequenceGeneratorDefinition['initialValue']); + } } } } diff --git a/tests/Doctrine/Tests/ORM/Tools/Export/XmlClassMetadataExporterTest.php b/tests/Doctrine/Tests/ORM/Tools/Export/XmlClassMetadataExporterTest.php index e5392ddcc..a5e44dccb 100644 --- a/tests/Doctrine/Tests/ORM/Tools/Export/XmlClassMetadataExporterTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/Export/XmlClassMetadataExporterTest.php @@ -37,4 +37,36 @@ class XmlClassMetadataExporterTest extends AbstractClassMetadataExporterTest { return 'xml'; } + + + public function testSequenceGenerator() { + $exporter = new \Doctrine\ORM\Tools\Export\Driver\XmlExporter(); + $metadata = new \Doctrine\ORM\Mapping\ClassMetadata('entityTest'); + $metadata->mapField(array( + "fieldName" => 'id', + "type" => 'integer', + "columnName" => 'id', + "id" => true, + )); + + $metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadataInfo::GENERATOR_TYPE_SEQUENCE); + $metadata->setSequenceGeneratorDefinition(array( + 'sequenceName' => 'seq_entity_test_id', + 'allocationSize' => 5, + 'initialValue' => 1 + )); + + + $fileContent = ''."\n". +''."\n". +' '."\n". +' '."\n". +' '."\n". +' '."\n". +' '."\n". +' '."\n". +''."\n"; + $exportClassMetadata = $exporter->exportClassMetadata($metadata); + $this->assertEquals($fileContent, $exportClassMetadata); + } }