Passed
Push — php-7.1 ( ed6d10...451fb2 )
by SignpostMarv
02:49
created

SchemaReaderFillAbstraction::fillTypeNode()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 22
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 9
c 2
b 0
f 0
nc 2
nop 3
dl 0
loc 22
ccs 6
cts 6
cp 1
crap 3
rs 9.2
1
<?php
2
namespace GoetasWebservices\XML\XSDReader;
3
4
use Closure;
5
use DOMDocument;
6
use DOMElement;
7
use DOMNode;
8
use DOMNodeList;
9
use GoetasWebservices\XML\XSDReader\Exception\IOException;
10
use GoetasWebservices\XML\XSDReader\Exception\TypeException;
11
use GoetasWebservices\XML\XSDReader\Schema\Attribute\Attribute;
12
use GoetasWebservices\XML\XSDReader\Schema\Attribute\AttributeDef;
13
use GoetasWebservices\XML\XSDReader\Schema\Attribute\AttributeItem;
14
use GoetasWebservices\XML\XSDReader\Schema\Attribute\Group as AttributeGroup;
15
use GoetasWebservices\XML\XSDReader\Schema\Element\Element;
16
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementContainer;
17
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementDef;
18
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementItem;
19
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementRef;
20
use GoetasWebservices\XML\XSDReader\Schema\Element\Group;
21
use GoetasWebservices\XML\XSDReader\Schema\Element\GroupRef;
22
use GoetasWebservices\XML\XSDReader\Schema\Element\InterfaceSetMinMax;
23
use GoetasWebservices\XML\XSDReader\Schema\Exception\TypeNotFoundException;
24
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Base;
25
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Extension;
26
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Restriction;
27
use GoetasWebservices\XML\XSDReader\Schema\Item;
28
use GoetasWebservices\XML\XSDReader\Schema\Schema;
29
use GoetasWebservices\XML\XSDReader\Schema\SchemaItem;
30
use GoetasWebservices\XML\XSDReader\Schema\Type\BaseComplexType;
31
use GoetasWebservices\XML\XSDReader\Schema\Type\ComplexType;
32
use GoetasWebservices\XML\XSDReader\Schema\Type\ComplexTypeSimpleContent;
33
use GoetasWebservices\XML\XSDReader\Schema\Type\SimpleType;
34
use GoetasWebservices\XML\XSDReader\Schema\Type\Type;
35
use GoetasWebservices\XML\XSDReader\Utils\UrlUtils;
36
use RuntimeException;
37
38
abstract class SchemaReaderFillAbstraction extends SchemaReaderFindAbstraction
39
{
40 45
    protected function fillTypeNode(
41
        Type $type,
42
        DOMElement $node,
43
        bool $checkAbstract = false
44
    ) : void {
45
46 45
        if ($checkAbstract) {
47 45
            $type->setAbstract($node->getAttribute("abstract") === "true" || $node->getAttribute("abstract") === "1");
48
        }
49 45
        static $methods = [
50
            'restriction' => 'loadRestriction',
51
            'extension' => 'maybeLoadExtensionFromBaseComplexType',
52
            'simpleContent' => 'fillTypeNode',
53
            'complexContent' => 'fillTypeNode',
54
        ];
55
56
        /**
57
        * @var string[] $methods
58
        */
59 45
        $methods = $methods;
60
61 45
        $this->maybeCallMethodAgainstDOMNodeList($node, $type, $methods);
62 45
    }
63
64 45
    protected function fillItemNonLocalType(
65
        Item $element,
66
        DOMElement $node
67
    ) : void {
68 45
        if ($node->getAttribute("type")) {
69
            /**
70
            * @var Type $type
71
            */
72 45
            $type = $this->findSomeType($element, $node, 'type');
73
        } else {
74
            /**
75
            * @var Type $type
76
            */
77 45
            $type = $this->findSomeTypeFromAttribute(
78 45
                $element,
79 45
                $node,
80 45
                ($node->lookupPrefix(self::XSD_NS) . ':anyType')
81
            );
82
        }
83
84 45
        $element->setType($type);
85 45
    }
86
}
87