src/Sulu/Component/Rest/ListBuilder/Metadata/ListXmlLoader.php
private function loadPropertyMetadata(\DOMXPath $xpath, \DOMNode $propertyNode)
    {
        $propertyMetadata = null;
        switch ($propertyNode->nodeName) {
            case 'concatenation-property':
                $propertyMetadata = $this->loadConcatenationPropertyMetadata($xpath, $propertyNode);
                break;
            case 'identity-property':
                $propertyMetadata = $this->loadIdentityPropertyMetadata($xpath, $propertyNode);
                break;
            case 'group-concat-property':
                $propertyMetadata = $this->loadGroupConcatPropertyMetadata($xpath, $propertyNode);
                break;
            case 'case-property':
                $propertyMetadata = $this->loadCasePropertyMetadata($xpath, $propertyNode);
                break;
            case 'count-property':
                $propertyMetadata = $this->loadCountPropertyMetadata($xpath, $propertyNode);
                break;
            case 'property':
                $propertyMetadata = $this->loadSinglePropertyMetadata($xpath, $propertyNode);
                break;
            default:
                throw new \InvalidArgumentException(sprintf(
                    'The tag "%s" cannot be handled by this loader',
                    $propertyNode->nodeName
                ));
        }

        if (null !== $translation = XmlUtil::getValueFromXPath('@translation', $xpath, $propertyNode)) {
            $propertyMetadata->setTranslation($translation);
        }

        if (null !== $type = XmlUtil::getValueFromXPath('@type', $xpath, $propertyNode)) {
            $propertyMetadata->setType($type);
        }

        $propertyMetadata->setVisibility(
            XmlUtil::getValueFromXPath(
                '@visibility',
                $xpath,
                $propertyNode,
                FieldDescriptorInterface::VISIBILITY_NO
            )
        );
        $propertyMetadata->setSearchability(
            XmlUtil::getValueFromXPath(
                '@searchability',
                $xpath,
                $propertyNode,
                FieldDescriptorInterface::SEARCHABILITY_NEVER
            )
        );
        $propertyMetadata->setSortable(
            XmlUtil::getBooleanValueFromXPath('@sortable', $xpath, $propertyNode, true)
        );
        $propertyMetadata->setFilterType(XmlUtil::getValueFromXPath('@filter-type', $xpath, $propertyNode));
        $propertyMetadata->setFilterTypeParameters($this->getFilterTypeParameters($xpath, $propertyNode));

        return $propertyMetadata;
    }
private function loadPropertyMetadata(\DOMXPath $xpath, \DOMNode $propertyNode)
    {
        $propertyMetadata = null;
        switch ($propertyNode->nodeName) {
            case 'concatenation-property':
                $propertyMetadata = $this->loadConcatenationPropertyMetadata($xpath, $propertyNode);
                break;
            case 'identity-property':
                $propertyMetadata = $this->loadIdentityPropertyMetadata($xpath, $propertyNode);
                break;
            case 'group-concat-property':
                $propertyMetadata = $this->loadGroupConcatPropertyMetadata($xpath, $propertyNode);
                break;
            case 'case-property':
                $propertyMetadata = $this->loadCasePropertyMetadata($xpath, $propertyNode);
                break;
            case 'count-property':
                $propertyMetadata = $this->loadCountPropertyMetadata($xpath, $propertyNode);
                break;
            case 'property':
                $propertyMetadata = $this->loadSinglePropertyMetadata($xpath, $propertyNode);
                break;
            default:
                throw new \InvalidArgumentException(sprintf(
                    'The tag "%s" cannot be handled by this loader',
                    $propertyNode->nodeName
                ));
        }

        if (null !== $translation = XmlUtil::getValueFromXPath('@translation', $xpath, $propertyNode)) {
            $propertyMetadata->setTranslation($translation);
        }

        if (null !== $type = XmlUtil::getValueFromXPath('@type', $xpath, $propertyNode)) {
            $propertyMetadata->setType($type);
        }

        $propertyMetadata->setVisibility(
            XmlUtil::getValueFromXPath(
                '@visibility',
                $xpath,
                $propertyNode,
                FieldDescriptorInterface::VISIBILITY_NO
            )
        );
        $propertyMetadata->setSearchability(
            XmlUtil::getValueFromXPath(
                '@searchability',
                $xpath,
                $propertyNode,
                FieldDescriptorInterface::SEARCHABILITY_NEVER
            )
        );
        $propertyMetadata->setSortable(
            XmlUtil::getBooleanValueFromXPath('@sortable', $xpath, $propertyNode, true)
        );
        $propertyMetadata->setFilterType(XmlUtil::getValueFromXPath('@filter-type', $xpath, $propertyNode));
        $propertyMetadata->setFilterTypeParameters($this->getFilterTypeParameters($xpath, $propertyNode));

        return $propertyMetadata;
    }
private function loadPropertyMetadata ( \ DOMXPath $ xpath , \ DOMNode $ propertyNode ) { $ propertyMetadata = null ; switch ( $ propertyNode -> nodeName ) { case 'concatenation-property' : $ propertyMetadata = $ this -> loadConcatenationPropertyMetadata ( $ xpath , $ propertyNode ) ; break ; case 'identity-property' : $ propertyMetadata = $ this -> loadIdentityPropertyMetadata ( $ xpath , $ propertyNode ) ; break ; case 'group-concat-property' : $ propertyMetadata = $ this -> loadGroupConcatPropertyMetadata ( $ xpath , $ propertyNode ) ; break ; case 'case-property' : $ propertyMetadata = $ this -> loadCasePropertyMetadata ( $ xpath , $ propertyNode ) ; break ; case 'count-property' : $ propertyMetadata = $ this -> loadCountPropertyMetadata ( $ xpath , $ propertyNode ) ; break ; case 'property' : $ propertyMetadata = $ this -> loadSinglePropertyMetadata ( $ xpath , $ propertyNode ) ; break ; default : throw new \ InvalidArgumentException ( sprintf ( 'The tag "%s" cannot be handled by this loader' , $ propertyNode -> nodeName ) ) ; } if ( null !== $ translation = XmlUtil :: getValueFromXPath ( '@translation' , $ xpath , $ propertyNode ) ) { $ propertyMetadata -> setTranslation ( $ translation ) ; } if ( null !== $ type = XmlUtil :: getValueFromXPath ( '@type' , $ xpath , $ propertyNode ) ) { $ propertyMetadata -> setType ( $ type ) ; } $ propertyMetadata -> setVisibility ( XmlUtil :: getValueFromXPath ( '@visibility' , $ xpath , $ propertyNode , FieldDescriptorInterface :: VISIBILITY_NO ) ) ; $ propertyMetadata -> setSearchability ( XmlUtil :: getValueFromXPath ( '@searchability' , $ xpath , $ propertyNode , FieldDescriptorInterface :: SEARCHABILITY_NEVER ) ) ; $ propertyMetadata -> setSortable ( XmlUtil :: getBooleanValueFromXPath ( '@sortable' , $ xpath , $ propertyNode , true ) ) ; $ propertyMetadata -> setFilterType ( XmlUtil :: getValueFromXPath ( '@filter-type' , $ xpath , $ propertyNode ) ) ; $ propertyMetadata -> setFilterTypeParameters ( $ this -> getFilterTypeParameters ( $ xpath , $ propertyNode ) ) ; return $ propertyMetadata ; }
Extracts attributes from dom-node to create a new property-metadata object.

@param \DOMXPath $xpath
@param \DOMNode $propertyNode

@return AbstractPropertyMetadata
Extracts attributes from dom - node to create a new property - metadata object .