SupportedEnvelope::getQName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\SOAP12\XML;
6
7
use DOMElement;
8
use SimpleSAML\SOAP12\Assert\Assert;
9
use SimpleSAML\XML\Attribute as XMLAttribute;
10
use SimpleSAML\XMLSchema\Exception\{InvalidDOMElementException, MissingAttributeException};
11
use SimpleSAML\XMLSchema\Type\QNameValue;
12
13
use function strval;
14
15
/**
16
 * Class representing a env:SupportedEnvelope element.
17
 *
18
 * @package simplesaml/xml-soap
19
 */
20
final class SupportedEnvelope extends AbstractSoapElement
21
{
22
    /**
23
     * Initialize a soap:SupportedEnvelope
24
     *
25
     * @param \SimpleSAML\XMLSchema\Type\QNameValue $qname
26
     */
27
    public function __construct(
28
        protected QNameValue $qname,
29
    ) {
30
    }
31
32
33
    /**
34
     * @return \SimpleSAML\XMLSchema\Type\QNameValue
35
     */
36
    public function getQName(): QNameValue
37
    {
38
        return $this->qname;
39
    }
40
41
42
    /*
43
     * Convert XML into a SupportedEnvelope element
44
     *
45
     * @param \DOMElement $xml The XML element we should load
46
     * @return static
47
     *
48
     * @throws \SimpleSAML\XMLSchema\Exception\InvalidDOMElementException
49
     *   If the qualified name of the supplied element is wrong
50
     */
51
    public static function fromXML(DOMElement $xml): static
52
    {
53
        Assert::same($xml->localName, 'SupportedEnvelope', InvalidDOMElementException::class);
54
        Assert::same($xml->namespaceURI, static::NS, InvalidDOMElementException::class);
55
        Assert::notNull($xml->hasAttribute('qname'), MissingAttributeException::class);
56
57
        return new static(
58
            QNameValue::fromDocument($xml->getAttribute('qname'), $xml),
59
        );
60
    }
61
62
63
    /**
64
     * Convert this SupportedEnvelope to XML.
65
     *
66
     * @param \DOMElement|null $parent The element we should add this Body to.
67
     * @return \DOMElement This SupportedEnvelope-element.
68
     */
69
    public function toXML(?DOMElement $parent = null): DOMElement
70
    {
71
        $e = $this->instantiateParentElement($parent);
72
73
        if (!$e->lookupPrefix($this->getQName()->getNamespaceURI()->getValue())) {
74
            $namespace = new XMLAttribute(
75
                'http://www.w3.org/2000/xmlns/',
76
                'xmlns',
77
                $this->getQName()->getNamespacePrefix()->getValue(),
78
                $this->getQName()->getNamespaceURI(),
0 ignored issues
show
Bug introduced by
It seems like $this->getQName()->getNamespaceURI() can also be of type null; however, parameter $attrValue of SimpleSAML\XML\Attribute::__construct() does only seem to accept SimpleSAML\XMLSchema\Typ...face\ValueTypeInterface, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

78
                /** @scrutinizer ignore-type */ $this->getQName()->getNamespaceURI(),
Loading history...
79
            );
80
            $namespace->toXML($e);
81
        }
82
83
        $e->setAttribute('qname', strval($this->getQName()->getValue()));
84
85
        return $e;
86
    }
87
}
88