Skip to content

Commit 77140ad

Browse files
committed
Error handling
1 parent 36b1ce2 commit 77140ad

File tree

8 files changed

+60
-16
lines changed

8 files changed

+60
-16
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use Soap\Engine\Metadata\Model\Method;
2828
use Soap\Engine\Metadata\Model\Type;
2929
use Soap\Wsdl\Loader\FlatteningLoader;
3030
use Soap\Wsdl\Loader\StreamWrapperLoader;
31-
use Soap\WsdlReader\Formatter\MethodFormatter;
31+
use Soap\WsdlReader\Formatter\ShortMethodFormatter;
3232
use Soap\WsdlReader\Formatter\ShortTypeFormatter;
3333
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
3434
use Soap\WsdlReader\Wsdl1Reader;
@@ -42,7 +42,7 @@ $metadata = $metadataProvider->getMetadata();
4242
echo PHP_EOL;
4343

4444
echo "Methods:".PHP_EOL;
45-
echo implode(PHP_EOL, $metadata->getMethods()->map(fn (Method $method) => ' > '.(new MethodFormatter())($method)));
45+
echo implode(PHP_EOL, $metadata->getMethods()->map(fn (Method $method) => ' > '.(new ShortMethodFormatter())($method)));
4646
echo PHP_EOL.PHP_EOL;
4747

4848
echo "Types:".PHP_EOL;

bin/tmp/compare.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Soap\ExtSoapEngine\ExtSoapOptions;
99
use Soap\Wsdl\Loader\FlatteningLoader;
1010
use Soap\Wsdl\Loader\StreamWrapperLoader;
11-
use Soap\WsdlReader\Formatter\MethodFormatter;
11+
use Soap\WsdlReader\Formatter\ShortMethodFormatter;
1212
use Soap\WsdlReader\Formatter\ShortTypeFormatter;
1313
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
1414
use Soap\WsdlReader\Wsdl1Reader;

src/Console/Command/InspectCommand.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Soap\Engine\Metadata\Model\Method;
77
use Soap\Engine\Metadata\Model\Type;
88
use Soap\Wsdl\Console\Helper\ConfiguredLoader;
9-
use Soap\WsdlReader\Formatter\MethodFormatter;
9+
use Soap\WsdlReader\Formatter\ShortMethodFormatter;
1010
use Soap\WsdlReader\Formatter\ShortTypeFormatter;
1111
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
1212
use Soap\WsdlReader\Wsdl1Reader;
@@ -48,7 +48,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
4848
$metadata = $metadataProvider->getMetadata();
4949

5050
$style->info('Methods:');
51-
$style->writeln($metadata->getMethods()->map(fn (Method $method) => ' > '.(new MethodFormatter())($method)));
51+
$style->writeln($metadata->getMethods()->map(fn (Method $method) => ' > '.(new ShortMethodFormatter())($method)));
5252

5353
$style->info('Types:');
5454
$style->writeln($metadata->getTypes()->map(fn (Type $type) => ' > '.(new ShortTypeFormatter())($type)));

src/Console/Command/InspectMethodCommand.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
use Soap\Engine\Metadata\Model\Method;
77
use Soap\Engine\Metadata\Model\Parameter;
88
use Soap\Wsdl\Console\Helper\ConfiguredLoader;
9-
use Soap\WsdlReader\Formatter\MethodFormatter;
9+
use Soap\WsdlReader\Formatter\LongMethodFormatter;
10+
use Soap\WsdlReader\Formatter\ShortMethodFormatter;
1011
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
1112
use Soap\WsdlReader\Wsdl1Reader;
1213
use Symfony\Component\Console\Command\Command;
@@ -49,13 +50,18 @@ protected function execute(InputInterface $input, OutputInterface $output): int
4950
$wsdl = (new Wsdl1Reader($loader))($wsdl);
5051
$metadataProvider = new Wsdl1MetadataProvider($wsdl);
5152
$metadata = $metadataProvider->getMetadata();
53+
5254
$detectedMethods = filter($metadata->getMethods(), fn (Method $methodInfo): bool => $methodInfo->getName() === $method);
55+
if (!$detectedMethods) {
56+
$style->error('Unable to find method '.$method);
57+
return self::FAILURE;
58+
}
5359

5460
$style->info('Methods:');
5561
$style->writeln(
5662
map(
5763
$detectedMethods,
58-
fn (Method $method) => ' > '.(new MethodFormatter())($method)
64+
fn (Method $method) => ' > '.(new LongMethodFormatter())($method)
5965
)
6066
);
6167

src/Console/Command/InspectTypeCommand.php

+7-6
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33

44
namespace Soap\WsdlReader\Console\Command;
55

6-
use Soap\Engine\Metadata\Model\Method;
76
use Soap\Engine\Metadata\Model\Type;
87
use Soap\Wsdl\Console\Helper\ConfiguredLoader;
98
use Soap\WsdlReader\Formatter\LongTypeFormatter;
10-
use Soap\WsdlReader\Formatter\MethodFormatter;
11-
use Soap\WsdlReader\Formatter\ShortTypeFormatter;
129
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
1310
use Soap\WsdlReader\Wsdl1Reader;
1411
use Symfony\Component\Console\Command\Command;
@@ -50,10 +47,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int
5047
$metadataProvider = new Wsdl1MetadataProvider($wsdl);
5148
$metadata = $metadataProvider->getMetadata();
5249

50+
$detectedTypes = $metadata->getTypes()->filter(fn (Type $type): bool => $type->getName() === $typeName);
51+
if (!$detectedTypes->count()) {
52+
$style->error('Unable to find type '.$typeName);
53+
return self::FAILURE;
54+
}
55+
5356
$style->writeln(
54-
$metadata->getTypes()
55-
->filter(fn (Type $type): bool => $type->getName() === $typeName)
56-
->map(fn (Type $type) => ' > '.(new LongTypeFormatter())($type))
57+
$detectedTypes->map(fn (Type $type) => ' > '.(new LongTypeFormatter())($type))
5758
);
5859

5960
return self::SUCCESS;

src/Formatter/MethodFormatter.php renamed to src/Formatter/LongMethodFormatter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Soap\Engine\Metadata\Model\Parameter;
88
use function Psl\Str\format;
99

10-
class MethodFormatter
10+
class LongMethodFormatter
1111
{
1212
private XsdTypeFormatter $xsdTypeFormatter;
1313

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Soap\WsdlReader\Formatter;
5+
6+
use Soap\Engine\Metadata\Model\Method;
7+
use Soap\Engine\Metadata\Model\Parameter;
8+
use function Psl\Str\format;
9+
10+
class ShortMethodFormatter
11+
{
12+
private XsdTypeFormatter $xsdTypeFormatter;
13+
14+
public function __construct()
15+
{
16+
$this->xsdTypeFormatter = new XsdTypeFormatter();
17+
}
18+
19+
/**
20+
* TODO : level depth for types?
21+
*/
22+
public function __invoke(Method $method, int $level=1): string
23+
{
24+
return format(
25+
'%s(%s): %s',
26+
$method->getName(),
27+
implode(', ', $method->getParameters()->map(
28+
fn (Parameter $parameter): string => format(
29+
'%s $%s',
30+
($this->xsdTypeFormatter)($parameter->getType()),
31+
$parameter->getName()
32+
)
33+
)),
34+
($this->xsdTypeFormatter)($method->getReturnType()),
35+
);
36+
}
37+
}

tests/PhpCompatibility/test_schema.inc

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use Soap\Engine\Metadata\Model\Method;
44
use Soap\Engine\Metadata\Model\Type;
55
use Soap\Wsdl\Loader\CallbackLoader;
66
use Soap\WsdlReader\Formatter\LongTypeFormatter;
7-
use Soap\WsdlReader\Formatter\MethodFormatter;
7+
use Soap\WsdlReader\Formatter\ShortMethodFormatter;
88
use Soap\WsdlReader\Formatter\ShortTypeFormatter;
99
use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider;
1010
use Soap\WsdlReader\Wsdl1Reader;
@@ -63,7 +63,7 @@ function test_schema($schema, $type, $style="rpc",$use="encoded", $attributeForm
6363
$metadata = $metadataProvider->getMetadata();
6464

6565
echo "Methods:" . PHP_EOL;
66-
echo implode(PHP_EOL, $metadata->getMethods()->map(fn(Method $method) => ' > ' . (new MethodFormatter())($method)));
66+
echo implode(PHP_EOL, $metadata->getMethods()->map(fn(Method $method) => ' > ' . (new ShortMethodFormatter())($method)));
6767
echo PHP_EOL . PHP_EOL;
6868

6969
echo "Types:" . PHP_EOL;

0 commit comments

Comments
 (0)