public function convert(NodeType $nodeType, $propertyName, $rawValue, Context $context)
    {
        $propertyType = $nodeType->getPropertyType($propertyName);

        switch ($propertyType) {
            case 'string':
                return $rawValue;

            case 'reference':
                return $this->convertReference($rawValue, $context);

            case 'references':
                return $this->convertReferences($rawValue, $context);

            case 'DateTime':
                return $this->convertDateTime($rawValue);

            case 'integer':
                return $this->convertInteger($rawValue);

            case 'boolean':
                return $this->convertBoolean($rawValue);

            case 'array':
                return $this->convertArray($rawValue);

            default:
                $innerType = $propertyType;
                if ($propertyType !== null) {
                    try {
                        $parsedType = TypeHandling::parseType($propertyType);
                        $innerType = $parsedType['elementType'] ?: $parsedType['type'];
                    } catch (InvalidTypeException $exception) {
                    }
                }

                if ((is_string($rawValue) || is_array($rawValue)) && $this->objectManager->isRegistered($innerType) && $rawValue !== '') {
                    $propertyMappingConfiguration = new MvcPropertyMappingConfiguration();
                    $propertyMappingConfiguration->allowOverrideTargetType();
                    $propertyMappingConfiguration->allowAllProperties();
                    $propertyMappingConfiguration->skipUnknownProperties();
                    $propertyMappingConfiguration->setTypeConverterOption(PersistentObjectConverter::class, PersistentObjectConverter::CONFIGURATION_MODIFICATION_ALLOWED, true);
                    $propertyMappingConfiguration->setTypeConverterOption(PersistentObjectConverter::class, PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED, true);

                    return $this->propertyMapper->convert($rawValue, $propertyType, $propertyMappingConfiguration);
                } else {
                    return $rawValue;
                }
        }
    }
public function convert(NodeType $nodeType, $propertyName, $rawValue, Context $context)
    {
        $propertyType = $nodeType->getPropertyType($propertyName);

        switch ($propertyType) {
            case 'string':
                return $rawValue;

            case 'reference':
                return $this->convertReference($rawValue, $context);

            case 'references':
                return $this->convertReferences($rawValue, $context);

            case 'DateTime':
                return $this->convertDateTime($rawValue);

            case 'integer':
                return $this->convertInteger($rawValue);

            case 'boolean':
                return $this->convertBoolean($rawValue);

            case 'array':
                return $this->convertArray($rawValue);

            default:
                $innerType = $propertyType;
                if ($propertyType !== null) {
                    try {
                        $parsedType = TypeHandling::parseType($propertyType);
                        $innerType = $parsedType['elementType'] ?: $parsedType['type'];
                    } catch (InvalidTypeException $exception) {
                    }
                }

                if ((is_string($rawValue) || is_array($rawValue)) && $this->objectManager->isRegistered($innerType) && $rawValue !== '') {
                    $propertyMappingConfiguration = new MvcPropertyMappingConfiguration();
                    $propertyMappingConfiguration->allowOverrideTargetType();
                    $propertyMappingConfiguration->allowAllProperties();
                    $propertyMappingConfiguration->skipUnknownProperties();
                    $propertyMappingConfiguration->setTypeConverterOption(PersistentObjectConverter::class, PersistentObjectConverter::CONFIGURATION_MODIFICATION_ALLOWED, true);
                    $propertyMappingConfiguration->setTypeConverterOption(PersistentObjectConverter::class, PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED, true);

                    return $this->propertyMapper->convert($rawValue, $propertyType, $propertyMappingConfiguration);
                } else {
                    return $rawValue;
                }
        }
    }
public function convert ( NodeType $ nodeType , $ propertyName , $ rawValue , Context $ context ) { $ propertyType = $ nodeType -> getPropertyType ( $ propertyName ) ; switch ( $ propertyType ) { case 'string' : return $ rawValue ; case 'reference' : return $ this -> convertReference ( $ rawValue , $ context ) ; case 'references' : return $ this -> convertReferences ( $ rawValue , $ context ) ; case 'DateTime' : return $ this -> convertDateTime ( $ rawValue ) ; case 'integer' : return $ this -> convertInteger ( $ rawValue ) ; case 'boolean' : return $ this -> convertBoolean ( $ rawValue ) ; case 'array' : return $ this -> convertArray ( $ rawValue ) ; default : $ innerType = $ propertyType ; if ( $ propertyType !== null ) { try { $ parsedType = TypeHandling :: parseType ( $ propertyType ) ; $ innerType = $ parsedType [ 'elementType' ] ? : $ parsedType [ 'type' ] ; } catch ( InvalidTypeException $ exception ) { } } if ( ( is_string ( $ rawValue ) || is_array ( $ rawValue ) ) && $ this -> objectManager -> isRegistered ( $ innerType ) && $ rawValue !== '' ) { $ propertyMappingConfiguration = new MvcPropertyMappingConfiguration ( ) ; $ propertyMappingConfiguration -> allowOverrideTargetType ( ) ; $ propertyMappingConfiguration -> allowAllProperties ( ) ; $ propertyMappingConfiguration -> skipUnknownProperties ( ) ; $ propertyMappingConfiguration -> setTypeConverterOption ( PersistentObjectConverter :: class , PersistentObjectConverter :: CONFIGURATION_MODIFICATION_ALLOWED , true ) ; $ propertyMappingConfiguration -> setTypeConverterOption ( PersistentObjectConverter :: class , PersistentObjectConverter :: CONFIGURATION_CREATION_ALLOWED , true ) ; return $ this -> propertyMapper -> convert ( $ rawValue , $ propertyType , $ propertyMappingConfiguration ) ; } else { return $ rawValue ; } } }
Convert raw property values to the correct type according to a node type configuration

@param NodeType $nodeType
@param string $propertyName
@param string $rawValue
@param Context $context
@return mixed
Convert raw property values to the correct type according to a node type configuration