public function addPolicy(APIRole $role, APIPolicyCreateStruct $policyCreateStruct)
{
$values = $this->requestParser->parse('role', $role->id);
$inputMessage = $this->outputVisitor->visit($policyCreateStruct);
$inputMessage->headers['Accept'] = $this->outputVisitor->getMediaType('Policy');
$result = $this->client->request('POST', $this->requestParser->generate('policies', array('role' => $values['role'])), $inputMessage);
$createdPolicy = $this->inputDispatcher->parse($result);
// @todo Workaround for missing roleId in Policy XSD definition
$createdPolicyArray = array('id' => $createdPolicy->id, 'roleId' => $role->id, 'module' => $createdPolicy->module, 'function' => $createdPolicy->function);
$createdPolicy = new Policy($createdPolicyArray);
$existingPolicies = $role->getPolicies();
$existingPolicies[] = $createdPolicy;
return new Role(array('id' => $role->id, 'identifier' => $role->identifier), $existingPolicies);
}