Passed
Push — static-analysis ( c3aabf...c8fdad )
by SignpostMarv
03:22
created

fillItemNonLocalType()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 8
nc 2
nop 2
dl 0
loc 19
ccs 10
cts 10
cp 1
crap 2
rs 9.4285
c 1
b 0
f 0
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
    /**
41
    * @param bool $checkAbstract
42
    */
43 135
    protected function fillTypeNode(Type $type, DOMElement $node, $checkAbstract = false)
44
    {
45
46 135
        if ($checkAbstract) {
47 135
            $type->setAbstract($node->getAttribute("abstract") === "true" || $node->getAttribute("abstract") === "1");
48 45
        }
49
50 90
        static $methods = [
51
            'restriction' => 'loadRestriction',
52
            'extension' => 'maybeLoadExtensionFromBaseComplexType',
53
            'simpleContent' => 'fillTypeNode',
54
            'complexContent' => 'fillTypeNode',
55 45
        ];
56
57 135
        foreach ($node->childNodes as $childNode) {
58 135
            $this->maybeCallMethod(
59 135
                $methods,
60 135
                (string) $childNode->localName,
61 135
                $childNode,
62 135
                $type,
63 90
                $childNode
64 45
            );
65 45
        }
66 135
    }
67
68 135
    protected function fillItemNonLocalType(Item $element, DOMElement $node)
69
    {
70 135
        if ($node->getAttribute("type")) {
71
            /**
72
            * @var Type $type
73
            */
74 135
            $type = $this->findSomeType($element, $node, 'type');
75 45
        } else {
76
            /**
77
            * @var Type $type
78
            */
79 135
            $type = $this->findSomeTypeFromAttribute(
80 135
                $element,
81 135
                $node,
82 135
                ($node->lookupPrefix(self::XSD_NS) . ':anyType')
83 45
            );
84
        }
85
86 135
        $element->setType($type);
87 135
    }
88
}
89