public function testNamespace() { $reader = new SchemaReader(); $schema = $reader->readFile(__DIR__ . '/data.xsd'); $jmsConv = new YamlConverter(new ShortNamingStrategy()); $jmsConv->addNamespace('http://www.example.com', 'Tst'); $jmsConv->addNamespace('http://www.example2.com', 'Tst'); $phpClasses = $jmsConv->convert([$schema]); $type1 = $phpClasses['Tst\\ComplexType1Type']['Tst\\ComplexType1Type']; $propertyElement2 = $type1['properties']['element2']; $this->assertEquals('http://www.example2.com', $propertyElement2['xml_element']['namespace']); $propertyElement1 = $type1['properties']['element1']; $this->assertEquals('http://www.example.com', $propertyElement1['xml_element']['namespace']); }
public function testMissingClass() { $expectedItems = array('Epa\\Schema\\AdditionalIdentifier', 'Epa\\Schema\\AdditionalIdentifierType', 'Epa\\Schema\\AdditionalIdentifierTypes', 'Epa\\Schema\\AdditionalIdentifiers'); $expectedItems = array_combine($expectedItems, $expectedItems); $reader = new SchemaReader(); $schema = $reader->readFile(__DIR__ . '/data.xsd'); $yamlConv = new YamlConverter(new ShortNamingStrategy()); $yamlConv->addNamespace('', 'Epa\\Schema'); $yamlItems = $yamlConv->convert([$schema]); $this->assertCount(count($expectedItems), $yamlItems); $this->assertEmpty(array_diff_key($expectedItems, $yamlItems)); $phpConv = new PhpConverter(new ShortNamingStrategy()); $phpConv->addNamespace('', 'Epa\\Schema'); $phpClasses = $phpConv->convert([$schema]); $this->assertCount(count($expectedItems), $phpClasses); $this->assertEmpty(array_diff_key($expectedItems, $phpClasses)); $yamlClass = $yamlItems['Epa\\Schema\\AdditionalIdentifier']['Epa\\Schema\\AdditionalIdentifier']; $yamlProperty = $yamlClass['properties']['additionalIdentifierType']; /** @var PHPClass $phpClass */ $phpClass = $phpClasses['Epa\\Schema\\AdditionalIdentifier']; /** @var PHPProperty $phpProperty */ $phpProperty = $phpClass->getProperty('additionalIdentifierType'); /** @var PHPClass $phpType */ $phpType = $phpProperty->getType(); $this->assertSame($yamlProperty['type'], $phpType->getFullName()); }
public function testMissingClass() { $expectedItems = array('Epa\\Job', 'Epa\\Item', 'Epa\\Item\\PriceAType'); $reader = new SchemaReader(); $schema = $reader->readFile(__DIR__ . '/data.xsd'); $yamlConv = new YamlConverter(new ShortNamingStrategy()); $yamlConv->addNamespace('http://www.trogon.si/Schemas/2010/JobXML/2.0', 'Epa'); $yamlItems = $yamlConv->convert([$schema]); $yamlItems = array_keys($yamlItems); $this->assertEmpty(array_diff($expectedItems, $yamlItems)); $phpConv = new PhpConverter(new ShortNamingStrategy()); $phpConv->addNamespace('http://www.trogon.si/Schemas/2010/JobXML/2.0', 'Epa'); $phpClasses = $phpConv->convert([$schema]); $phpClasses = array_keys($phpClasses); $this->assertEmpty(array_diff_key($expectedItems, $phpClasses)); }
/** * @group long */ public function testOpcGeneration() { $nss = array("http://schemas.openxmlformats.org/package/2006/metadata/core-properties" => "Iag/ECMA376/Package/Model/CoreProperties/", "http://purl.org/dc/elements/1.1/" => "Iag/ECMA376/Package/Model/CoreProperties/DcElements/", "http://purl.org/dc/terms/" => "Iag/ECMA376/Package/Model/CoreProperties/DcTerms/", "http://purl.org/dc/dcmitype/" => "Iag/ECMA376/Package/Model/CoreProperties/DcMiType/"); $reader = new SchemaReader(); $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd', __DIR__ . '/opc/dc.xsd'); $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd', __DIR__ . '/opc/dcterms.xsd'); $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd', __DIR__ . '/opc/dcterms.xsd'); $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcmitype.xsd', __DIR__ . '/opc/dcmitype.xsd'); $schema = $reader->readFile(__DIR__ . '/opc/opc-coreProperties.xsd'); $yamlConv = new YamlConverter(new ShortNamingStrategy()); $phpConv = new PhpConverter(new ShortNamingStrategy()); foreach ($nss as $ns => $php) { $yamlConv->addNamespace($ns, $php); $phpConv->addNamespace($ns, $php); } $yamlItems = $yamlConv->convert([$schema]); $phpClasses = $phpConv->convert([$schema]); $this->assertEquals(count($phpClasses), count($yamlItems)); }
/** * * @param mixed $xml * @return array[] */ protected function getYamlFiles($xml, array $types = array()) { $creator = new YamlConverter(new ShortNamingStrategy()); $creator->addNamespace('', 'Example'); foreach ($types as $typeData) { list($ns, $name, $type) = $typeData; $creator->addAliasMapType($ns, $name, $type); } $reader = new SchemaReader(); if (!is_array($xml)) { $xml = ['schema.xsd' => $xml]; } $schemas = []; foreach ($xml as $name => $str) { $schemas[] = $reader->readString($str, $name); } $items = $creator->convert($schemas); return $items; }
protected static function generateJMSFiles(array $schemas) { $yamlcreator = new YamlConverter(new ShortNamingStrategy()); $yamlcreator->addNamespace('http://www.opentravel.org/OTA/2003/05', self::$namespace); $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrTimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime'); $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime'); $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'TimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime'); $items = $yamlcreator->convert($schemas); $dumper = new Dumper(); $pathGenerator = new JmsPsr4PathGenerator(array(self::$namespace . "\\" => self::$jmsDir)); foreach ($items as $item) { $path = $pathGenerator->getPath($item); file_put_contents($path, $dumper->dump($item, 10000)); } $serializerBuiler = \JMS\Serializer\SerializerBuilder::create(); $serializerBuiler->configureHandlers(function (HandlerRegistryInterface $h) use($serializerBuiler) { $serializerBuiler->addDefaultHandlers(); $h->registerSubscribingHandler(new BaseTypesHandler()); $h->registerSubscribingHandler(new XmlSchemaDateHandler()); $h->registerSubscribingHandler(new OTASchemaDateHandler()); }); $serializerBuiler->addMetadataDir(self::$jmsDir, self::$namespace); self::$serializer = $serializerBuiler->build(); }
public function setUp() { $this->converter = new YamlConverter(new ShortNamingStrategy()); $this->converter->addNamespace('http://www.example.com', "Example"); $this->reader = new SchemaReader(); }