Passed
Pull Request — master (#18)
by SignpostMarv
03:22
created

SchemaReaderFillAbstraction::fillTypeNode()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 9
c 0
b 0
f 0
nc 2
nop 3
dl 0
loc 18
ccs 8
cts 8
cp 1
crap 3
rs 9.4285
1
<?php
2
3
namespace GoetasWebservices\XML\XSDReader;
4
5
use DOMElement;
6
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Extension;
7
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Restriction;
8
use GoetasWebservices\XML\XSDReader\Schema\Item;
9
use GoetasWebservices\XML\XSDReader\Schema\Type\Type;
10
11
abstract class SchemaReaderFillAbstraction extends SchemaReaderFindAbstraction
12
{
13
    /**
14
     * @param bool $checkAbstract
15
     */
16 135
    protected function fillTypeNode(Type $type, DOMElement $node, $checkAbstract = false)
17
    {
18 135
        if ($checkAbstract) {
19 135
            $type->setAbstract($node->getAttribute('abstract') === 'true' || $node->getAttribute('abstract') === '1');
20 45
        }
21 90
        static $methods = [
22
            'restriction' => 'loadRestriction',
23
            'extension' => 'maybeLoadExtensionFromBaseComplexType',
24
            'simpleContent' => 'fillTypeNode',
25
            'complexContent' => 'fillTypeNode',
26 45
        ];
27
28
        /**
29
         * @var string[]
30
         */
31 135
        $methods = $methods;
32
33 135
        $this->maybeCallMethodAgainstDOMNodeList($node, $type, $methods);
34 135
    }
35
36 135
    protected function fillItemNonLocalType(Item $element, DOMElement $node)
37
    {
38 135
        if ($node->getAttribute('type')) {
39
            /**
40
             * @var Type
41
             */
42 135
            $type = $this->findSomeType($element, $node, 'type');
43 45
        } else {
44
            /**
45
             * @var Type
46
             */
47 135
            $type = $this->findSomeTypeFromAttribute(
48 135
                $element,
49 135
                $node,
50 135
                ($node->lookupPrefix(self::XSD_NS).':anyType')
51 45
            );
52
        }
53
54 135
        $element->setType($type);
55 135
    }
56
}
57