protected function setupTypedData(array
$tree,
$name = ''
) { $callback =
function D
$value, ExecutionContextInterface
$context) { $context->
addViolation('violation: ' .
(is_array($value) ?
count($value) :
$value));
};
$tree +=
['constraints' =>
[]];
if (isset($tree['properties'
])) { $map_data_definition = MapDataDefinition::
create();
$map_data_definition->
addConstraint('Callback',
['callback' =>
$callback]);
foreach ($tree['properties'
] as $property_name =>
$property) { $sub_typed_data =
$this->
setupTypedData($property,
$property_name);
$map_data_definition->
setPropertyDefinition($property_name,
$sub_typed_data->
getDataDefinition());
} $typed_data =
$this->typedDataManager->
create( $map_data_definition,
$tree['value'
],
$name );
} else { /** @var \Drupal\Core\TypedData\TypedDataInterface $typed_data */
$typed_data =
$this->typedDataManager->
create(