From a98e0452e75fe013a19c3c95a1ddb04556cedc55 Mon Sep 17 00:00:00 2001 From: Martin Rademacher Date: Fri, 23 Feb 2018 13:27:56 +1300 Subject: [PATCH] Merge parameter definitions. Fixes #16 (#17) --- Readme.md | 3 ++ src/Swagger/S2SConverter.php | 14 +++++--- tests/Controller/ParameterMergeController.php | 33 +++++++++++++++++++ tests/Fixtures/auto.json | 30 +++++++++++++++++ tests/Fixtures/defaults.json | 28 ++++++++++++++++ tests/Fixtures/multi-path.json | 28 ++++++++++++++++ 6 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 tests/Controller/ParameterMergeController.php diff --git a/Readme.md b/Readme.md index 96d771a..7503a21 100644 --- a/Readme.md +++ b/Readme.md @@ -208,3 +208,6 @@ For a more complete example have a look at the included Symfony Console command. ### v3.0.3 * Allow to specify multiple source locations on command line [#14] + +### v3.0.4 +* Finally merge auto-generated and annotated parameter definitions [#16] diff --git a/src/Swagger/S2SConverter.php b/src/Swagger/S2SConverter.php index c0bac89..790257e 100644 --- a/src/Swagger/S2SConverter.php +++ b/src/Swagger/S2SConverter.php @@ -248,18 +248,22 @@ protected function migrateRequest(SLX\Request $request, Context $context, array } if (is_array($swgOperation->$key) && is_array($value) && 'parameters' == $key) { - // TODO: check for matching values; ie matching property names and then merge on value level foreach ($value as $parameter) { - // does that parameter already exist? $merged = false; foreach ($swgOperation->$key as $cp) { - if ($cp->name == $parameter->name) { - $merged = true; - // todo: merge! + // does that parameter already exist? + if ($cp->name == $parameter->name && $cp->in == $parameter->in) { + foreach (array_keys(SWG\Parameter::$_types) as $pkey) { + if ($parameter->$pkey) { + $cp->$pkey = $parameter->$pkey; + $merged = true; + } + } break; } } if (!$merged) { + // not merged, so lets add it $swgOperation->{$key}[] = $parameter; } } diff --git a/tests/Controller/ParameterMergeController.php b/tests/Controller/ParameterMergeController.php new file mode 100644 index 0000000..bed1273 --- /dev/null +++ b/tests/Controller/ParameterMergeController.php @@ -0,0 +1,33 @@ +