diff --git a/src/JsonSchema/Generator/Model/GetterSetterGenerator.php b/src/JsonSchema/Generator/Model/GetterSetterGenerator.php index acdcebb9a1..b0320fcea4 100644 --- a/src/JsonSchema/Generator/Model/GetterSetterGenerator.php +++ b/src/JsonSchema/Generator/Model/GetterSetterGenerator.php @@ -47,7 +47,7 @@ protected function createGetter(Property $property, string $namespace, bool $req ); } - protected function createSetter(Property $property, string $namespace, bool $required): Stmt\ClassMethod + protected function createSetter(Property $property, string $namespace, bool $required, bool $fluent = true): Stmt\ClassMethod { $setType = $property->getType()->getTypeHint($namespace); @@ -55,6 +55,21 @@ protected function createSetter(Property $property, string $namespace, bool $req $setType = '?' . $setType; } + $stmts = [ + // $this->property = $property; + new Stmt\Expression(new Expr\Assign( + new Expr\PropertyFetch( + new Expr\Variable('this'), + $this->getNaming()->getPropertyName($property->getPhpName()) + ), new Expr\Variable($this->getNaming()->getPropertyName($property->getPhpName())) + )), + ]; + + if ($fluent) { + // return $this; + $stmts[] = new Stmt\Return_(new Expr\Variable('this')); + } + return new Stmt\ClassMethod( // setProperty $this->getNaming()->getPrefixedMethodName('set', $property->getPhpName()), @@ -65,20 +80,10 @@ protected function createSetter(Property $property, string $namespace, bool $req 'params' => [ new Param(new Expr\Variable($this->getNaming()->getPropertyName($property->getPhpName())), null, $setType), ], - 'stmts' => [ - // $this->property = $property; - new Stmt\Expression(new Expr\Assign( - new Expr\PropertyFetch( - new Expr\Variable('this'), - $this->getNaming()->getPropertyName($property->getPhpName()) - ), new Expr\Variable($this->getNaming()->getPropertyName($property->getPhpName())) - )), - // return $this; - new Stmt\Return_(new Expr\Variable('this')), - ], - 'returnType' => 'self', + 'stmts' => $stmts, + 'returnType' => $fluent ? 'self' : null, ], [ - 'comments' => [$this->createSetterDoc($property, $namespace, $required)], + 'comments' => [$this->createSetterDoc($property, $namespace, $required, $fluent)], ] ); } @@ -95,18 +100,30 @@ protected function createGetterDoc(Property $property, string $namespace, bool $ , $property->getDescription(), $this->getDocType($property, $namespace, $required))); } - protected function createSetterDoc(Property $property, string $namespace, bool $required): Doc + protected function createSetterDoc(Property $property, string $namespace, bool $required, bool $fluent): Doc { - return new Doc(sprintf(<<getDescription(), $this->getDocType($property, $namespace, $required), '$' . $property->getPhpName()); + + if ($fluent) { + $description .= <<getDescription(), $this->getDocType($property, $namespace, $required), '$' . $property->getPhpName())); +EOD; + + return new Doc($description); } private function getDocType(Property $property, string $namespace, bool $required): string diff --git a/src/JsonSchema/Generator/ModelGenerator.php b/src/JsonSchema/Generator/ModelGenerator.php index 9e4d376a94..e3b5285ad8 100644 --- a/src/JsonSchema/Generator/ModelGenerator.php +++ b/src/JsonSchema/Generator/ModelGenerator.php @@ -6,6 +6,8 @@ use Jane\JsonSchema\Generator\Model\ClassGenerator; use Jane\JsonSchema\Generator\Model\GetterSetterGenerator; use Jane\JsonSchema\Generator\Model\PropertyGenerator; +use Jane\JsonSchema\Guesser\Guess\ClassGuess; +use Jane\JsonSchema\Guesser\Guess\Property; use Jane\JsonSchema\Schema; use PhpParser\Node\Name; use PhpParser\Node\Stmt; @@ -53,20 +55,33 @@ public function generate(Schema $schema, string $className, Context $context) foreach ($class->getProperties() as $property) { $required = !$property->isNullable() && $context->isStrict(); $properties[] = $this->createProperty($property, $schema->getNamespace() . '\\Model'); - $methods[] = $this->createGetter($property, $schema->getNamespace() . '\\Model', $required); - $methods[] = $this->createSetter($property, $schema->getNamespace() . '\\Model', $required); + $methods = array_merge($methods, $this->doCreateClassMethods($class, $property, $schema->getNamespace() . '\\Model', $required)); } - $model = $this->createModel( - $class->getName(), - $properties, - $methods, - \count($class->getExtensionsType()) > 0 - ); + $model = $this->doCreateModel($class, $properties, $methods); $namespace = new Stmt\Namespace_(new Name($schema->getNamespace() . '\\Model'), [$model]); $schema->addFile(new File($schema->getDirectory() . '/Model/' . $class->getName() . '.php', $namespace, self::FILE_TYPE_MODEL)); } } + + protected function doCreateClassMethods(ClassGuess $classGuess, Property $property, string $namespace, bool $required) + { + $methods = []; + $methods[] = $this->createGetter($property, $namespace, $required); + $methods[] = $this->createSetter($property, $namespace, $required); + + return $methods; + } + + protected function doCreateModel(ClassGuess $class, $properties, $methods): Stmt\Class_ + { + return $this->createModel( + $class->getName(), + $properties, + $methods, + \count($class->getExtensionsType()) > 0 + ); + } } diff --git a/src/JsonSchema/Generator/Normalizer/DenormalizerGenerator.php b/src/JsonSchema/Generator/Normalizer/DenormalizerGenerator.php index 850fca8a33..0e6986d5ae 100644 --- a/src/JsonSchema/Generator/Normalizer/DenormalizerGenerator.php +++ b/src/JsonSchema/Generator/Normalizer/DenormalizerGenerator.php @@ -67,17 +67,7 @@ protected function createDenormalizeMethod(string $modelFqdn, Context $context, ]; } - array_unshift($statements, new Stmt\If_( - new Expr\BooleanNot(new Expr\FuncCall(new Name('is_object'), [new Arg(new Expr\Variable('data'))])), - [ - 'stmts' => [ - $context->isStrict() ? - new Stmt\Throw_(new Expr\New_(new Name('InvalidArgumentException'))) - : - new Stmt\Return_(new Expr\ConstFetch(new Name('null'))), - ], - ] - )); + array_unshift($statements, ...$this->denormalizeMethodStatements($classGuess, $context)); $unset = \count($classGuess->getExtensionsType()) > 0; @@ -159,4 +149,21 @@ protected function createDenormalizeMethod(string $modelFqdn, Context $context, 'stmts' => $statements, ]); } + + protected function denormalizeMethodStatements(ClassGuess $classGuess, Context $context): array + { + return [ + new Stmt\If_( + new Expr\BooleanNot(new Expr\FuncCall(new Name('is_object'), [new Arg(new Expr\Variable('data'))])), + [ + 'stmts' => [ + $context->isStrict() ? + new Stmt\Throw_(new Expr\New_(new Name('InvalidArgumentException'))) + : + new Stmt\Return_(new Expr\ConstFetch(new Name('null'))), + ], + ] + ), + ]; + } } diff --git a/src/JsonSchema/Generator/Normalizer/NormalizerGenerator.php b/src/JsonSchema/Generator/Normalizer/NormalizerGenerator.php index a4968e781d..36d26b498b 100644 --- a/src/JsonSchema/Generator/Normalizer/NormalizerGenerator.php +++ b/src/JsonSchema/Generator/Normalizer/NormalizerGenerator.php @@ -76,9 +76,7 @@ protected function createNormalizeMethod($modelFqdn, Context $context, ClassGues { $context->refreshScope(); $dataVariable = new Expr\Variable('data'); - $statements = [ - new Stmt\Expression(new Expr\Assign($dataVariable, new Expr\New_(new Name('\\stdClass')))), - ]; + $statements = $this->normalizeMethodStatements($dataVariable, $classGuess, $context); /** @var Property $property */ foreach ($classGuess->getProperties() as $property) { @@ -140,4 +138,11 @@ protected function createNormalizeMethod($modelFqdn, Context $context, ClassGues 'stmts' => $statements, ]); } + + protected function normalizeMethodStatements(Expr\Variable $dataVariable, ClassGuess $classGuess, Context $context): array + { + return [ + new Stmt\Expression(new Expr\Assign($dataVariable, new Expr\New_(new Name('\\stdClass')))), + ]; + } } diff --git a/src/JsonSchema/Guesser/Guess/ClassGuess.php b/src/JsonSchema/Guesser/Guess/ClassGuess.php index 629b23bcff..206a36cd2f 100644 --- a/src/JsonSchema/Guesser/Guess/ClassGuess.php +++ b/src/JsonSchema/Guesser/Guess/ClassGuess.php @@ -17,7 +17,7 @@ class ClassGuess /** * @var Property[] */ - private $properties; + private $properties = []; private $reference; diff --git a/src/JsonSchema/Guesser/JsonSchema/AllOfGuesser.php b/src/JsonSchema/Guesser/JsonSchema/AllOfGuesser.php index 7b5f363a2f..6c7590b6ab 100644 --- a/src/JsonSchema/Guesser/JsonSchema/AllOfGuesser.php +++ b/src/JsonSchema/Guesser/JsonSchema/AllOfGuesser.php @@ -23,7 +23,7 @@ class AllOfGuesser implements GuesserInterface, TypeGuesserInterface, ChainGuess use ChainGuesserAwareTrait; use GuesserResolverTrait; - private $naming; + protected $naming; public function __construct(SerializerInterface $serializer, Naming $naming) { @@ -69,7 +69,7 @@ public function guessClass($object, $name, $reference, Registry $registry) } } - $registry->getSchema($reference)->addClass($reference, new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions)); + $registry->getSchema($reference)->addClass($reference, $this->createClassGuess($object, $reference, $name, $extensions)); } foreach ($object->getAllOf() as $allOfIndex => $allOf) { @@ -168,4 +168,9 @@ protected function getSchemaClass() { return JsonSchema::class; } + + protected function createClassGuess($object, $reference, $name, $extensions): ClassGuess + { + return new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions); + } } diff --git a/src/JsonSchema/Guesser/JsonSchema/ObjectGuesser.php b/src/JsonSchema/Guesser/JsonSchema/ObjectGuesser.php index 4c7a2b3e09..6519b7e42b 100644 --- a/src/JsonSchema/Guesser/JsonSchema/ObjectGuesser.php +++ b/src/JsonSchema/Guesser/JsonSchema/ObjectGuesser.php @@ -73,7 +73,7 @@ public function guessClass($object, $name, $reference, Registry $registry) } } - $registry->getSchema($reference)->addClass($reference, new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions)); + $registry->getSchema($reference)->addClass($reference, $this->createClassGuess($object, $reference, $name, $extensions)); } foreach ($object->getProperties() as $key => $property) { @@ -150,4 +150,9 @@ protected function getSchemaClass() { return JsonSchema::class; } + + protected function createClassGuess($object, $reference, $name, $extensions): ClassGuess + { + return new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions); + } } diff --git a/src/OpenApi/Generator/Model/ClassGenerator.php b/src/OpenApi/Generator/Model/ClassGenerator.php new file mode 100644 index 0000000000..36b191e589 --- /dev/null +++ b/src/OpenApi/Generator/Model/ClassGenerator.php @@ -0,0 +1,44 @@ +getNaming()->getClassName($name)), + [ + 'stmts' => array_merge($properties, $methods), + 'extends' => $classExtends, + ] + ); + } +} diff --git a/src/OpenApi/Generator/ModelGenerator.php b/src/OpenApi/Generator/ModelGenerator.php new file mode 100644 index 0000000000..9b61b9e7b5 --- /dev/null +++ b/src/OpenApi/Generator/ModelGenerator.php @@ -0,0 +1,44 @@ +createGetter($property, $namespace, $required); + $methods[] = $this->createSetter($property, $namespace, $required, $classGuess instanceof MultipleClass ? false : true); + + return $methods; + } + + protected function doCreateModel(BaseClassGuess $class, $properties, $methods): Stmt\Class_ + { + $extends = null; + if ($class instanceof ClassGuess && + $class->getMultipleClass() instanceof MultipleClass) { + $extends = $this->getNaming()->getClassName($class->getMultipleClass()->getName()); + } + + $classModel = $this->createModel( + $class->getName(), + $properties, + $methods, + \count($class->getExtensionsType()) > 0, + $extends + ); + + return $classModel; + } +} diff --git a/src/OpenApi/Generator/Normalizer/DenormalizerGenerator.php b/src/OpenApi/Generator/Normalizer/DenormalizerGenerator.php new file mode 100644 index 0000000000..df8d9a2646 --- /dev/null +++ b/src/OpenApi/Generator/Normalizer/DenormalizerGenerator.php @@ -0,0 +1,61 @@ +jsonSchemaDenormalizeMethodStatements($classGuess, $context); + + if ($classGuess instanceof MultipleClass) { + foreach ($classGuess->getReferences() as $name => $reference) { + $statements[] = new Stmt\If_( + new Expr\BinaryOp\LogicalAnd( + new Expr\FuncCall(new Name('property_exists'), [ + new Arg(new Expr\Variable('data')), + new Arg(new Scalar\String_($classGuess->getDiscriminator())), + ]), + new Expr\BinaryOp\Identical( + new Scalar\String_($name), + new Expr\PropertyFetch(new Expr\Variable('data'), sprintf("{'%s'}", $classGuess->getDiscriminator())) + ) + ), + [ + 'stmts' => [ + new Stmt\Return_(new Expr\MethodCall( + new Expr\PropertyFetch( + new Expr\Variable('this'), + 'denormalizer' + ), + 'denormalize', + [ + new Expr\Variable('data'), + new Scalar\String_(sprintf('%s\\Model\\%s', $context->getCurrentSchema()->getNamespace(), $name)), + new Expr\Variable('format'), + new Expr\Variable('context'), + ] + )), + ], + ] + ); + } + } + + return $statements; + } +} diff --git a/src/OpenApi/Generator/Normalizer/NormalizerGenerator.php b/src/OpenApi/Generator/Normalizer/NormalizerGenerator.php new file mode 100644 index 0000000000..0ee4e0d92d --- /dev/null +++ b/src/OpenApi/Generator/Normalizer/NormalizerGenerator.php @@ -0,0 +1,78 @@ +jsonSchemaNormalizeMethodStatements($dataVariable, $classGuess, $context); + + if ($classGuess instanceof MultipleClass) { + foreach ($classGuess->getReferences() as $name => $reference) { + $objectVar = new Expr\Variable('object'); + $propertyVar = new Expr\MethodCall($objectVar, $this->getNaming()->getPrefixedMethodName('get', $classGuess->getDiscriminator())); + + $statements[] = new Stmt\If_( + new Expr\BinaryOp\LogicalAnd( + new Expr\BinaryOp\NotIdentical(new Expr\ConstFetch(new Name('null')), $propertyVar), + new Expr\BinaryOp\Identical(new Scalar\String_($name), $propertyVar) + ), + [ + 'stmts' => [ + new Stmt\Return_(new Expr\MethodCall( + new Expr\PropertyFetch( + new Expr\Variable('this'), + 'normalizer' + ), + 'normalize', + [ + $objectVar, + new Expr\Variable('format'), + new Expr\Variable('context'), + ] + )), + ], + ] + ); + } + } + + return $statements; + } + + /** + * We want stricly same class for OpenApi Normalizers since we can have inheritance and this could avoid + * normalization to use child classes. + */ + protected function createSupportsNormalizationMethod($modelFqdn) + { + return new Stmt\ClassMethod('supportsNormalization', [ + 'type' => Stmt\Class_::MODIFIER_PUBLIC, + 'params' => [ + new Param(new Expr\Variable('data')), + new Param(new Expr\Variable('format'), new Expr\ConstFetch(new Name('null'))), + ], + 'stmts' => [ + new Stmt\Return_(new Expr\BinaryOp\Identical( + new Expr\FuncCall(new Name('get_class'), [new Expr\Variable('data')]), + new Scalar\String_($modelFqdn) + )), + ], + ]); + } +} diff --git a/src/OpenApi/Generator/NormalizerGenerator.php b/src/OpenApi/Generator/NormalizerGenerator.php new file mode 100644 index 0000000000..e3ad033948 --- /dev/null +++ b/src/OpenApi/Generator/NormalizerGenerator.php @@ -0,0 +1,13 @@ +multipleClass; + } + + public function setMultipleClass(?MultipleClass $multipleClass): void + { + $this->multipleClass = $multipleClass; + } +} diff --git a/src/OpenApi/Guesser/Guess/MultipleClass.php b/src/OpenApi/Guesser/Guess/MultipleClass.php new file mode 100644 index 0000000000..83e75b3c6f --- /dev/null +++ b/src/OpenApi/Guesser/Guess/MultipleClass.php @@ -0,0 +1,59 @@ +getObject(), $classGuess->getReference(), $classGuess->getName(), $classGuess->getExtensionsObject()); + $this->setMultipleClass($classGuess->getMultipleClass()); + $this->setProperties($classGuess->getProperties()); + $this->setExtensionsType($classGuess->getExtensionsType()); + $this->setConstraints($classGuess->getConstraints()); + + $this->discriminator = $discriminator; + $this->references = $references; + } + + public function setDiscriminator(string $discriminator): self + { + $this->discriminator = $discriminator; + + return $this; + } + + public function getDiscriminator(): string + { + return $this->discriminator; + } + + /** + * Add a reference. + * + * @param string $className + * @param string $reference + * + * @return $this + */ + public function addReference(string $className, string $reference): self + { + $this->references[$className] = $reference; + + return $this; + } + + /** + * Return a list of references. + * + * @return string[] + */ + public function getReferences() + { + return $this->references; + } +} diff --git a/src/OpenApi/Guesser/OpenApiSchema/AllOfGuesser.php b/src/OpenApi/Guesser/OpenApiSchema/AllOfGuesser.php index beb53f23d4..71f71f5d6a 100644 --- a/src/OpenApi/Guesser/OpenApiSchema/AllOfGuesser.php +++ b/src/OpenApi/Guesser/OpenApiSchema/AllOfGuesser.php @@ -2,6 +2,8 @@ namespace Jane\OpenApi\Guesser\OpenApiSchema; +use Jane\JsonSchema\Guesser\Guess\ClassGuess as BaseClassGuess; +use Jane\OpenApi\Guesser\Guess\ClassGuess; use Jane\JsonSchema\Guesser\JsonSchema\AllOfGuesser as BaseAllOfGuesser; use Jane\OpenApi\JsonSchema\Version3\Model\Schema; @@ -22,4 +24,12 @@ protected function getSchemaClass() { return Schema::class; } + + /** + * @param Schema $object + */ + protected function createClassGuess($object, $reference, $name, $extensions): BaseClassGuess + { + return new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions); + } } diff --git a/src/OpenApi/Guesser/OpenApiSchema/SchemaGuesser.php b/src/OpenApi/Guesser/OpenApiSchema/SchemaGuesser.php index 7fcbedce3c..3ce53d880c 100644 --- a/src/OpenApi/Guesser/OpenApiSchema/SchemaGuesser.php +++ b/src/OpenApi/Guesser/OpenApiSchema/SchemaGuesser.php @@ -3,7 +3,11 @@ namespace Jane\OpenApi\Guesser\OpenApiSchema; use Jane\JsonSchema\Guesser\JsonSchema\ObjectGuesser; +use Jane\OpenApi\JsonSchema\Version3\Model\Discriminator; use Jane\OpenApi\JsonSchema\Version3\Model\Schema; +use Jane\JsonSchema\Guesser\Guess\ClassGuess as BaseClassGuess; +use Jane\OpenApi\Guesser\Guess\ClassGuess; +use Jane\OpenApi\Guesser\Guess\MultipleClass; class SchemaGuesser extends ObjectGuesser { @@ -15,6 +19,26 @@ public function supportObject($object) return ($object instanceof Schema) && ('object' === $object->getType() || null === $object->getType()) && null !== $object->getProperties(); } + /** + * @param Schema $object + */ + protected function createClassGuess($object, $reference, $name, $extensions): BaseClassGuess + { + $classGuess = new ClassGuess($object, $reference, $this->naming->getClassName($name), $extensions); + + if ($object->getDiscriminator() instanceof Discriminator && + \is_array($object->getEnum()) && \count($object->getEnum()) > 0) { + $classGuess = new MultipleClass($classGuess, $object->getDiscriminator()->getPropertyName()); + + foreach ($object->getEnum() as $subClassName) { + $subReference = preg_replace('#components/schemas\/.+$#', sprintf('components/schemas/%s', $subClassName), $reference); + $classGuess->addReference($subClassName, $subReference); + } + } + + return $classGuess; + } + /** * @return string */ diff --git a/src/OpenApi/JaneOpenApi.php b/src/OpenApi/JaneOpenApi.php index d771d34304..5f59d8b2de 100644 --- a/src/OpenApi/JaneOpenApi.php +++ b/src/OpenApi/JaneOpenApi.php @@ -4,9 +4,9 @@ use Jane\JsonSchema\Generator\ChainGenerator; use Jane\JsonSchema\Generator\Context\Context; -use Jane\JsonSchema\Generator\ModelGenerator; +use Jane\OpenApi\Generator\ModelGenerator; use Jane\JsonSchema\Generator\Naming; -use Jane\JsonSchema\Generator\NormalizerGenerator; +use Jane\OpenApi\Generator\NormalizerGenerator; use Jane\JsonSchema\Guesser\ChainGuesser; use Jane\OpenApi\Generator\GeneratorFactory; use Jane\OpenApi\Guesser\OpenApiSchema\GuesserFactory; @@ -21,6 +21,8 @@ use Symfony\Component\Serializer\Serializer; use Symfony\Component\Yaml\Dumper; use Symfony\Component\Yaml\Parser; +use Jane\OpenApi\Guesser\Guess\MultipleClass; +use Jane\OpenApi\Guesser\Guess\ClassGuess; class JaneOpenApi extends ChainGenerator { @@ -92,11 +94,27 @@ public function createContext(Registry $registry): Context $class->setExtensionsType($extensionsTypes); } + + $this->hydrateDiscriminatedClasses($schema, $registry); } return new Context($registry, $this->strict); } + protected function hydrateDiscriminatedClasses(Schema $schema, Registry $registry) + { + foreach ($schema->getClasses() as $class) { + if ($class instanceof MultipleClass) { // is parent class + foreach ($class->getReferences() as $reference) { + $guess = $registry->getClass($reference); + if ($guess instanceof ClassGuess) { // is child class + $guess->setMultipleClass($class); + } + } + } + } + } + public static function build(array $options = []) { $encoders = [ diff --git a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/BarNormalizer.php b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/BarNormalizer.php index 908fd20f28..5997a1843c 100644 --- a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/BarNormalizer.php +++ b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/BarNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Bar; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Bar'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FooNormalizer.php b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FooNormalizer.php index 0e655051ba..69ee574b79 100644 --- a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FooNormalizer.php +++ b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FooNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Foo; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Foo'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FuzNormalizer.php b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FuzNormalizer.php index aa2cd90a10..d32629db58 100644 --- a/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FuzNormalizer.php +++ b/src/OpenApi/Tests/fixtures/all-of-merge/expected/Normalizer/FuzNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Fuz; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Fuz'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/array-definition/expected/Normalizer/BarItemNormalizer.php b/src/OpenApi/Tests/fixtures/array-definition/expected/Normalizer/BarItemNormalizer.php index 8ce1b2a512..e3ff52d926 100644 --- a/src/OpenApi/Tests/fixtures/array-definition/expected/Normalizer/BarItemNormalizer.php +++ b/src/OpenApi/Tests/fixtures/array-definition/expected/Normalizer/BarItemNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\BarItem; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\BarItem'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaNormalizer.php b/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaNormalizer.php index 3f02add410..aeb710b9ad 100644 --- a/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaNormalizer.php +++ b/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Schema; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Schema'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaObjectPropertyNormalizer.php b/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaObjectPropertyNormalizer.php index dff7be834b..d45507bb3b 100644 --- a/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaObjectPropertyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/body-parameter/expected/Normalizer/SchemaObjectPropertyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\SchemaObjectProperty; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\SchemaObjectProperty'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaNormalizer.php b/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaNormalizer.php index 3f02add410..aeb710b9ad 100644 --- a/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaNormalizer.php +++ b/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Schema; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Schema'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaObjectPropertyNormalizer.php b/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaObjectPropertyNormalizer.php index dff7be834b..d45507bb3b 100644 --- a/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaObjectPropertyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/content-type/expected/Normalizer/SchemaObjectPropertyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\SchemaObjectProperty; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\SchemaObjectProperty'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/discriminator/.jane-openapi b/src/OpenApi/Tests/fixtures/discriminator/.jane-openapi new file mode 100644 index 0000000000..eb0f7265ae --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/.jane-openapi @@ -0,0 +1,8 @@ + __DIR__ . '/swagger.json', + 'namespace' => 'Jane\OpenApi\Tests\Expected', + 'directory' => __DIR__ . '/generated', + 'use-fixer' => false, +]; diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Client.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Client.php new file mode 100644 index 0000000000..ef033a9a74 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Client.php @@ -0,0 +1,17 @@ +name; + } + /** + * + * + * @param string $name + * + * @return self + */ + public function setName(string $name) : self + { + $this->name = $name; + return $this; + } + /** + * + * + * @return string + */ + public function getPetType() : string + { + return $this->petType; + } + /** + * + * + * @param string $petType + * + * @return self + */ + public function setPetType(string $petType) : self + { + $this->petType = $petType; + return $this; + } + /** + * The measured skill for hunting + * + * @return string + */ + public function getHuntingSkill() : string + { + return $this->huntingSkill; + } + /** + * The measured skill for hunting + * + * @param string $huntingSkill + * + * @return self + */ + public function setHuntingSkill(string $huntingSkill) : self + { + $this->huntingSkill = $huntingSkill; + return $this; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Dog.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Dog.php new file mode 100644 index 0000000000..b4bb66b7a8 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Dog.php @@ -0,0 +1,88 @@ +name; + } + /** + * + * + * @param string $name + * + * @return self + */ + public function setName(string $name) : self + { + $this->name = $name; + return $this; + } + /** + * + * + * @return string + */ + public function getPetType() : string + { + return $this->petType; + } + /** + * + * + * @param string $petType + * + * @return self + */ + public function setPetType(string $petType) : self + { + $this->petType = $petType; + return $this; + } + /** + * the size of the pack the dog is from + * + * @return int + */ + public function getPackSize() : int + { + return $this->packSize; + } + /** + * the size of the pack the dog is from + * + * @param int $packSize + * + * @return self + */ + public function setPackSize(int $packSize) : self + { + $this->packSize = $packSize; + return $this; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Pet.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Pet.php new file mode 100644 index 0000000000..4f196aca12 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Model/Pet.php @@ -0,0 +1,55 @@ +name; + } + /** + * + * + * @param string $name + */ + public function setName(string $name) + { + $this->name = $name; + } + /** + * + * + * @return string + */ + public function getPetType() : string + { + return $this->petType; + } + /** + * + * + * @param string $petType + */ + public function setPetType(string $petType) + { + $this->petType = $petType; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/CatNormalizer.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/CatNormalizer.php new file mode 100644 index 0000000000..5e43583f56 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/CatNormalizer.php @@ -0,0 +1,56 @@ +setName($data->{'name'}); + } + if (property_exists($data, 'petType')) { + $object->setPetType($data->{'petType'}); + } + if (property_exists($data, 'huntingSkill')) { + $object->setHuntingSkill($data->{'huntingSkill'}); + } + return $object; + } + public function normalize($object, $format = null, array $context = array()) + { + $data = new \stdClass(); + if (null !== $object->getName()) { + $data->{'name'} = $object->getName(); + } + if (null !== $object->getPetType()) { + $data->{'petType'} = $object->getPetType(); + } + if (null !== $object->getHuntingSkill()) { + $data->{'huntingSkill'} = $object->getHuntingSkill(); + } + return $data; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/DogNormalizer.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/DogNormalizer.php new file mode 100644 index 0000000000..ac91985ae0 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/DogNormalizer.php @@ -0,0 +1,56 @@ +setName($data->{'name'}); + } + if (property_exists($data, 'petType')) { + $object->setPetType($data->{'petType'}); + } + if (property_exists($data, 'packSize')) { + $object->setPackSize($data->{'packSize'}); + } + return $object; + } + public function normalize($object, $format = null, array $context = array()) + { + $data = new \stdClass(); + if (null !== $object->getName()) { + $data->{'name'} = $object->getName(); + } + if (null !== $object->getPetType()) { + $data->{'petType'} = $object->getPetType(); + } + if (null !== $object->getPackSize()) { + $data->{'packSize'} = $object->getPackSize(); + } + return $data; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/NormalizerFactory.php b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/NormalizerFactory.php new file mode 100644 index 0000000000..1b90703b5f --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/expected/Normalizer/NormalizerFactory.php @@ -0,0 +1,16 @@ +{'petType'}) { + return $this->denormalizer->denormalize($data, 'Jane\\OpenApi\\Tests\\Expected\\Model\\Cat', $format, $context); + } + if (property_exists($data, 'petType') and 'Dog' === $data->{'petType'}) { + return $this->denormalizer->denormalize($data, 'Jane\\OpenApi\\Tests\\Expected\\Model\\Dog', $format, $context); + } + $object = new \Jane\OpenApi\Tests\Expected\Model\Pet(); + if (property_exists($data, 'name')) { + $object->setName($data->{'name'}); + } + if (property_exists($data, 'petType')) { + $object->setPetType($data->{'petType'}); + } + return $object; + } + public function normalize($object, $format = null, array $context = array()) + { + $data = new \stdClass(); + if (null !== $object->getPetType() and 'Cat' === $object->getPetType()) { + return $this->normalizer->normalize($object, $format, $context); + } + if (null !== $object->getPetType() and 'Dog' === $object->getPetType()) { + return $this->normalizer->normalize($object, $format, $context); + } + if (null !== $object->getName()) { + $data->{'name'} = $object->getName(); + } + if (null !== $object->getPetType()) { + $data->{'petType'} = $object->getPetType(); + } + return $data; + } +} \ No newline at end of file diff --git a/src/OpenApi/Tests/fixtures/discriminator/swagger.json b/src/OpenApi/Tests/fixtures/discriminator/swagger.json new file mode 100644 index 0000000000..a47c963852 --- /dev/null +++ b/src/OpenApi/Tests/fixtures/discriminator/swagger.json @@ -0,0 +1,81 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Pets", + "version": "1.0.0" + }, + "paths": {}, + "components": { + "schemas": { + "Pet": { + "type": "object", + "discriminator": { + "propertyName": "petType" + }, + "enum": ["Cat", "Dog"], + "properties": { + "name": { + "type": "string" + }, + "petType": { + "type": "string" + } + }, + "required": [ + "name", + "petType" + ] + }, + "Cat": { + "description": "A representation of a cat", + "allOf": [ + { + "$ref": "#/components/schemas/Pet" + }, + { + "type": "object", + "properties": { + "huntingSkill": { + "type": "string", + "description": "The measured skill for hunting", + "default": "lazy", + "enum": [ + "clueless", + "lazy", + "adventurous", + "aggressive" + ] + } + }, + "required": [ + "huntingSkill" + ] + } + ] + }, + "Dog": { + "description": "A representation of a dog", + "allOf": [ + { + "$ref": "#/components/schemas/Pet" + }, + { + "type": "object", + "properties": { + "packSize": { + "type": "integer", + "format": "int32", + "description": "the size of the pack the dog is from", + "default": 0, + "minimum": 0 + } + }, + "required": [ + "packSize" + ] + } + ] + } + } + } +} diff --git a/src/OpenApi/Tests/fixtures/exceptions/expected/Normalizer/ErrorNormalizer.php b/src/OpenApi/Tests/fixtures/exceptions/expected/Normalizer/ErrorNormalizer.php index 794b3bba01..8b5c80805c 100644 --- a/src/OpenApi/Tests/fixtures/exceptions/expected/Normalizer/ErrorNormalizer.php +++ b/src/OpenApi/Tests/fixtures/exceptions/expected/Normalizer/ErrorNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Error; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Error'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/ErrorNormalizer.php b/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/ErrorNormalizer.php index ebcd0c09af..b4c5ff280f 100644 --- a/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/ErrorNormalizer.php +++ b/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/ErrorNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Error; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Error'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/PetNormalizer.php b/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/PetNormalizer.php index b1a83927c9..4bfd9225cb 100644 --- a/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/PetNormalizer.php +++ b/src/OpenApi/Tests/fixtures/from-url/expected/Normalizer/PetNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Pet; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Pet'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/EmptySpaceNormalizer.php b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/EmptySpaceNormalizer.php index 848315630d..9d9e97c35b 100644 --- a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/EmptySpaceNormalizer.php +++ b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/EmptySpaceNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\EmptySpace; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\EmptySpace'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/ErrorNormalizer.php b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/ErrorNormalizer.php index 794b3bba01..8b5c80805c 100644 --- a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/ErrorNormalizer.php +++ b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/ErrorNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Error; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Error'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaNormalizer.php b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaNormalizer.php index 2d4ddd1fb9..f24d38972b 100644 --- a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaNormalizer.php +++ b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Schema; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Schema'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaObjectPropertyNormalizer.php b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaObjectPropertyNormalizer.php index dff7be834b..d45507bb3b 100644 --- a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaObjectPropertyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/SchemaObjectPropertyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\SchemaObjectProperty; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\SchemaObjectProperty'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/TestIdGetResponse200Normalizer.php b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/TestIdGetResponse200Normalizer.php index 03a0100467..b0ca22f363 100644 --- a/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/TestIdGetResponse200Normalizer.php +++ b/src/OpenApi/Tests/fixtures/model-in-response/expected/Normalizer/TestIdGetResponse200Normalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestIdGetResponse200; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestIdGetResponse200'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/multi-specs/expected/Api1/Normalizer/BodyNormalizer.php b/src/OpenApi/Tests/fixtures/multi-specs/expected/Api1/Normalizer/BodyNormalizer.php index 7969b57768..324d216c8b 100644 --- a/src/OpenApi/Tests/fixtures/multi-specs/expected/Api1/Normalizer/BodyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/multi-specs/expected/Api1/Normalizer/BodyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Api1\Model\Body; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Api1\\Model\\Body'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/BarNormalizer.php b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/BarNormalizer.php index 37f3fcb803..48a42a2abe 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/BarNormalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/BarNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Bar; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Bar'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/FooNormalizer.php b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/FooNormalizer.php index 6573b40eed..186a2c6f86 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/FooNormalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/FooNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Foo; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Foo'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyBazNormalizer.php b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyBazNormalizer.php index f4d4a8fa87..289fe17965 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyBazNormalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyBazNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestGetBodyBaz; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestGetBodyBaz'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyNormalizer.php b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyNormalizer.php index 395b64a0d6..2e1dd6c2ad 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestGetBodyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestGetBody; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestGetBody'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestPostBodyNormalizer.php b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestPostBodyNormalizer.php index 8154842235..8f78d37d39 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestPostBodyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-body/expected/Normalizer/TestPostBodyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestPostBody; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestPostBody'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/no-reference-response/expected/Normalizer/TestPostResponse201Normalizer.php b/src/OpenApi/Tests/fixtures/no-reference-response/expected/Normalizer/TestPostResponse201Normalizer.php index f13bcfdb70..4d8330a9b4 100644 --- a/src/OpenApi/Tests/fixtures/no-reference-response/expected/Normalizer/TestPostResponse201Normalizer.php +++ b/src/OpenApi/Tests/fixtures/no-reference-response/expected/Normalizer/TestPostResponse201Normalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestPostResponse201; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestPostResponse201'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/operations/expected/Normalizer/ThingNormalizer.php b/src/OpenApi/Tests/fixtures/operations/expected/Normalizer/ThingNormalizer.php index 6f6dd3e190..5252e2b3f4 100644 --- a/src/OpenApi/Tests/fixtures/operations/expected/Normalizer/ThingNormalizer.php +++ b/src/OpenApi/Tests/fixtures/operations/expected/Normalizer/ThingNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\Thing; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\Thing'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormFilePostBodyNormalizer.php b/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormFilePostBodyNormalizer.php index 712856c3f2..84f86b8c01 100644 --- a/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormFilePostBodyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormFilePostBodyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestFormFilePostBody; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestFormFilePostBody'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormPostBodyNormalizer.php b/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormPostBodyNormalizer.php index b0a3d079c9..808faa61b3 100644 --- a/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormPostBodyNormalizer.php +++ b/src/OpenApi/Tests/fixtures/parameters/expected/Normalizer/TestFormPostBodyNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\TestFormPostBody; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\TestFormPostBody'; } public function denormalize($data, $class, $format = null, array $context = array()) { diff --git a/src/OpenApi/Tests/fixtures/response-reference/expected/Normalizer/ResponseCommonNormalizer.php b/src/OpenApi/Tests/fixtures/response-reference/expected/Normalizer/ResponseCommonNormalizer.php index c77c0056bc..002bb81051 100644 --- a/src/OpenApi/Tests/fixtures/response-reference/expected/Normalizer/ResponseCommonNormalizer.php +++ b/src/OpenApi/Tests/fixtures/response-reference/expected/Normalizer/ResponseCommonNormalizer.php @@ -20,7 +20,7 @@ public function supportsDenormalization($data, $type, $format = null) } public function supportsNormalization($data, $format = null) { - return $data instanceof \Jane\OpenApi\Tests\Expected\Model\ResponseCommon; + return get_class($data) === 'Jane\\OpenApi\\Tests\\Expected\\Model\\ResponseCommon'; } public function denormalize($data, $class, $format = null, array $context = array()) {